@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
@@ -13,9 +13,8 @@ import * as i2 from "../services/testing-instrumentation.service";
13
13
  import * as i3 from "@angular/common";
14
14
  import * as i4 from "@angular/forms";
15
15
  import * as i5 from "@memberjunction/ng-ui-components";
16
- import * as i6 from "@memberjunction/ng-versions";
17
- import * as i7 from "@memberjunction/ng-shared-generic";
18
- import * as i8 from "../../shared/pipes/highlight-search.pipe";
16
+ import * as i6 from "@memberjunction/ng-shared-generic";
17
+ import * as i7 from "../../shared/pipes/highlight-search.pipe";
19
18
  const _forTrack0 = ($index, $item) => $item.ID;
20
19
  const _forTrack1 = ($index, $item) => $item.TestID;
21
20
  function TestingExplorerComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
@@ -28,17 +27,7 @@ function TestingExplorerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
28
27
  const content_r1 = i0.ɵɵreference(3);
29
28
  i0.ɵɵproperty("ngTemplateOutlet", content_r1);
30
29
  } }
31
- function TestingExplorerComponent_Conditional_1_For_17_Template(rf, ctx) { if (rf & 1) {
32
- const _r4 = i0.ɵɵgetCurrentView();
33
- i0.ɵɵelementStart(0, "mj-filter-chip", 17);
34
- i0.ɵɵlistener("Clicked", function TestingExplorerComponent_Conditional_1_For_17_Template_mj_filter_chip_Clicked_0_listener() { const status_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ToggleStatus(status_r5)); });
35
- i0.ɵɵelementEnd();
36
- } if (rf & 2) {
37
- const status_r5 = ctx.$implicit;
38
- const ctx_r2 = i0.ɵɵnextContext(2);
39
- i0.ɵɵproperty("Label", status_r5)("Active", ctx_r2.IsStatusActive(status_r5));
40
- } }
41
- function TestingExplorerComponent_Conditional_1_ng_container_20_Template(rf, ctx) { if (rf & 1) {
30
+ function TestingExplorerComponent_Conditional_1_ng_container_18_Template(rf, ctx) { if (rf & 1) {
42
31
  i0.ɵɵelementContainer(0);
43
32
  } }
44
33
  function TestingExplorerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
@@ -46,232 +35,223 @@ function TestingExplorerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1)
46
35
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2)(2, "div", 3);
47
36
  i0.ɵɵelement(3, "mj-stat-badge", 4);
48
37
  i0.ɵɵelementEnd();
49
- i0.ɵɵelementStart(4, "div", 5)(5, "mj-filter-popover", 6);
50
- i0.ɵɵlistener("ClearAllRequested", function TestingExplorerComponent_Conditional_1_Template_mj_filter_popover_ClearAllRequested_5_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.resetSortFilters()); });
51
- i0.ɵɵelementStart(6, "mj-filter-panel", 7);
52
- i0.ɵɵlistener("ValuesChange", function TestingExplorerComponent_Conditional_1_Template_mj_filter_panel_ValuesChange_6_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSortFilterChange($event)); })("Reset", function TestingExplorerComponent_Conditional_1_Template_mj_filter_panel_Reset_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.resetSortFilters()); });
38
+ i0.ɵɵelementStart(4, "div", 5)(5, "button", 6);
39
+ i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewSuite()); });
40
+ i0.ɵɵelement(6, "i", 7);
41
+ i0.ɵɵelementStart(7, "span", 8);
42
+ i0.ɵɵtext(8, "New Suite");
53
43
  i0.ɵɵelementEnd()();
54
- i0.ɵɵelementStart(7, "mj-view-toggle", 8);
55
- i0.ɵɵlistener("KeyChange", function TestingExplorerComponent_Conditional_1_Template_mj_view_toggle_KeyChange_7_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetViewMode($event)); });
56
- i0.ɵɵelementEnd();
57
- i0.ɵɵelementStart(8, "button", 9);
58
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewSuite()); });
59
- i0.ɵɵelement(9, "i", 10);
60
- i0.ɵɵtext(10, " New Suite ");
44
+ i0.ɵɵelementStart(9, "button", 9);
45
+ i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewTest()); });
46
+ i0.ɵɵelement(10, "i", 10);
47
+ i0.ɵɵelementStart(11, "span", 8);
48
+ i0.ɵɵtext(12, "New Test");
49
+ i0.ɵɵelementEnd()()();
50
+ i0.ɵɵelementStart(13, "div", 11)(14, "mj-page-search", 12);
51
+ i0.ɵɵlistener("ValueChange", function TestingExplorerComponent_Conditional_1_Template_mj_page_search_ValueChange_14_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSearchInputValue($event)); });
61
52
  i0.ɵɵelementEnd();
62
- i0.ɵɵelementStart(11, "button", 11);
63
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewTest()); });
64
- i0.ɵɵelement(12, "i", 12);
65
- i0.ɵɵtext(13, " New Test ");
53
+ i0.ɵɵelementStart(15, "mj-filter-popover", 13);
54
+ i0.ɵɵlistener("ClearAllRequested", function TestingExplorerComponent_Conditional_1_Template_mj_filter_popover_ClearAllRequested_15_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.resetAllFilters()); });
55
+ i0.ɵɵelementStart(16, "mj-filter-panel", 14);
56
+ i0.ɵɵlistener("ValuesChange", function TestingExplorerComponent_Conditional_1_Template_mj_filter_panel_ValuesChange_16_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onFilterValuesChange($event)); })("Reset", function TestingExplorerComponent_Conditional_1_Template_mj_filter_panel_Reset_16_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.resetAllFilters()); });
66
57
  i0.ɵɵelementEnd()();
67
- i0.ɵɵelementStart(14, "div", 13)(15, "mj-page-search", 14);
68
- i0.ɵɵlistener("ValueChange", function TestingExplorerComponent_Conditional_1_Template_mj_page_search_ValueChange_15_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSearchInputValue($event)); });
69
- i0.ɵɵelementEnd();
70
- i0.ɵɵrepeaterCreate(16, TestingExplorerComponent_Conditional_1_For_17_Template, 1, 2, "mj-filter-chip", 15, i0.ɵɵrepeaterTrackByIdentity);
71
- i0.ɵɵelementStart(18, "mj-view-toggle", 8);
72
- i0.ɵɵlistener("KeyChange", function TestingExplorerComponent_Conditional_1_Template_mj_view_toggle_KeyChange_18_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDisplayMode($event)); });
58
+ i0.ɵɵelementStart(17, "mj-view-toggle", 15);
59
+ i0.ɵɵlistener("KeyChange", function TestingExplorerComponent_Conditional_1_Template_mj_view_toggle_KeyChange_17_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetViewMode($event)); });
73
60
  i0.ɵɵelementEnd()()();
74
- i0.ɵɵelementStart(19, "mj-page-body", 16);
75
- i0.ɵɵtemplate(20, TestingExplorerComponent_Conditional_1_ng_container_20_Template, 1, 0, "ng-container", 1);
76
- i0.ɵɵelementEnd()();
61
+ i0.ɵɵtemplate(18, TestingExplorerComponent_Conditional_1_ng_container_18_Template, 1, 0, "ng-container", 1);
62
+ i0.ɵɵelementEnd();
77
63
  } if (rf & 2) {
78
64
  const ctx_r2 = i0.ɵɵnextContext();
79
65
  const content_r1 = i0.ɵɵreference(3);
80
66
  i0.ɵɵadvance(3);
81
67
  i0.ɵɵproperty("Count", ctx_r2.FilteredResultCount)("Total", ctx_r2.TotalItemCount);
82
- i0.ɵɵadvance(2);
83
- i0.ɵɵproperty("ActiveCount", ctx_r2.ActiveSortFilterCount)("ShowClearAll", ctx_r2.ActiveSortFilterCount > 0);
84
- i0.ɵɵadvance();
85
- i0.ɵɵproperty("Fields", ctx_r2.sortFilterFields)("Values", ctx_r2.sortFilterValues);
86
- i0.ɵɵadvance();
87
- i0.ɵɵproperty("Options", ctx_r2.HeaderViewOptions)("ActiveKey", ctx_r2.ViewMode);
88
- i0.ɵɵadvance(8);
68
+ i0.ɵɵadvance(11);
89
69
  i0.ɵɵproperty("Value", ctx_r2.SearchTerm);
90
70
  i0.ɵɵadvance();
91
- i0.ɵɵrepeater(ctx_r2.StatusOptions);
92
- i0.ɵɵadvance(2);
93
- i0.ɵɵproperty("Options", ctx_r2.DisplayModeOptions)("ActiveKey", ctx_r2.DisplayMode);
71
+ i0.ɵɵproperty("ActiveCount", ctx_r2.TotalActiveFilterCount)("ShowClearAll", ctx_r2.TotalActiveFilterCount > 0);
94
72
  i0.ɵɵadvance();
95
- i0.ɵɵproperty("Flex", true)("Padding", false);
73
+ i0.ɵɵproperty("Fields", ctx_r2.filterFields)("Values", ctx_r2.filterValues);
74
+ i0.ɵɵadvance();
75
+ i0.ɵɵproperty("Options", ctx_r2.HeaderViewOptions)("ActiveKey", ctx_r2.ViewMode);
96
76
  i0.ɵɵadvance();
97
77
  i0.ɵɵproperty("ngTemplateOutlet", content_r1);
98
78
  } }
99
- function TestingExplorerComponent_ng_template_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "div", 18);
101
- i0.ɵɵelement(1, "mj-loading", 25);
79
+ function TestingExplorerComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵelementStart(0, "div", 17);
81
+ i0.ɵɵelement(1, "mj-loading", 23);
102
82
  i0.ɵɵelementEnd();
103
83
  } }
104
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
105
- i0.ɵɵelement(0, "span", 53);
84
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
85
+ i0.ɵɵelement(0, "span", 50);
106
86
  i0.ɵɵtext(1);
107
87
  } if (rf & 2) {
108
- const suite_r9 = i0.ɵɵnextContext().$implicit;
88
+ const suite_r7 = i0.ɵɵnextContext().$implicit;
109
89
  const ctx_r2 = i0.ɵɵnextContext(5);
110
90
  i0.ɵɵadvance();
111
- i0.ɵɵtextInterpolate1(" Last run ", ctx_r2.FormatRelativeTime(suite_r9.LastRunDate), " ");
91
+ i0.ɵɵtextInterpolate1(" Last run ", ctx_r2.FormatRelativeTime(suite_r7.LastRunDate), " ");
112
92
  } }
113
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
114
- i0.ɵɵelement(0, "p", 41);
93
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵelement(0, "p", 38);
115
95
  i0.ɵɵpipe(1, "highlightSearch");
116
96
  } if (rf & 2) {
117
- const suite_r9 = i0.ɵɵnextContext().$implicit;
97
+ const suite_r7 = i0.ɵɵnextContext().$implicit;
118
98
  const ctx_r2 = i0.ɵɵnextContext(5);
119
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, suite_r9.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
99
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, suite_r7.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
120
100
  } }
121
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
122
- i0.ɵɵelementStart(0, "div", 55);
123
- i0.ɵɵelement(1, "span", 56);
124
- i0.ɵɵelementStart(2, "span", 57);
101
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelementStart(0, "div", 52);
103
+ i0.ɵɵelement(1, "span", 53);
104
+ i0.ɵɵelementStart(2, "span", 54);
125
105
  i0.ɵɵtext(3);
126
106
  i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(4, "span", 58);
107
+ i0.ɵɵelementStart(4, "span", 55);
128
108
  i0.ɵɵtext(5);
129
109
  i0.ɵɵelementEnd();
130
- i0.ɵɵelementStart(6, "span", 59);
131
- i0.ɵɵelement(7, "span", 60);
110
+ i0.ɵɵelementStart(6, "span", 56);
111
+ i0.ɵɵelement(7, "span", 57);
132
112
  i0.ɵɵelementEnd();
133
- i0.ɵɵelementStart(8, "span", 61);
113
+ i0.ɵɵelementStart(8, "span", 58);
134
114
  i0.ɵɵtext(9);
135
115
  i0.ɵɵelementEnd()();
136
116
  } if (rf & 2) {
137
- const t_r10 = i0.ɵɵnextContext().$implicit;
117
+ const t_r8 = i0.ɵɵnextContext().$implicit;
138
118
  const ctx_r2 = i0.ɵɵnextContext(7);
139
119
  i0.ɵɵadvance();
140
- i0.ɵɵattribute("data-status", t_r10.LastStatus.toLowerCase());
120
+ i0.ɵɵattribute("data-status", t_r8.LastStatus.toLowerCase());
141
121
  i0.ɵɵadvance(2);
142
- i0.ɵɵtextInterpolate(t_r10.TestName);
122
+ i0.ɵɵtextInterpolate(t_r8.TestName);
143
123
  i0.ɵɵadvance();
144
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r10.LastScore));
124
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r8.LastScore));
145
125
  i0.ɵɵadvance();
146
- i0.ɵɵtextInterpolate1("", (t_r10.LastScore * 100).toFixed(0), "%");
126
+ i0.ɵɵtextInterpolate1("", (t_r8.LastScore * 100).toFixed(0), "%");
147
127
  i0.ɵɵadvance(2);
148
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r10.LastScore) + "-bg");
149
- i0.ɵɵstyleProp("width", t_r10.LastScore * 100, "%");
128
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r8.LastScore) + "-bg");
129
+ i0.ɵɵstyleProp("width", t_r8.LastScore * 100, "%");
150
130
  i0.ɵɵadvance();
151
- i0.ɵɵattribute("data-status", t_r10.LastStatus.toLowerCase());
131
+ i0.ɵɵattribute("data-status", t_r8.LastStatus.toLowerCase());
152
132
  i0.ɵɵadvance();
153
- i0.ɵɵtextInterpolate(t_r10.LastStatus);
133
+ i0.ɵɵtextInterpolate(t_r8.LastStatus);
154
134
  } }
155
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template, 10, 11, "div", 55);
135
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
136
+ i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template, 10, 11, "div", 52);
157
137
  } if (rf & 2) {
158
- const ɵ$index_141_r11 = ctx.$index;
159
- i0.ɵɵconditional(ɵ$index_141_r11 < 4 ? 0 : -1);
138
+ const ɵ$index_138_r9 = ctx.$index;
139
+ i0.ɵɵconditional(ɵ$index_138_r9 < 4 ? 0 : -1);
160
140
  } }
161
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
162
- i0.ɵɵelementStart(0, "div", 54);
141
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
142
+ i0.ɵɵelementStart(0, "div", 51);
163
143
  i0.ɵɵtext(1);
164
144
  i0.ɵɵelementEnd();
165
145
  } if (rf & 2) {
166
- const suite_r9 = i0.ɵɵnextContext(2).$implicit;
146
+ const suite_r7 = i0.ɵɵnextContext(2).$implicit;
167
147
  i0.ɵɵadvance();
168
- i0.ɵɵtextInterpolate1("+", suite_r9.TotalTestsInSuite - 4, " more tests");
148
+ i0.ɵɵtextInterpolate1("+", suite_r7.TotalTestsInSuite - 4, " more tests");
169
149
  } }
170
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementStart(0, "div", 46);
172
- i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_For_2_Template, 1, 1, null, null, _forTrack1);
173
- i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_Conditional_3_Template, 2, 1, "div", 54);
150
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_Template(rf, ctx) { if (rf & 1) {
151
+ i0.ɵɵelementStart(0, "div", 43);
152
+ i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_For_2_Template, 1, 1, null, null, _forTrack1);
153
+ i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_Conditional_3_Template, 2, 1, "div", 51);
174
154
  i0.ɵɵelementEnd();
175
155
  } if (rf & 2) {
176
- const suite_r9 = i0.ɵɵnextContext().$implicit;
156
+ const suite_r7 = i0.ɵɵnextContext().$implicit;
177
157
  i0.ɵɵadvance();
178
- i0.ɵɵrepeater(suite_r9.Tests);
158
+ i0.ɵɵrepeater(suite_r7.Tests);
179
159
  i0.ɵɵadvance(2);
180
- i0.ɵɵconditional(suite_r9.TotalTestsInSuite > 4 ? 3 : -1);
160
+ i0.ɵɵconditional(suite_r7.TotalTestsInSuite > 4 ? 3 : -1);
181
161
  } }
182
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
183
- const _r8 = i0.ɵɵgetCurrentView();
184
- i0.ɵɵelementStart(0, "div", 34)(1, "div", 35)(2, "div", 36);
185
- i0.ɵɵelement(3, "i", 37)(4, "span", 38);
162
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
163
+ const _r6 = i0.ɵɵgetCurrentView();
164
+ i0.ɵɵelementStart(0, "div", 31)(1, "div", 32)(2, "div", 33);
165
+ i0.ɵɵelement(3, "i", 34)(4, "span", 35);
186
166
  i0.ɵɵpipe(5, "highlightSearch");
187
- i0.ɵɵelementStart(6, "span", 39);
167
+ i0.ɵɵelementStart(6, "span", 36);
188
168
  i0.ɵɵtext(7);
189
169
  i0.ɵɵelementEnd()();
190
- i0.ɵɵelementStart(8, "div", 40);
170
+ i0.ɵɵelementStart(8, "div", 37);
191
171
  i0.ɵɵtext(9);
192
- i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_10_Template, 2, 1);
172
+ i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_10_Template, 2, 1);
193
173
  i0.ɵɵelementEnd();
194
- i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 41);
174
+ i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 38);
195
175
  i0.ɵɵelementEnd();
196
- i0.ɵɵelementStart(12, "div", 42)(13, "div", 43)(14, "span", 44);
176
+ i0.ɵɵelementStart(12, "div", 39)(13, "div", 40)(14, "span", 41);
197
177
  i0.ɵɵtext(15, "Pass Rate");
198
178
  i0.ɵɵelementEnd();
199
- i0.ɵɵelementStart(16, "span", 45);
179
+ i0.ɵɵelementStart(16, "span", 42);
200
180
  i0.ɵɵtext(17);
201
181
  i0.ɵɵelementEnd()();
202
- i0.ɵɵelementStart(18, "div", 43)(19, "span", 44);
182
+ i0.ɵɵelementStart(18, "div", 40)(19, "span", 41);
203
183
  i0.ɵɵtext(20, "Tests");
204
184
  i0.ɵɵelementEnd();
205
- i0.ɵɵelementStart(21, "span", 45);
185
+ i0.ɵɵelementStart(21, "span", 42);
206
186
  i0.ɵɵtext(22);
207
187
  i0.ɵɵelementEnd()();
208
- i0.ɵɵelementStart(23, "div", 43)(24, "span", 44);
188
+ i0.ɵɵelementStart(23, "div", 40)(24, "span", 41);
209
189
  i0.ɵɵtext(25, "Avg Score");
210
190
  i0.ɵɵelementEnd();
211
- i0.ɵɵelementStart(26, "span", 45);
191
+ i0.ɵɵelementStart(26, "span", 42);
212
192
  i0.ɵɵtext(27);
213
193
  i0.ɵɵelementEnd()();
214
- i0.ɵɵelementStart(28, "div", 43)(29, "span", 44);
194
+ i0.ɵɵelementStart(28, "div", 40)(29, "span", 41);
215
195
  i0.ɵɵtext(30, "Avg Duration");
216
196
  i0.ɵɵelementEnd();
217
- i0.ɵɵelementStart(31, "span", 45);
197
+ i0.ɵɵelementStart(31, "span", 42);
218
198
  i0.ɵɵtext(32);
219
199
  i0.ɵɵelementEnd()()();
220
- i0.ɵɵconditionalCreate(33, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_33_Template, 4, 1, "div", 46);
221
- i0.ɵɵelementStart(34, "div", 47)(35, "button", 48);
222
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Template_button_click_35_listener() { const suite_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.RunSuite(suite_r9.ID)); });
223
- i0.ɵɵelement(36, "i", 49);
200
+ i0.ɵɵconditionalCreate(33, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Conditional_33_Template, 4, 1, "div", 43);
201
+ i0.ɵɵelementStart(34, "div", 44)(35, "button", 45);
202
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Template_button_click_35_listener() { const suite_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.RunSuite(suite_r7.ID)); });
203
+ i0.ɵɵelement(36, "i", 46);
224
204
  i0.ɵɵtext(37, " Run Suite ");
225
205
  i0.ɵɵelementEnd();
226
- i0.ɵɵelementStart(38, "button", 50);
227
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Template_button_click_38_listener() { const suite_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.ViewSuiteResults(suite_r9.ID)); });
228
- i0.ɵɵelement(39, "i", 51);
206
+ i0.ɵɵelementStart(38, "button", 47);
207
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Template_button_click_38_listener() { const suite_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.ViewSuiteResults(suite_r7.ID)); });
208
+ i0.ɵɵelement(39, "i", 48);
229
209
  i0.ɵɵtext(40, " Results ");
230
210
  i0.ɵɵelementEnd();
231
- i0.ɵɵelementStart(41, "button", 50);
232
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Template_button_click_41_listener() { const suite_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Test Suites", suite_r9.ID)); });
233
- i0.ɵɵelement(42, "i", 52);
211
+ i0.ɵɵelementStart(41, "button", 47);
212
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Template_button_click_41_listener() { const suite_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Test Suites", suite_r7.ID)); });
213
+ i0.ɵɵelement(42, "i", 49);
234
214
  i0.ɵɵtext(43, " Edit ");
235
215
  i0.ɵɵelementEnd()()();
236
216
  } if (rf & 2) {
237
- const suite_r9 = ctx.$implicit;
217
+ const suite_r7 = ctx.$implicit;
238
218
  const ctx_r2 = i0.ɵɵnextContext(5);
239
219
  i0.ɵɵadvance(4);
240
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 15, suite_r9.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
220
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 15, suite_r7.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
241
221
  i0.ɵɵadvance(2);
242
- i0.ɵɵattribute("data-status", suite_r9.Status.toLowerCase());
222
+ i0.ɵɵattribute("data-status", suite_r7.Status.toLowerCase());
243
223
  i0.ɵɵadvance();
244
- i0.ɵɵtextInterpolate(suite_r9.Status);
224
+ i0.ɵɵtextInterpolate(suite_r7.Status);
245
225
  i0.ɵɵadvance(2);
246
- i0.ɵɵtextInterpolate1(" ", suite_r9.TestCount, " tests ");
226
+ i0.ɵɵtextInterpolate1(" ", suite_r7.TestCount, " tests ");
247
227
  i0.ɵɵadvance();
248
- i0.ɵɵconditional(suite_r9.LastRunDate ? 10 : -1);
228
+ i0.ɵɵconditional(suite_r7.LastRunDate ? 10 : -1);
249
229
  i0.ɵɵadvance();
250
- i0.ɵɵconditional(suite_r9.Description ? 11 : -1);
230
+ i0.ɵɵconditional(suite_r7.Description ? 11 : -1);
251
231
  i0.ɵɵadvance(5);
252
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r9.PassRate / 100));
232
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r7.PassRate / 100));
253
233
  i0.ɵɵadvance();
254
- i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(suite_r9.PassRate));
234
+ i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(suite_r7.PassRate));
255
235
  i0.ɵɵadvance(5);
256
- i0.ɵɵtextInterpolate(suite_r9.TestCount);
236
+ i0.ɵɵtextInterpolate(suite_r7.TestCount);
257
237
  i0.ɵɵadvance(4);
258
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r9.AvgScore));
238
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r7.AvgScore));
259
239
  i0.ɵɵadvance();
260
- i0.ɵɵtextInterpolate1("", (suite_r9.AvgScore * 100).toFixed(0), "%");
240
+ i0.ɵɵtextInterpolate1("", (suite_r7.AvgScore * 100).toFixed(0), "%");
261
241
  i0.ɵɵadvance(5);
262
- i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(suite_r9.AvgDuration));
242
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(suite_r7.AvgDuration));
263
243
  i0.ɵɵadvance();
264
- i0.ɵɵconditional(suite_r9.Tests.length > 0 ? 33 : -1);
244
+ i0.ɵɵconditional(suite_r7.Tests.length > 0 ? 33 : -1);
265
245
  } }
266
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
267
- i0.ɵɵelementStart(0, "div", 29)(1, "h3", 30);
268
- i0.ɵɵelement(2, "i", 31);
246
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
247
+ i0.ɵɵelementStart(0, "div", 26)(1, "h3", 27);
248
+ i0.ɵɵelement(2, "i", 28);
269
249
  i0.ɵɵtext(3, " Test Suites ");
270
- i0.ɵɵelementStart(4, "span", 32);
250
+ i0.ɵɵelementStart(4, "span", 29);
271
251
  i0.ɵɵtext(5);
272
252
  i0.ɵɵelementEnd()();
273
- i0.ɵɵelementStart(6, "div", 33);
274
- i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Template, 44, 18, "div", 34, _forTrack0);
253
+ i0.ɵɵelementStart(6, "div", 30);
254
+ i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_For_8_Template, 44, 18, "div", 31, _forTrack0);
275
255
  i0.ɵɵelementEnd()();
276
256
  } if (rf & 2) {
277
257
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -280,207 +260,207 @@ function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Cond
280
260
  i0.ɵɵadvance(2);
281
261
  i0.ɵɵrepeater(ctx_r2.FilteredSuites);
282
262
  } }
283
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
284
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_Template, 9, 1, "div", 29);
263
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
264
+ i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Conditional_0_Template, 9, 1, "div", 26);
285
265
  } if (rf & 2) {
286
266
  const ctx_r2 = i0.ɵɵnextContext(3);
287
267
  i0.ɵɵconditional(ctx_r2.FilteredSuites.length > 0 ? 0 : -1);
288
268
  } }
289
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
290
- i0.ɵɵelement(0, "span", 53);
269
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
270
+ i0.ɵɵelement(0, "span", 50);
291
271
  i0.ɵɵtext(1);
292
272
  } if (rf & 2) {
293
- const test_r13 = i0.ɵɵnextContext().$implicit;
273
+ const test_r11 = i0.ɵɵnextContext().$implicit;
294
274
  i0.ɵɵadvance();
295
- i0.ɵɵtextInterpolate1(" ", test_r13.SuiteName, " ");
275
+ i0.ɵɵtextInterpolate1(" ", test_r11.SuiteName, " ");
296
276
  } }
297
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
298
- i0.ɵɵelement(0, "p", 41);
277
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
278
+ i0.ɵɵelement(0, "p", 38);
299
279
  i0.ɵɵpipe(1, "highlightSearch");
300
280
  } if (rf & 2) {
301
- const test_r13 = i0.ɵɵnextContext().$implicit;
281
+ const test_r11 = i0.ɵɵnextContext().$implicit;
302
282
  const ctx_r2 = i0.ɵɵnextContext(5);
303
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, test_r13.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
283
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, test_r11.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
304
284
  } }
305
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_13_Template(rf, ctx) { if (rf & 1) {
306
- i0.ɵɵelementStart(0, "span", 66);
307
- i0.ɵɵelement(1, "i", 71);
285
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_13_Template(rf, ctx) { if (rf & 1) {
286
+ i0.ɵɵelementStart(0, "span", 63);
287
+ i0.ɵɵelement(1, "i", 68);
308
288
  i0.ɵɵtext(2);
309
289
  i0.ɵɵelementEnd();
310
290
  } if (rf & 2) {
311
- const test_r13 = i0.ɵɵnextContext().$implicit;
291
+ const test_r11 = i0.ɵɵnextContext().$implicit;
312
292
  i0.ɵɵadvance(2);
313
- i0.ɵɵtextInterpolate1(" ", test_r13.TypeName);
293
+ i0.ɵɵtextInterpolate1(" ", test_r11.TypeName);
314
294
  } }
315
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_14_Template(rf, ctx) { if (rf & 1) {
316
- i0.ɵɵelementStart(0, "span", 66);
317
- i0.ɵɵelement(1, "i", 72);
295
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_14_Template(rf, ctx) { if (rf & 1) {
296
+ i0.ɵɵelementStart(0, "span", 63);
297
+ i0.ɵɵelement(1, "i", 69);
318
298
  i0.ɵɵtext(2);
319
299
  i0.ɵɵelementEnd();
320
300
  } if (rf & 2) {
321
- const test_r13 = i0.ɵɵnextContext().$implicit;
301
+ const test_r11 = i0.ɵɵnextContext().$implicit;
322
302
  const ctx_r2 = i0.ɵɵnextContext(5);
323
303
  i0.ɵɵadvance(2);
324
- i0.ɵɵtextInterpolate1(" ~", ctx_r2.FormatDurationSeconds(test_r13.EstDuration));
304
+ i0.ɵɵtextInterpolate1(" ~", ctx_r2.FormatDurationSeconds(test_r11.EstDuration));
325
305
  } }
326
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_15_Template(rf, ctx) { if (rf & 1) {
327
- i0.ɵɵelementStart(0, "span", 66);
328
- i0.ɵɵelement(1, "i", 73);
306
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_15_Template(rf, ctx) { if (rf & 1) {
307
+ i0.ɵɵelementStart(0, "span", 63);
308
+ i0.ɵɵelement(1, "i", 70);
329
309
  i0.ɵɵtext(2);
330
310
  i0.ɵɵelementEnd();
331
311
  } if (rf & 2) {
332
- const test_r13 = i0.ɵɵnextContext().$implicit;
312
+ const test_r11 = i0.ɵɵnextContext().$implicit;
333
313
  const ctx_r2 = i0.ɵɵnextContext(5);
334
314
  i0.ɵɵadvance(2);
335
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatCost(test_r13.EstCost));
315
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatCost(test_r11.EstCost));
336
316
  } }
337
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
338
- i0.ɵɵelementStart(0, "span", 75);
317
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
318
+ i0.ɵɵelementStart(0, "span", 72);
339
319
  i0.ɵɵtext(1);
340
320
  i0.ɵɵelementEnd();
341
321
  } if (rf & 2) {
342
- const tag_r14 = i0.ɵɵnextContext().$implicit;
322
+ const tag_r12 = i0.ɵɵnextContext().$implicit;
343
323
  i0.ɵɵadvance();
344
- i0.ɵɵtextInterpolate(tag_r14);
324
+ i0.ɵɵtextInterpolate(tag_r12);
345
325
  } }
346
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
347
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template, 2, 1, "span", 75);
326
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
327
+ i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template, 2, 1, "span", 72);
348
328
  } if (rf & 2) {
349
- const ɵ$index_249_r15 = ctx.$index;
350
- i0.ɵɵconditional(ɵ$index_249_r15 < 4 ? 0 : -1);
329
+ const ɵ$index_246_r13 = ctx.$index;
330
+ i0.ɵɵconditional(ɵ$index_246_r13 < 4 ? 0 : -1);
351
331
  } }
352
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
353
- i0.ɵɵelementStart(0, "span", 74);
332
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
333
+ i0.ɵɵelementStart(0, "span", 71);
354
334
  i0.ɵɵtext(1);
355
335
  i0.ɵɵelementEnd();
356
336
  } if (rf & 2) {
357
- const test_r13 = i0.ɵɵnextContext(2).$implicit;
337
+ const test_r11 = i0.ɵɵnextContext(2).$implicit;
358
338
  i0.ɵɵadvance();
359
- i0.ɵɵtextInterpolate1("+", test_r13.Tags.length - 4);
339
+ i0.ɵɵtextInterpolate1("+", test_r11.Tags.length - 4);
360
340
  } }
361
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_Template(rf, ctx) { if (rf & 1) {
362
- i0.ɵɵelementStart(0, "div", 68);
363
- i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_For_2_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
364
- i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_Conditional_3_Template, 2, 1, "span", 74);
341
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_Template(rf, ctx) { if (rf & 1) {
342
+ i0.ɵɵelementStart(0, "div", 65);
343
+ i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_For_2_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
344
+ i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_Conditional_3_Template, 2, 1, "span", 71);
365
345
  i0.ɵɵelementEnd();
366
346
  } if (rf & 2) {
367
- const test_r13 = i0.ɵɵnextContext().$implicit;
347
+ const test_r11 = i0.ɵɵnextContext().$implicit;
368
348
  i0.ɵɵadvance();
369
- i0.ɵɵrepeater(test_r13.Tags);
349
+ i0.ɵɵrepeater(test_r11.Tags);
370
350
  i0.ɵɵadvance(2);
371
- i0.ɵɵconditional(test_r13.Tags.length > 4 ? 3 : -1);
351
+ i0.ɵɵconditional(test_r11.Tags.length > 4 ? 3 : -1);
372
352
  } }
373
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
374
- const _r12 = i0.ɵɵgetCurrentView();
375
- i0.ɵɵelementStart(0, "div", 63)(1, "div", 35)(2, "div", 36);
376
- i0.ɵɵelement(3, "i", 64)(4, "span", 38);
353
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
354
+ const _r10 = i0.ɵɵgetCurrentView();
355
+ i0.ɵɵelementStart(0, "div", 60)(1, "div", 32)(2, "div", 33);
356
+ i0.ɵɵelement(3, "i", 61)(4, "span", 35);
377
357
  i0.ɵɵpipe(5, "highlightSearch");
378
- i0.ɵɵelementStart(6, "span", 39);
358
+ i0.ɵɵelementStart(6, "span", 36);
379
359
  i0.ɵɵtext(7);
380
360
  i0.ɵɵelementEnd()();
381
- i0.ɵɵelementStart(8, "div", 40);
361
+ i0.ɵɵelementStart(8, "div", 37);
382
362
  i0.ɵɵtext(9);
383
- i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_10_Template, 2, 1);
363
+ i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_10_Template, 2, 1);
384
364
  i0.ɵɵelementEnd();
385
- i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 41);
386
- i0.ɵɵelementStart(12, "div", 65);
387
- i0.ɵɵconditionalCreate(13, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_13_Template, 3, 1, "span", 66);
388
- i0.ɵɵconditionalCreate(14, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_14_Template, 3, 1, "span", 66);
389
- i0.ɵɵconditionalCreate(15, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_15_Template, 3, 1, "span", 66);
390
- i0.ɵɵelementStart(16, "span", 66);
391
- i0.ɵɵelement(17, "i", 67);
365
+ i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 38);
366
+ i0.ɵɵelementStart(12, "div", 62);
367
+ i0.ɵɵconditionalCreate(13, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_13_Template, 3, 1, "span", 63);
368
+ i0.ɵɵconditionalCreate(14, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_14_Template, 3, 1, "span", 63);
369
+ i0.ɵɵconditionalCreate(15, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_15_Template, 3, 1, "span", 63);
370
+ i0.ɵɵelementStart(16, "span", 63);
371
+ i0.ɵɵelement(17, "i", 64);
392
372
  i0.ɵɵtext(18);
393
373
  i0.ɵɵelementEnd()();
394
- i0.ɵɵconditionalCreate(19, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_Template, 4, 1, "div", 68);
374
+ i0.ɵɵconditionalCreate(19, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Conditional_19_Template, 4, 1, "div", 65);
395
375
  i0.ɵɵelementEnd();
396
- i0.ɵɵelementStart(20, "div", 42)(21, "div", 43)(22, "span", 44);
376
+ i0.ɵɵelementStart(20, "div", 39)(21, "div", 40)(22, "span", 41);
397
377
  i0.ɵɵtext(23, "Last Status");
398
378
  i0.ɵɵelementEnd();
399
- i0.ɵɵelementStart(24, "span", 69);
379
+ i0.ɵɵelementStart(24, "span", 66);
400
380
  i0.ɵɵtext(25);
401
381
  i0.ɵɵelementEnd()();
402
- i0.ɵɵelementStart(26, "div", 43)(27, "span", 44);
382
+ i0.ɵɵelementStart(26, "div", 40)(27, "span", 41);
403
383
  i0.ɵɵtext(28, "Score");
404
384
  i0.ɵɵelementEnd();
405
- i0.ɵɵelementStart(29, "span", 45);
385
+ i0.ɵɵelementStart(29, "span", 42);
406
386
  i0.ɵɵtext(30);
407
387
  i0.ɵɵelementEnd()();
408
- i0.ɵɵelementStart(31, "div", 43)(32, "span", 44);
388
+ i0.ɵɵelementStart(31, "div", 40)(32, "span", 41);
409
389
  i0.ɵɵtext(33, "Total Runs");
410
390
  i0.ɵɵelementEnd();
411
- i0.ɵɵelementStart(34, "span", 45);
391
+ i0.ɵɵelementStart(34, "span", 42);
412
392
  i0.ɵɵtext(35);
413
393
  i0.ɵɵelementEnd()();
414
- i0.ɵɵelementStart(36, "div", 43)(37, "span", 44);
394
+ i0.ɵɵelementStart(36, "div", 40)(37, "span", 41);
415
395
  i0.ɵɵtext(38, "Pass Rate");
416
396
  i0.ɵɵelementEnd();
417
- i0.ɵɵelementStart(39, "span", 45);
397
+ i0.ɵɵelementStart(39, "span", 42);
418
398
  i0.ɵɵtext(40);
419
399
  i0.ɵɵelementEnd()()();
420
- i0.ɵɵelementStart(41, "div", 47)(42, "button", 48);
421
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Template_button_click_42_listener() { const test_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.RunTest(test_r13.ID)); });
422
- i0.ɵɵelement(43, "i", 49);
400
+ i0.ɵɵelementStart(41, "div", 44)(42, "button", 45);
401
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Template_button_click_42_listener() { const test_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.RunTest(test_r11.ID)); });
402
+ i0.ɵɵelement(43, "i", 46);
423
403
  i0.ɵɵtext(44, " Run ");
424
404
  i0.ɵɵelementEnd();
425
- i0.ɵɵelementStart(45, "button", 50);
426
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Template_button_click_45_listener() { const test_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.ViewTestHistory(test_r13.ID)); });
427
- i0.ɵɵelement(46, "i", 70);
405
+ i0.ɵɵelementStart(45, "button", 47);
406
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Template_button_click_45_listener() { const test_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.ViewTestHistory(test_r11.ID)); });
407
+ i0.ɵɵelement(46, "i", 67);
428
408
  i0.ɵɵtext(47, " History ");
429
409
  i0.ɵɵelementEnd();
430
- i0.ɵɵelementStart(48, "button", 50);
431
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Template_button_click_48_listener() { const test_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Tests", test_r13.ID)); });
432
- i0.ɵɵelement(49, "i", 52);
410
+ i0.ɵɵelementStart(48, "button", 47);
411
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Template_button_click_48_listener() { const test_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Tests", test_r11.ID)); });
412
+ i0.ɵɵelement(49, "i", 49);
433
413
  i0.ɵɵtext(50, " Edit ");
434
414
  i0.ɵɵelementEnd()()();
435
415
  } if (rf & 2) {
436
- const test_r13 = ctx.$implicit;
416
+ const test_r11 = ctx.$implicit;
437
417
  const ctx_r2 = i0.ɵɵnextContext(5);
438
418
  i0.ɵɵadvance(4);
439
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 20, test_r13.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
419
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 20, test_r11.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
440
420
  i0.ɵɵadvance(2);
441
- i0.ɵɵattribute("data-status", test_r13.Status.toLowerCase());
421
+ i0.ɵɵattribute("data-status", test_r11.Status.toLowerCase());
442
422
  i0.ɵɵadvance();
443
- i0.ɵɵtextInterpolate(test_r13.Status);
423
+ i0.ɵɵtextInterpolate(test_r11.Status);
444
424
  i0.ɵɵadvance(2);
445
- i0.ɵɵtextInterpolate1(" ", test_r13.TypeName, " ");
425
+ i0.ɵɵtextInterpolate1(" ", test_r11.TypeName, " ");
446
426
  i0.ɵɵadvance();
447
- i0.ɵɵconditional(test_r13.SuiteName ? 10 : -1);
427
+ i0.ɵɵconditional(test_r11.SuiteName ? 10 : -1);
448
428
  i0.ɵɵadvance();
449
- i0.ɵɵconditional(test_r13.Description ? 11 : -1);
429
+ i0.ɵɵconditional(test_r11.Description ? 11 : -1);
450
430
  i0.ɵɵadvance(2);
451
- i0.ɵɵconditional(test_r13.TypeName ? 13 : -1);
431
+ i0.ɵɵconditional(test_r11.TypeName ? 13 : -1);
452
432
  i0.ɵɵadvance();
453
- i0.ɵɵconditional(test_r13.EstDuration > 0 ? 14 : -1);
433
+ i0.ɵɵconditional(test_r11.EstDuration > 0 ? 14 : -1);
454
434
  i0.ɵɵadvance();
455
- i0.ɵɵconditional(test_r13.EstCost > 0 ? 15 : -1);
435
+ i0.ɵɵconditional(test_r11.EstCost > 0 ? 15 : -1);
456
436
  i0.ɵɵadvance(3);
457
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(test_r13.UpdatedAt));
437
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(test_r11.UpdatedAt));
458
438
  i0.ɵɵadvance();
459
- i0.ɵɵconditional(test_r13.Tags.length > 0 ? 19 : -1);
439
+ i0.ɵɵconditional(test_r11.Tags.length > 0 ? 19 : -1);
460
440
  i0.ɵɵadvance(5);
461
- i0.ɵɵattribute("data-status", test_r13.LastRunStatus.toLowerCase());
441
+ i0.ɵɵattribute("data-status", test_r11.LastRunStatus.toLowerCase());
462
442
  i0.ɵɵadvance();
463
- i0.ɵɵtextInterpolate(test_r13.LastRunStatus || "N/A");
443
+ i0.ɵɵtextInterpolate(test_r11.LastRunStatus || "N/A");
464
444
  i0.ɵɵadvance(4);
465
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r13.LastScore));
445
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r11.LastScore));
466
446
  i0.ɵɵadvance();
467
- i0.ɵɵtextInterpolate(test_r13.LastScore > 0 ? (test_r13.LastScore * 100).toFixed(0) + "%" : "N/A");
447
+ i0.ɵɵtextInterpolate(test_r11.LastScore > 0 ? (test_r11.LastScore * 100).toFixed(0) + "%" : "N/A");
468
448
  i0.ɵɵadvance(5);
469
- i0.ɵɵtextInterpolate(test_r13.TotalRuns);
449
+ i0.ɵɵtextInterpolate(test_r11.TotalRuns);
470
450
  i0.ɵɵadvance(4);
471
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r13.PassRate / 100));
451
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r11.PassRate / 100));
472
452
  i0.ɵɵadvance();
473
- i0.ɵɵtextInterpolate(test_r13.TotalRuns > 0 ? ctx_r2.FormatPercent(test_r13.PassRate) : "N/A");
453
+ i0.ɵɵtextInterpolate(test_r11.TotalRuns > 0 ? ctx_r2.FormatPercent(test_r11.PassRate) : "N/A");
474
454
  } }
475
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
476
- i0.ɵɵelementStart(0, "div", 29)(1, "h3", 30);
477
- i0.ɵɵelement(2, "i", 62);
455
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
456
+ i0.ɵɵelementStart(0, "div", 26)(1, "h3", 27);
457
+ i0.ɵɵelement(2, "i", 59);
478
458
  i0.ɵɵtext(3, " Tests ");
479
- i0.ɵɵelementStart(4, "span", 32);
459
+ i0.ɵɵelementStart(4, "span", 29);
480
460
  i0.ɵɵtext(5);
481
461
  i0.ɵɵelementEnd()();
482
- i0.ɵɵelementStart(6, "div", 33);
483
- i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Template, 51, 23, "div", 63, _forTrack0);
462
+ i0.ɵɵelementStart(6, "div", 30);
463
+ i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_For_8_Template, 51, 23, "div", 60, _forTrack0);
484
464
  i0.ɵɵelementEnd()();
485
465
  } if (rf & 2) {
486
466
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -489,52 +469,51 @@ function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Cond
489
469
  i0.ɵɵadvance(2);
490
470
  i0.ɵɵrepeater(ctx_r2.FilteredTests);
491
471
  } }
492
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
493
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_Template, 9, 1, "div", 29);
472
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
473
+ i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Conditional_0_Template, 9, 1, "div", 26);
494
474
  } if (rf & 2) {
495
475
  const ctx_r2 = i0.ɵɵnextContext(3);
496
476
  i0.ɵɵconditional(ctx_r2.FilteredTests.length > 0 ? 0 : -1);
497
477
  } }
498
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_6_Template(rf, ctx) { if (rf & 1) {
499
- i0.ɵɵelementStart(0, "div", 28);
500
- i0.ɵɵelement(1, "i", 76);
478
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
479
+ i0.ɵɵelementStart(0, "div", 25);
480
+ i0.ɵɵelement(1, "i", 73);
501
481
  i0.ɵɵelementStart(2, "p");
502
482
  i0.ɵɵtext(3, "No tests or suites found");
503
483
  i0.ɵɵelementEnd();
504
- i0.ɵɵelementStart(4, "span", 77);
484
+ i0.ɵɵelementStart(4, "span", 74);
505
485
  i0.ɵɵtext(5, "Try adjusting your search or filters.");
506
486
  i0.ɵɵelementEnd()();
507
487
  } }
508
- function TestingExplorerComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
509
- const _r7 = i0.ɵɵgetCurrentView();
510
- i0.ɵɵelementStart(0, "div", 19)(1, "mj-left-nav", 26);
511
- i0.ɵɵlistener("ItemClicked", function TestingExplorerComponent_ng_template_2_Conditional_1_Template_mj_left_nav_ItemClicked_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnNavItemClicked($event)); })("ItemToggled", function TestingExplorerComponent_ng_template_2_Conditional_1_Template_mj_left_nav_ItemToggled_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnNavItemToggled($event)); });
488
+ function TestingExplorerComponent_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
489
+ const _r5 = i0.ɵɵgetCurrentView();
490
+ i0.ɵɵelementStart(0, "mj-left-nav", 24);
491
+ i0.ɵɵlistener("ItemClicked", function TestingExplorerComponent_ng_template_2_Conditional_2_Template_mj_left_nav_ItemClicked_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnNavItemClicked($event)); })("ItemToggled", function TestingExplorerComponent_ng_template_2_Conditional_2_Template_mj_left_nav_ItemToggled_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnNavItemToggled($event)); });
512
492
  i0.ɵɵelementEnd();
513
- i0.ɵɵelementStart(2, "mj-left-nav-content")(3, "div", 27);
514
- i0.ɵɵconditionalCreate(4, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Template, 1, 1);
515
- i0.ɵɵconditionalCreate(5, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Template, 1, 1);
516
- i0.ɵɵconditionalCreate(6, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_6_Template, 6, 0, "div", 28);
517
- i0.ɵɵelementEnd()()();
493
+ i0.ɵɵelementStart(1, "mj-left-nav-content")(2, "mj-page-body-interior");
494
+ i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_3_Template, 1, 1);
495
+ i0.ɵɵconditionalCreate(4, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_4_Template, 1, 1);
496
+ i0.ɵɵconditionalCreate(5, TestingExplorerComponent_ng_template_2_Conditional_2_Conditional_5_Template, 6, 0, "div", 25);
497
+ i0.ɵɵelementEnd()();
518
498
  } if (rf & 2) {
519
499
  const ctx_r2 = i0.ɵɵnextContext(2);
520
- i0.ɵɵadvance();
521
500
  i0.ɵɵproperty("Sections", ctx_r2.NavSections)("ActiveId", ctx_r2.ActiveNavId)("ExpandedIds", ctx_r2.ExpandedNavIds);
522
501
  i0.ɵɵadvance(3);
523
- i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "suites" ? 4 : -1);
502
+ i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "suites" ? 3 : -1);
524
503
  i0.ɵɵadvance();
525
- i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "tests" ? 5 : -1);
504
+ i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "tests" ? 4 : -1);
526
505
  i0.ɵɵadvance();
527
- i0.ɵɵconditional(ctx_r2.FilteredSuites.length === 0 && ctx_r2.FilteredTests.length === 0 ? 6 : -1);
506
+ i0.ɵɵconditional(ctx_r2.FilteredSuites.length === 0 && ctx_r2.FilteredTests.length === 0 ? 5 : -1);
528
507
  } }
529
- function TestingExplorerComponent_ng_template_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
530
- const _r16 = i0.ɵɵgetCurrentView();
531
- i0.ɵɵelementStart(0, "div", 78);
532
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
508
+ function TestingExplorerComponent_ng_template_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
509
+ const _r14 = i0.ɵɵgetCurrentView();
510
+ i0.ɵɵelementStart(0, "div", 75);
511
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
533
512
  i0.ɵɵelementEnd();
534
513
  } }
535
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_15_Template(rf, ctx) { if (rf & 1) {
536
- i0.ɵɵelementStart(0, "div", 87);
537
- i0.ɵɵelement(1, "i", 106);
514
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_15_Template(rf, ctx) { if (rf & 1) {
515
+ i0.ɵɵelementStart(0, "div", 84);
516
+ i0.ɵɵelement(1, "i", 103);
538
517
  i0.ɵɵelementStart(2, "span");
539
518
  i0.ɵɵtext(3);
540
519
  i0.ɵɵelementEnd()();
@@ -543,29 +522,29 @@ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_15_Tem
543
522
  i0.ɵɵadvance(3);
544
523
  i0.ɵɵtextInterpolate(ctx_r2.FormErrorMessage);
545
524
  } }
546
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_For_9_Template(rf, ctx) { if (rf & 1) {
547
- i0.ɵɵelementStart(0, "option", 98);
525
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_31_For_9_Template(rf, ctx) { if (rf & 1) {
526
+ i0.ɵɵelementStart(0, "option", 95);
548
527
  i0.ɵɵtext(1);
549
528
  i0.ɵɵelementEnd();
550
529
  } if (rf & 2) {
551
- const tt_r19 = ctx.$implicit;
552
- i0.ɵɵproperty("value", tt_r19.ID);
530
+ const tt_r17 = ctx.$implicit;
531
+ i0.ɵɵproperty("value", tt_r17.ID);
553
532
  i0.ɵɵadvance();
554
- i0.ɵɵtextInterpolate(tt_r19.Name);
533
+ i0.ɵɵtextInterpolate(tt_r17.Name);
555
534
  } }
556
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_Template(rf, ctx) { if (rf & 1) {
557
- const _r18 = i0.ɵɵgetCurrentView();
558
- i0.ɵɵelementStart(0, "div", 91)(1, "label", 92);
535
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_31_Template(rf, ctx) { if (rf & 1) {
536
+ const _r16 = i0.ɵɵgetCurrentView();
537
+ i0.ɵɵelementStart(0, "div", 88)(1, "label", 89);
559
538
  i0.ɵɵtext(2, "Test Type ");
560
- i0.ɵɵelementStart(3, "span", 93);
539
+ i0.ɵɵelementStart(3, "span", 90);
561
540
  i0.ɵɵtext(4, "*");
562
541
  i0.ɵɵelementEnd()();
563
- i0.ɵɵelementStart(5, "select", 97);
564
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_Template_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormTypeID, $event) || (ctx_r2.FormTypeID = $event); return i0.ɵɵresetView($event); });
565
- i0.ɵɵelementStart(6, "option", 107);
542
+ i0.ɵɵelementStart(5, "select", 94);
543
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_31_Template_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormTypeID, $event) || (ctx_r2.FormTypeID = $event); return i0.ɵɵresetView($event); });
544
+ i0.ɵɵelementStart(6, "option", 104);
566
545
  i0.ɵɵtext(7, "Select type...");
567
546
  i0.ɵɵelementEnd();
568
- i0.ɵɵrepeaterCreate(8, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_For_9_Template, 2, 2, "option", 98, _forTrack0);
547
+ i0.ɵɵrepeaterCreate(8, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_31_For_9_Template, 2, 2, "option", 95, _forTrack0);
569
548
  i0.ɵɵelementEnd()();
570
549
  } if (rf & 2) {
571
550
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -574,27 +553,27 @@ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_Tem
574
553
  i0.ɵɵadvance(3);
575
554
  i0.ɵɵrepeater(ctx_r2.AllTestTypes);
576
555
  } }
577
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_For_7_Template(rf, ctx) { if (rf & 1) {
578
- i0.ɵɵelementStart(0, "option", 98);
556
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_32_For_7_Template(rf, ctx) { if (rf & 1) {
557
+ i0.ɵɵelementStart(0, "option", 95);
579
558
  i0.ɵɵtext(1);
580
559
  i0.ɵɵelementEnd();
581
560
  } if (rf & 2) {
582
- const s_r21 = ctx.$implicit;
583
- i0.ɵɵproperty("value", s_r21.ID);
561
+ const s_r19 = ctx.$implicit;
562
+ i0.ɵɵproperty("value", s_r19.ID);
584
563
  i0.ɵɵadvance();
585
- i0.ɵɵtextInterpolate(s_r21.Name);
564
+ i0.ɵɵtextInterpolate(s_r19.Name);
586
565
  } }
587
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_Template(rf, ctx) { if (rf & 1) {
588
- const _r20 = i0.ɵɵgetCurrentView();
589
- i0.ɵɵelementStart(0, "div", 91)(1, "label", 92);
566
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_32_Template(rf, ctx) { if (rf & 1) {
567
+ const _r18 = i0.ɵɵgetCurrentView();
568
+ i0.ɵɵelementStart(0, "div", 88)(1, "label", 89);
590
569
  i0.ɵɵtext(2, "Parent Suite");
591
570
  i0.ɵɵelementEnd();
592
- i0.ɵɵelementStart(3, "select", 97);
593
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormParentSuiteID, $event) || (ctx_r2.FormParentSuiteID = $event); return i0.ɵɵresetView($event); });
594
- i0.ɵɵelementStart(4, "option", 108);
571
+ i0.ɵɵelementStart(3, "select", 94);
572
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_32_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormParentSuiteID, $event) || (ctx_r2.FormParentSuiteID = $event); return i0.ɵɵresetView($event); });
573
+ i0.ɵɵelementStart(4, "option", 105);
595
574
  i0.ɵɵtext(5, "None (top-level)");
596
575
  i0.ɵɵelementEnd();
597
- i0.ɵɵrepeaterCreate(6, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_For_7_Template, 2, 2, "option", 98, _forTrack0);
576
+ i0.ɵɵrepeaterCreate(6, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_32_For_7_Template, 2, 2, "option", 95, _forTrack0);
598
577
  i0.ɵɵelementEnd()();
599
578
  } if (rf & 2) {
600
579
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -603,32 +582,32 @@ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_Tem
603
582
  i0.ɵɵadvance(3);
604
583
  i0.ɵɵrepeater(ctx_r2.AllSuites);
605
584
  } }
606
- function TestingExplorerComponent_ng_template_2_Conditional_5_For_38_Template(rf, ctx) { if (rf & 1) {
607
- i0.ɵɵelementStart(0, "option", 98);
585
+ function TestingExplorerComponent_ng_template_2_Conditional_6_For_38_Template(rf, ctx) { if (rf & 1) {
586
+ i0.ɵɵelementStart(0, "option", 95);
608
587
  i0.ɵɵtext(1);
609
588
  i0.ɵɵelementEnd();
610
589
  } if (rf & 2) {
611
- const status_r22 = ctx.$implicit;
612
- i0.ɵɵproperty("value", status_r22);
590
+ const status_r20 = ctx.$implicit;
591
+ i0.ɵɵproperty("value", status_r20);
613
592
  i0.ɵɵadvance();
614
- i0.ɵɵtextInterpolate(status_r22);
593
+ i0.ɵɵtextInterpolate(status_r20);
615
594
  } }
616
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_39_Template(rf, ctx) { if (rf & 1) {
617
- const _r23 = i0.ɵɵgetCurrentView();
618
- i0.ɵɵelementStart(0, "div", 89)(1, "div", 90);
595
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_39_Template(rf, ctx) { if (rf & 1) {
596
+ const _r21 = i0.ɵɵgetCurrentView();
597
+ i0.ɵɵelementStart(0, "div", 86)(1, "div", 87);
619
598
  i0.ɵɵtext(2, "Estimates");
620
599
  i0.ɵɵelementEnd();
621
- i0.ɵɵelementStart(3, "div", 96)(4, "div", 91)(5, "label", 92);
600
+ i0.ɵɵelementStart(3, "div", 93)(4, "div", 88)(5, "label", 89);
622
601
  i0.ɵɵtext(6, "Duration (seconds)");
623
602
  i0.ɵɵelementEnd();
624
- i0.ɵɵelementStart(7, "input", 109);
625
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_39_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormEstDuration, $event) || (ctx_r2.FormEstDuration = $event); return i0.ɵɵresetView($event); });
603
+ i0.ɵɵelementStart(7, "input", 106);
604
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_39_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormEstDuration, $event) || (ctx_r2.FormEstDuration = $event); return i0.ɵɵresetView($event); });
626
605
  i0.ɵɵelementEnd()();
627
- i0.ɵɵelementStart(8, "div", 91)(9, "label", 92);
606
+ i0.ɵɵelementStart(8, "div", 88)(9, "label", 89);
628
607
  i0.ɵɵtext(10, "Cost (USD)");
629
608
  i0.ɵɵelementEnd();
630
- i0.ɵɵelementStart(11, "input", 110);
631
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_39_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormEstCost, $event) || (ctx_r2.FormEstCost = $event); return i0.ɵɵresetView($event); });
609
+ i0.ɵɵelementStart(11, "input", 107);
610
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_39_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormEstCost, $event) || (ctx_r2.FormEstCost = $event); return i0.ɵɵresetView($event); });
632
611
  i0.ɵɵelementEnd()()()();
633
612
  } if (rf & 2) {
634
613
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -637,78 +616,78 @@ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_39_Tem
637
616
  i0.ɵɵadvance(4);
638
617
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.FormEstCost);
639
618
  } }
640
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_51_Template(rf, ctx) { if (rf & 1) {
641
- i0.ɵɵelement(0, "i", 104);
619
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_51_Template(rf, ctx) { if (rf & 1) {
620
+ i0.ɵɵelement(0, "i", 101);
642
621
  } }
643
- function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_52_Template(rf, ctx) { if (rf & 1) {
644
- i0.ɵɵelement(0, "i", 105);
622
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_52_Template(rf, ctx) { if (rf & 1) {
623
+ i0.ɵɵelement(0, "i", 102);
645
624
  } }
646
- function TestingExplorerComponent_ng_template_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
647
- const _r17 = i0.ɵɵgetCurrentView();
648
- i0.ɵɵelementStart(0, "div", 23)(1, "div", 79)(2, "div", 80);
649
- i0.ɵɵelement(3, "i", 81);
650
- i0.ɵɵelementStart(4, "span", 82);
625
+ function TestingExplorerComponent_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
626
+ const _r15 = i0.ɵɵgetCurrentView();
627
+ i0.ɵɵelementStart(0, "div", 21)(1, "div", 76)(2, "div", 77);
628
+ i0.ɵɵelement(3, "i", 78);
629
+ i0.ɵɵelementStart(4, "span", 79);
651
630
  i0.ɵɵtext(5);
652
631
  i0.ɵɵelementEnd()();
653
- i0.ɵɵelementStart(6, "button", 83);
654
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
655
- i0.ɵɵelement(7, "i", 84);
632
+ i0.ɵɵelementStart(6, "button", 80);
633
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
634
+ i0.ɵɵelement(7, "i", 81);
656
635
  i0.ɵɵelementEnd()();
657
- i0.ɵɵelementStart(8, "div", 85)(9, "button", 86);
658
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("test")); });
659
- i0.ɵɵelement(10, "i", 62);
636
+ i0.ɵɵelementStart(8, "div", 82)(9, "button", 83);
637
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("test")); });
638
+ i0.ɵɵelement(10, "i", 59);
660
639
  i0.ɵɵtext(11, " Test ");
661
640
  i0.ɵɵelementEnd();
662
- i0.ɵɵelementStart(12, "button", 86);
663
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("suite")); });
664
- i0.ɵɵelement(13, "i", 31);
641
+ i0.ɵɵelementStart(12, "button", 83);
642
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("suite")); });
643
+ i0.ɵɵelement(13, "i", 28);
665
644
  i0.ɵɵtext(14, " Suite ");
666
645
  i0.ɵɵelementEnd()();
667
- i0.ɵɵconditionalCreate(15, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_15_Template, 4, 1, "div", 87);
668
- i0.ɵɵelementStart(16, "div", 88)(17, "div", 89)(18, "div", 90);
646
+ i0.ɵɵconditionalCreate(15, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_15_Template, 4, 1, "div", 84);
647
+ i0.ɵɵelementStart(16, "div", 85)(17, "div", 86)(18, "div", 87);
669
648
  i0.ɵɵtext(19, "General");
670
649
  i0.ɵɵelementEnd();
671
- i0.ɵɵelementStart(20, "div", 91)(21, "label", 92);
650
+ i0.ɵɵelementStart(20, "div", 88)(21, "label", 89);
672
651
  i0.ɵɵtext(22, "Name ");
673
- i0.ɵɵelementStart(23, "span", 93);
652
+ i0.ɵɵelementStart(23, "span", 90);
674
653
  i0.ɵɵtext(24, "*");
675
654
  i0.ɵɵelementEnd()();
676
- i0.ɵɵelementStart(25, "input", 94);
677
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormName, $event) || (ctx_r2.FormName = $event); return i0.ɵɵresetView($event); });
655
+ i0.ɵɵelementStart(25, "input", 91);
656
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormName, $event) || (ctx_r2.FormName = $event); return i0.ɵɵresetView($event); });
678
657
  i0.ɵɵelementEnd()();
679
- i0.ɵɵelementStart(26, "div", 91)(27, "label", 92);
658
+ i0.ɵɵelementStart(26, "div", 88)(27, "label", 89);
680
659
  i0.ɵɵtext(28, "Description");
681
660
  i0.ɵɵelementEnd();
682
- i0.ɵɵelementStart(29, "textarea", 95);
683
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_textarea_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormDescription, $event) || (ctx_r2.FormDescription = $event); return i0.ɵɵresetView($event); });
661
+ i0.ɵɵelementStart(29, "textarea", 92);
662
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_textarea_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormDescription, $event) || (ctx_r2.FormDescription = $event); return i0.ɵɵresetView($event); });
684
663
  i0.ɵɵelementEnd()();
685
- i0.ɵɵelementStart(30, "div", 96);
686
- i0.ɵɵconditionalCreate(31, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_Template, 10, 1, "div", 91);
687
- i0.ɵɵconditionalCreate(32, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_Template, 8, 1, "div", 91);
688
- i0.ɵɵelementStart(33, "div", 91)(34, "label", 92);
664
+ i0.ɵɵelementStart(30, "div", 93);
665
+ i0.ɵɵconditionalCreate(31, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_31_Template, 10, 1, "div", 88);
666
+ i0.ɵɵconditionalCreate(32, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_32_Template, 8, 1, "div", 88);
667
+ i0.ɵɵelementStart(33, "div", 88)(34, "label", 89);
689
668
  i0.ɵɵtext(35, "Status");
690
669
  i0.ɵɵelementEnd();
691
- i0.ɵɵelementStart(36, "select", 97);
692
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_select_ngModelChange_36_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormStatus, $event) || (ctx_r2.FormStatus = $event); return i0.ɵɵresetView($event); });
693
- i0.ɵɵrepeaterCreate(37, TestingExplorerComponent_ng_template_2_Conditional_5_For_38_Template, 2, 2, "option", 98, i0.ɵɵrepeaterTrackByIdentity);
670
+ i0.ɵɵelementStart(36, "select", 94);
671
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_select_ngModelChange_36_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormStatus, $event) || (ctx_r2.FormStatus = $event); return i0.ɵɵresetView($event); });
672
+ i0.ɵɵrepeaterCreate(37, TestingExplorerComponent_ng_template_2_Conditional_6_For_38_Template, 2, 2, "option", 95, i0.ɵɵrepeaterTrackByIdentity);
694
673
  i0.ɵɵelementEnd()()()();
695
- i0.ɵɵconditionalCreate(39, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_39_Template, 12, 2, "div", 89);
696
- i0.ɵɵelementStart(40, "div", 89)(41, "div", 90);
674
+ i0.ɵɵconditionalCreate(39, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_39_Template, 12, 2, "div", 86);
675
+ i0.ɵɵelementStart(40, "div", 86)(41, "div", 87);
697
676
  i0.ɵɵtext(42, "Tags");
698
677
  i0.ɵɵelementEnd();
699
- i0.ɵɵelementStart(43, "div", 91)(44, "input", 99);
700
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_input_ngModelChange_44_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormTags, $event) || (ctx_r2.FormTags = $event); return i0.ɵɵresetView($event); });
678
+ i0.ɵɵelementStart(43, "div", 88)(44, "input", 96);
679
+ i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_input_ngModelChange_44_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormTags, $event) || (ctx_r2.FormTags = $event); return i0.ɵɵresetView($event); });
701
680
  i0.ɵɵelementEnd();
702
- i0.ɵɵelementStart(45, "span", 100);
681
+ i0.ɵɵelementStart(45, "span", 97);
703
682
  i0.ɵɵtext(46, "Separate multiple tags with commas");
704
683
  i0.ɵɵelementEnd()()()();
705
- i0.ɵɵelementStart(47, "div", 101)(48, "button", 102);
706
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
684
+ i0.ɵɵelementStart(47, "div", 98)(48, "button", 99);
685
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
707
686
  i0.ɵɵtext(49, "Cancel");
708
687
  i0.ɵɵelementEnd();
709
- i0.ɵɵelementStart(50, "button", 103);
710
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_5_Template_button_click_50_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SaveForm()); });
711
- i0.ɵɵconditionalCreate(51, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_51_Template, 1, 0, "i", 104)(52, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_52_Template, 1, 0, "i", 105);
688
+ i0.ɵɵelementStart(50, "button", 100);
689
+ i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_button_click_50_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SaveForm()); });
690
+ i0.ɵɵconditionalCreate(51, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_51_Template, 1, 0, "i", 101)(52, TestingExplorerComponent_ng_template_2_Conditional_6_Conditional_52_Template, 1, 0, "i", 102);
712
691
  i0.ɵɵtext(53);
713
692
  i0.ɵɵelementEnd()()();
714
693
  } if (rf & 2) {
@@ -746,12 +725,12 @@ function TestingExplorerComponent_ng_template_2_Conditional_5_Template(rf, ctx)
746
725
  i0.ɵɵadvance(2);
747
726
  i0.ɵɵtextInterpolate1(" Create ", ctx_r2.SlideoutCreateType === "test" ? "Test" : "Suite", " ");
748
727
  } }
749
- function TestingExplorerComponent_ng_template_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
750
- const _r24 = i0.ɵɵgetCurrentView();
751
- i0.ɵɵelementStart(0, "mj-slide-panel", 111);
752
- i0.ɵɵlistener("Closed", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_mj_slide_panel_Closed_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPanelClosed()); });
753
- i0.ɵɵelementStart(1, "app-test-run-dialog", 112);
754
- i0.ɵɵlistener("PanelClose", function TestingExplorerComponent_ng_template_2_Conditional_6_Template_app_test_run_dialog_PanelClose_1_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPanelClosed()); });
728
+ function TestingExplorerComponent_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
729
+ const _r22 = i0.ɵɵgetCurrentView();
730
+ i0.ɵɵelementStart(0, "mj-slide-panel", 108);
731
+ i0.ɵɵlistener("Closed", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_mj_slide_panel_Closed_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPanelClosed()); });
732
+ i0.ɵɵelementStart(1, "app-test-run-dialog", 109);
733
+ i0.ɵɵlistener("PanelClose", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_app_test_run_dialog_PanelClose_1_listener() { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPanelClosed()); });
755
734
  i0.ɵɵelementEnd()();
756
735
  } if (rf & 2) {
757
736
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -760,27 +739,31 @@ function TestingExplorerComponent_ng_template_2_Conditional_6_Template(rf, ctx)
760
739
  i0.ɵɵproperty("PanelMode", true)("selectedTestId", (ctx_r2.testingDialogService.PanelOptions == null ? null : ctx_r2.testingDialogService.PanelOptions.testId) ?? null)("selectedSuiteId", (ctx_r2.testingDialogService.PanelOptions == null ? null : ctx_r2.testingDialogService.PanelOptions.suiteId) ?? null)("runMode", (ctx_r2.testingDialogService.PanelOptions == null ? null : ctx_r2.testingDialogService.PanelOptions.mode) ?? "test");
761
740
  } }
762
741
  function TestingExplorerComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
763
- const _r6 = i0.ɵɵgetCurrentView();
764
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_0_Template, 2, 0, "div", 18)(1, TestingExplorerComponent_ng_template_2_Conditional_1_Template, 7, 6, "div", 19);
765
- i0.ɵɵconditionalCreate(2, TestingExplorerComponent_ng_template_2_Conditional_2_Template, 1, 0, "div", 20);
766
- i0.ɵɵelementStart(3, "div", 21)(4, "div", 22);
767
- i0.ɵɵlistener("mousedown", function TestingExplorerComponent_ng_template_2_Template_div_mousedown_4_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnResizeStart($event)); });
742
+ const _r4 = i0.ɵɵgetCurrentView();
743
+ i0.ɵɵelementStart(0, "mj-page-body", 16);
744
+ i0.ɵɵconditionalCreate(1, TestingExplorerComponent_ng_template_2_Conditional_1_Template, 2, 0, "div", 17)(2, TestingExplorerComponent_ng_template_2_Conditional_2_Template, 6, 6);
745
+ i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_3_Template, 1, 0, "div", 18);
746
+ i0.ɵɵelementStart(4, "div", 19)(5, "div", 20);
747
+ i0.ɵɵlistener("mousedown", function TestingExplorerComponent_ng_template_2_Template_div_mousedown_5_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnResizeStart($event)); });
748
+ i0.ɵɵelementEnd();
749
+ i0.ɵɵconditionalCreate(6, TestingExplorerComponent_ng_template_2_Conditional_6_Template, 54, 18, "div", 21);
768
750
  i0.ɵɵelementEnd();
769
- i0.ɵɵconditionalCreate(5, TestingExplorerComponent_ng_template_2_Conditional_5_Template, 54, 18, "div", 23);
751
+ i0.ɵɵconditionalCreate(7, TestingExplorerComponent_ng_template_2_Conditional_7_Template, 2, 5, "mj-slide-panel", 22);
770
752
  i0.ɵɵelementEnd();
771
- i0.ɵɵconditionalCreate(6, TestingExplorerComponent_ng_template_2_Conditional_6_Template, 2, 5, "mj-slide-panel", 24);
772
753
  } if (rf & 2) {
773
754
  const ctx_r2 = i0.ɵɵnextContext();
774
- i0.ɵɵconditional(ctx_r2.IsLoading ? 0 : 1);
755
+ i0.ɵɵproperty("Flex", true)("Padding", false);
756
+ i0.ɵɵadvance();
757
+ i0.ɵɵconditional(ctx_r2.IsLoading ? 1 : 2);
775
758
  i0.ɵɵadvance(2);
776
- i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 2 : -1);
759
+ i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 3 : -1);
777
760
  i0.ɵɵadvance();
778
761
  i0.ɵɵstyleProp("width", ctx_r2.SlideoutWidth, "px");
779
762
  i0.ɵɵclassProp("open", ctx_r2.SlideoutOpen);
780
763
  i0.ɵɵadvance(2);
781
- i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 5 : -1);
764
+ i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 6 : -1);
782
765
  i0.ɵɵadvance();
783
- i0.ɵɵconditional(ctx_r2.testingDialogService.IsPanelOpen ? 6 : -1);
766
+ i0.ɵɵconditional(ctx_r2.testingDialogService.IsPanelOpen ? 7 : -1);
784
767
  } }
785
768
  export class TestingExplorerComponent extends BaseAngularComponent {
786
769
  cdr;
@@ -1075,18 +1058,46 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1075
1058
  { text: 'Ascending', value: 'asc' },
1076
1059
  { text: 'Descending', value: 'desc' },
1077
1060
  ];
1078
- get sortFilterFields() {
1061
+ /**
1062
+ * Concise-chrome model: every filter (View · Status · Sort) lives behind a
1063
+ * single "Filter" button via this one mj-filter-panel field set. The applied
1064
+ * state is surfaced separately as removable chips (see AppliedFilters), so
1065
+ * input (the button) and state (the chips) are cleanly separated.
1066
+ */
1067
+ get filterFields() {
1079
1068
  return [
1069
+ { key: 'displayMode', type: 'chips', label: 'View', chipOptions: [
1070
+ { text: 'All', value: 'all' },
1071
+ { text: 'Suites', value: 'suites' },
1072
+ { text: 'Tests', value: 'tests' },
1073
+ ] },
1074
+ { key: 'status', type: 'chips', label: 'Status', multi: true, chipOptions: [
1075
+ { text: 'Active', value: 'Active' },
1076
+ { text: 'Pending', value: 'Pending' },
1077
+ { text: 'Disabled', value: 'Disabled' },
1078
+ ] },
1080
1079
  { key: 'SortField', type: 'dropdown', label: 'Sort by',
1081
1080
  icon: 'fa-solid fa-arrow-down-wide-short', options: this.sortFieldOptions },
1082
1081
  { key: 'SortDirection', type: 'dropdown', label: 'Direction',
1083
1082
  icon: 'fa-solid fa-arrow-up-arrow-down', options: this.sortDirectionOptions },
1084
1083
  ];
1085
1084
  }
1086
- get sortFilterValues() {
1087
- return { SortField: this.SortField, SortDirection: this.SortDirection };
1085
+ get filterValues() {
1086
+ return {
1087
+ displayMode: this.DisplayMode,
1088
+ status: Array.from(this.StatusFilters),
1089
+ SortField: this.SortField,
1090
+ SortDirection: this.SortDirection,
1091
+ };
1088
1092
  }
1089
- onSortFilterChange(values) {
1093
+ onFilterValuesChange(values) {
1094
+ if ('displayMode' in values) {
1095
+ this._displayMode$.next(values['displayMode']);
1096
+ }
1097
+ if ('status' in values) {
1098
+ const arr = Array.isArray(values['status']) ? values['status'] : [];
1099
+ this._statusFilters$.next(new Set(arr));
1100
+ }
1090
1101
  if ('SortField' in values) {
1091
1102
  this._sortField$.next(values['SortField']);
1092
1103
  }
@@ -1098,7 +1109,13 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1098
1109
  this._sortField$.next('name');
1099
1110
  this._sortDirection$.next('asc');
1100
1111
  }
1101
- /** Non-zero when the user has changed SortField or SortDirection from defaults — drives the popover badge. */
1112
+ /** Clears every filter (View · Status · Sort) back to defaults. */
1113
+ resetAllFilters() {
1114
+ this._displayMode$.next('all');
1115
+ this._statusFilters$.next(new Set());
1116
+ this.resetSortFilters();
1117
+ }
1118
+ /** Active sort changes from defaults — contributes to the filter badge + chips. */
1102
1119
  get ActiveSortFilterCount() {
1103
1120
  let count = 0;
1104
1121
  if (this.SortField !== 'name')
@@ -1107,6 +1124,11 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1107
1124
  count++;
1108
1125
  return count;
1109
1126
  }
1127
+ /** Total active filters (View + Status + Sort) — drives the Filter button badge. */
1128
+ get TotalActiveFilterCount() {
1129
+ const displayModeActive = this.DisplayMode !== 'all' ? 1 : 0;
1130
+ return this.ActiveSortFilterCount + this.StatusFilters.size + displayModeActive;
1131
+ }
1110
1132
  RunTest(testId) {
1111
1133
  this.testingDialogService.OpenTestPanel(testId);
1112
1134
  }
@@ -1668,12 +1690,12 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1668
1690
  throw new Error('Failed to save test suite. Please check your input and try again.');
1669
1691
  }
1670
1692
  static ɵfac = function TestingExplorerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TestingExplorerComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i1.TestingDialogService), i0.ɵɵdirectiveInject(i2.TestingInstrumentationService)); };
1671
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingExplorerComponent, selectors: [["app-testing-explorer"]], inputs: { HideToolbar: "HideToolbar" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 1, consts: [["content", ""], [4, "ngTemplateOutlet"], ["Title", "Test Explorer", "Icon", "fa-solid fa-compass", "Subtitle", "Browse tests and test suites"], ["meta", ""], ["Label", "results", 3, "Count", "Total"], ["actions", ""], ["Label", "Sort", "Icon", "fa-solid fa-arrow-down-wide-short", 3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "KeyChange", "Options", "ActiveKey"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-folder-plus"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search tests and suites...", 3, "ValueChange", "Value"], [3, "Label", "Active"], [3, "Flex", "Padding"], [3, "Clicked", "Label", "Active"], [1, "explorer-loading"], [1, "explorer-layout"], [1, "slideout-backdrop"], [1, "slideout-panel"], [1, "slideout-resize-handle", 3, "mousedown"], [1, "slideout-container"], ["Mode", "slide", "Title", "Run Test", 3, "Resizable"], ["text", "Loading test explorer..."], [3, "ItemClicked", "ItemToggled", "Sections", "ActiveId", "ExpandedIds"], [1, "content-area"], [1, "empty-state"], [1, "content-section"], [1, "section-title"], [1, "fa-solid", "fa-folder"], [1, "section-count"], [1, "card-grid"], [1, "suite-card"], [1, "card-header"], [1, "card-title-row"], [1, "fa-solid", "fa-folder-open", "card-icon", "suite-icon"], [1, "card-name", 3, "innerHTML"], [1, "status-badge"], [1, "card-subtitle"], [1, "card-description", 3, "innerHTML"], [1, "card-stats"], [1, "stat"], [1, "stat-label"], [1, "stat-value"], [1, "card-tests-preview"], [1, "card-actions"], [1, "btn", "btn-sm", "btn-primary", 3, "click"], [1, "fa-solid", "fa-play"], [1, "btn", "btn-sm", "btn-secondary", 3, "click"], [1, "fa-solid", "fa-chart-bar"], [1, "fa-solid", "fa-pen"], [1, "dot-sep"], [1, "preview-more"], [1, "preview-test-row"], [1, "preview-dot"], [1, "preview-test-name"], [1, "preview-score"], [1, "preview-bar"], [1, "preview-bar-fill"], [1, "preview-status"], [1, "fa-solid", "fa-vial"], [1, "test-card"], [1, "fa-solid", "fa-vial", "card-icon", "test-icon"], [1, "card-meta-row"], [1, "meta-item"], [1, "fa-solid", "fa-calendar"], [1, "card-tags"], [1, "stat-value", "status-text"], [1, "fa-solid", "fa-history"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-dollar-sign"], [1, "tag", "tag-more"], [1, "tag"], [1, "fa-solid", "fa-inbox"], [1, "empty-hint"], [1, "slideout-backdrop", 3, "click"], [1, "slideout-header"], [1, "slideout-title-row"], [1, "fa-solid", "fa-plus-circle", "slideout-title-icon"], [1, "slideout-title-text"], [1, "slideout-close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "slideout-type-toggle"], [1, "type-toggle-btn", 3, "click"], [1, "slideout-error"], [1, "slideout-body"], [1, "form-section"], [1, "form-section-title"], [1, "form-group"], [1, "form-label"], [1, "form-required"], ["type", "text", 1, "form-input", 3, "ngModelChange", "ngModel", "placeholder"], ["rows", "3", 1, "form-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "form-row"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "value"], ["type", "text", "placeholder", "Comma-separated tags, e.g., agent, quality, v2", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "form-hint"], [1, "slideout-footer"], [1, "btn", "btn-secondary", 3, "click"], [1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-circle-exclamation"], ["value", "", "disabled", ""], ["value", ""], ["type", "number", "min", "0", "placeholder", "0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "0", "step", "0.01", "placeholder", "0.00", 1, "form-input", 3, "ngModelChange", "ngModel"], ["Mode", "slide", "Title", "Run Test", 3, "Closed", "Resizable"], [3, "PanelClose", "PanelMode", "selectedTestId", "selectedSuiteId", "runMode"]], template: function TestingExplorerComponent_Template(rf, ctx) { if (rf & 1) {
1672
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_0_Template, 1, 1, "ng-container")(1, TestingExplorerComponent_Conditional_1_Template, 21, 14, "mj-page-layout");
1673
- i0.ɵɵtemplate(2, TestingExplorerComponent_ng_template_2_Template, 7, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
1693
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingExplorerComponent, selectors: [["app-testing-explorer"]], inputs: { HideToolbar: "HideToolbar" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 1, consts: [["content", ""], [4, "ngTemplateOutlet"], ["Title", "Test Explorer", "Icon", "fa-solid fa-compass", "Subtitle", "Browse tests and test suites"], ["meta", ""], ["Label", "results", 3, "Count", "Total"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-folder-plus"], [1, "action-btn-label"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search tests and suites...", 3, "ValueChange", "Value"], ["Label", "Filters", "Icon", "fa-solid fa-filter", 3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "KeyChange", "Options", "ActiveKey"], ["Direction", "row", 3, "Flex", "Padding"], [1, "explorer-loading"], [1, "slideout-backdrop"], [1, "slideout-panel"], [1, "slideout-resize-handle", 3, "mousedown"], [1, "slideout-container"], ["Mode", "slide", "Title", "Run Test", 3, "Resizable"], ["text", "Loading test explorer..."], ["MobileTitle", "Browse Tests", 3, "ItemClicked", "ItemToggled", "Sections", "ActiveId", "ExpandedIds"], [1, "empty-state"], [1, "content-section"], [1, "section-title"], [1, "fa-solid", "fa-folder"], [1, "section-count"], [1, "card-grid"], [1, "suite-card"], [1, "card-header"], [1, "card-title-row"], [1, "fa-solid", "fa-folder-open", "card-icon", "suite-icon"], [1, "card-name", 3, "innerHTML"], [1, "status-badge"], [1, "card-subtitle"], [1, "card-description", 3, "innerHTML"], [1, "card-stats"], [1, "stat"], [1, "stat-label"], [1, "stat-value"], [1, "card-tests-preview"], [1, "card-actions"], [1, "btn", "btn-sm", "btn-primary", 3, "click"], [1, "fa-solid", "fa-play"], [1, "btn", "btn-sm", "btn-secondary", 3, "click"], [1, "fa-solid", "fa-chart-bar"], [1, "fa-solid", "fa-pen"], [1, "dot-sep"], [1, "preview-more"], [1, "preview-test-row"], [1, "preview-dot"], [1, "preview-test-name"], [1, "preview-score"], [1, "preview-bar"], [1, "preview-bar-fill"], [1, "preview-status"], [1, "fa-solid", "fa-vial"], [1, "test-card"], [1, "fa-solid", "fa-vial", "card-icon", "test-icon"], [1, "card-meta-row"], [1, "meta-item"], [1, "fa-solid", "fa-calendar"], [1, "card-tags"], [1, "stat-value", "status-text"], [1, "fa-solid", "fa-history"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-dollar-sign"], [1, "tag", "tag-more"], [1, "tag"], [1, "fa-solid", "fa-inbox"], [1, "empty-hint"], [1, "slideout-backdrop", 3, "click"], [1, "slideout-header"], [1, "slideout-title-row"], [1, "fa-solid", "fa-plus-circle", "slideout-title-icon"], [1, "slideout-title-text"], [1, "slideout-close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "slideout-type-toggle"], [1, "type-toggle-btn", 3, "click"], [1, "slideout-error"], [1, "slideout-body"], [1, "form-section"], [1, "form-section-title"], [1, "form-group"], [1, "form-label"], [1, "form-required"], ["type", "text", 1, "form-input", 3, "ngModelChange", "ngModel", "placeholder"], ["rows", "3", 1, "form-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "form-row"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "value"], ["type", "text", "placeholder", "Comma-separated tags, e.g., agent, quality, v2", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "form-hint"], [1, "slideout-footer"], [1, "btn", "btn-secondary", 3, "click"], [1, "btn", "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-circle-exclamation"], ["value", "", "disabled", ""], ["value", ""], ["type", "number", "min", "0", "placeholder", "0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "0", "step", "0.01", "placeholder", "0.00", 1, "form-input", 3, "ngModelChange", "ngModel"], ["Mode", "slide", "Title", "Run Test", 3, "Closed", "Resizable"], [3, "PanelClose", "PanelMode", "selectedTestId", "selectedSuiteId", "runMode"]], template: function TestingExplorerComponent_Template(rf, ctx) { if (rf & 1) {
1694
+ i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_0_Template, 1, 1, "ng-container")(1, TestingExplorerComponent_Conditional_1_Template, 19, 10, "mj-page-layout");
1695
+ i0.ɵɵtemplate(2, TestingExplorerComponent_ng_template_2_Template, 8, 10, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
1674
1696
  } if (rf & 2) {
1675
1697
  i0.ɵɵconditional(ctx.HideToolbar ? 0 : 1);
1676
- } }, dependencies: [i3.NgTemplateOutlet, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.MinValidator, i4.NgModel, i5.MJButtonDirective, i5.MJPageHeaderComponent, i5.MJPageLayoutComponent, i5.MJPageBodyComponent, i5.MJFilterChipComponent, i5.MJFilterPopoverComponent, i5.MJFilterPanelComponent, i5.MJPageSearchComponent, i5.MJViewToggleComponent, i5.MJStatBadgeComponent, i5.MJLeftNavComponent, i5.MJLeftNavContentComponent, i1.TestRunDialogComponent, i6.MjSlidePanelComponent, i7.LoadingComponent, i8.HighlightSearchPipe], styles: ["\n\n\n\n\n [_nghost-%COMP%] {\n display: block;\n height: 100%;\n width: 100%;\n }\n\n \n\n .explorer-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-height: 400px;\n background: var(--mj-bg-surface-sunken);\n }\n\n \n\n .explorer-layout[_ngcontent-%COMP%] {\n display: flex;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n }\n\n \n\n\n\n\n\n \n\n .btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 9px 16px;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .btn-secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n }\n\n .btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-sm[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n }\n\n \n\n .content-area[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n .content-section[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n }\n\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n .section-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n \n\n .card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));\n gap: 16px;\n }\n\n \n\n .suite-card[_ngcontent-%COMP%], \n .test-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n transition: all 0.2s ease;\n }\n\n .suite-card[_ngcontent-%COMP%]:hover, \n .test-card[_ngcontent-%COMP%]:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n box-shadow: var(--mj-shadow-md);\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 16px 16px 12px;\n }\n\n .card-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n }\n\n .card-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .suite-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .test-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .card-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n flex-shrink: 0;\n }\n\n .status-badge[data-status=\"active\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-badge[data-status=\"disabled\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .card-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n }\n\n .dot-sep[_ngcontent-%COMP%] {\n display: inline-block;\n width: 3px;\n height: 3px;\n background: var(--mj-text-disabled);\n border-radius: 50%;\n vertical-align: middle;\n margin: 0 6px;\n }\n\n .card-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta-row[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 8px;\n }\n\n .meta-item[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n .card-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 8px;\n }\n\n .tag[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: 4px;\n }\n\n .tag-more[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-disabled);\n }\n\n \n\n .card-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 1px;\n background: var(--mj-border-default);\n border-top: 1px solid var(--mj-border-default);\n }\n\n .stat[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 10px 12px;\n text-align: center;\n }\n\n .stat-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 2px;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .stat-value.good[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .stat-value.warn[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .stat-value.bad[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n .status-text[data-status=\"passed\"][_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .status-text[data-status=\"failed\"][_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .status-text[data-status=\"error\"][_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .status-text[data-status=\"running\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .status-text[data-status=\"pending\"][_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .status-text[data-status=\"skipped\"][_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n\n \n\n .card-tests-preview[_ngcontent-%COMP%] {\n padding: 10px 16px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n .preview-test-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n font-size: 12px;\n }\n\n .preview-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .preview-dot[data-status=\"passed\"][_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .preview-dot[data-status=\"failed\"][_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .preview-dot[data-status=\"error\"][_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .preview-dot[data-status=\"running\"][_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n .preview-dot[data-status=\"\"][_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n .preview-test-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .preview-score[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 11px;\n min-width: 32px;\n text-align: right;\n }\n\n .preview-score.good[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .preview-score.warn[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .preview-score.bad[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n .preview-bar[_ngcontent-%COMP%] {\n width: 48px;\n height: 4px;\n background: var(--mj-border-default);\n border-radius: 2px;\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .preview-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 2px;\n transition: width 0.3s ease;\n }\n\n .good-bg[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .warn-bg[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .bad-bg[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n .preview-status[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n min-width: 44px;\n text-align: right;\n }\n\n .preview-status[data-status=\"passed\"][_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .preview-status[data-status=\"failed\"][_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .preview-status[data-status=\"error\"][_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .preview-status[data-status=\"\"][_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n .preview-more[_ngcontent-%COMP%] {\n padding: 4px 0 0;\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-style: italic;\n }\n\n \n\n .card-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n }\n\n \n\n .empty-state[_ngcontent-%COMP%] {\n padding: 80px 40px;\n text-align: center;\n }\n\n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-muted);\n margin: 0 0 8px 0;\n }\n\n .empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n \n\n\n\n .slideout-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeInBackdrop 0.2s ease;\n }\n\n @keyframes _ngcontent-%COMP%_fadeInBackdrop {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .slideout-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -100%;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .slideout-panel.open[_ngcontent-%COMP%] {\n right: 0;\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n transition: background 0.2s;\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%]:active {\n background: color-mix(in srgb, var(--mj-brand-primary) 50%, transparent);\n }\n\n .slideout-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n\n .slideout-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .slideout-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .slideout-title-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n }\n\n .slideout-title-text[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .slideout-close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n transition: all 0.15s ease;\n }\n\n .slideout-close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n }\n\n \n\n .slideout-type-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .type-toggle-btn[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .type-toggle-btn[_ngcontent-%COMP%]:first-child {\n border-radius: 8px 0 0 8px;\n border-right: none;\n }\n\n .type-toggle-btn[_ngcontent-%COMP%]:last-child {\n border-radius: 0 8px 8px 0;\n }\n\n .type-toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .type-toggle-btn[_ngcontent-%COMP%]:hover:not(.active) {\n background: var(--mj-border-default);\n }\n\n \n\n .slideout-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 16px 24px 0;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 8px;\n color: var(--mj-status-error);\n font-size: 13px;\n flex-shrink: 0;\n }\n\n .slideout-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n \n\n .slideout-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .form-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n }\n\n .form-section-title[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.8px;\n margin-bottom: 14px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n }\n\n .form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 6px;\n }\n\n .form-required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .form-input[_ngcontent-%COMP%], \n .form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n transition: border-color 0.2s ease;\n outline: none;\n box-sizing: border-box;\n font-family: inherit;\n }\n\n .form-input[_ngcontent-%COMP%]:focus, \n .form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .form-input[_ngcontent-%COMP%]::placeholder, \n .form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 80px;\n }\n\n .form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n }\n\n .form-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n \n\n .slideout-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n }\n\n .slideout-footer[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n min-width: 100px;\n justify-content: center;\n }\n\n .slideout-footer[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n }\n\n \n\n mark.search-highlight {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface));\n color: inherit;\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: 700;\n }\n\n \n\n\n\n @media (max-width: 1200px) {\n .card-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n }\n\n @media (max-width: 600px) {\n .content-area[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .card-stats[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .slideout-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .form-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n }"], changeDetection: 0 });
1698
+ } }, dependencies: [i3.NgTemplateOutlet, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.MinValidator, i4.NgModel, i5.MJButtonDirective, i5.MJPageHeaderComponent, i5.MJPageLayoutComponent, i5.MJPageBodyComponent, i5.MJPageBodyInteriorComponent, i5.MJFilterPopoverComponent, i5.MJFilterPanelComponent, i5.MJPageSearchComponent, i5.MJViewToggleComponent, i5.MJStatBadgeComponent, i5.MJLeftNavComponent, i5.MJLeftNavContentComponent, i1.TestRunDialogComponent, i5.MjSlidePanelComponent, i6.LoadingComponent, i7.HighlightSearchPipe], styles: ["\n\n\n\n\n [_nghost-%COMP%] {\n display: block;\n height: 100%;\n width: 100%;\n }\n\n \n\n .explorer-loading[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-height: 400px;\n background: var(--mj-bg-surface-sunken);\n }\n\n \n\n\n\n\n \n\n\n\n \n\n\n\n\n\n \n\n .btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 9px 16px;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .btn-secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n }\n\n .btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-sm[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 12px;\n }\n\n .content-section[_ngcontent-%COMP%] {\n margin-bottom: 32px;\n }\n\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n .section-count[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n \n\n .card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));\n gap: 16px;\n }\n\n \n\n .suite-card[_ngcontent-%COMP%], \n .test-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n transition: all 0.2s ease;\n }\n\n .suite-card[_ngcontent-%COMP%]:hover, \n .test-card[_ngcontent-%COMP%]:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n box-shadow: var(--mj-shadow-md);\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 16px 16px 12px;\n }\n\n .card-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n }\n\n .card-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .suite-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .test-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .card-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .status-badge[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n flex-shrink: 0;\n }\n\n .status-badge[data-status=\"active\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge[data-status=\"pending\"][_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-badge[data-status=\"disabled\"][_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .card-subtitle[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n }\n\n .dot-sep[_ngcontent-%COMP%] {\n display: inline-block;\n width: 3px;\n height: 3px;\n background: var(--mj-text-disabled);\n border-radius: 50%;\n vertical-align: middle;\n margin: 0 6px;\n }\n\n .card-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta-row[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 8px;\n }\n\n .meta-item[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n .card-tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 8px;\n }\n\n .tag[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: 4px;\n }\n\n .tag-more[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-disabled);\n }\n\n \n\n .card-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 1px;\n background: var(--mj-border-default);\n border-top: 1px solid var(--mj-border-default);\n }\n\n .stat[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 10px 12px;\n text-align: center;\n }\n\n .stat-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 2px;\n }\n\n .stat-value[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .stat-value.good[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .stat-value.warn[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .stat-value.bad[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n .status-text[data-status=\"passed\"][_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .status-text[data-status=\"failed\"][_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .status-text[data-status=\"error\"][_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .status-text[data-status=\"running\"][_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .status-text[data-status=\"pending\"][_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .status-text[data-status=\"skipped\"][_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n\n \n\n .card-tests-preview[_ngcontent-%COMP%] {\n padding: 10px 16px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n .preview-test-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n font-size: 12px;\n }\n\n .preview-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .preview-dot[data-status=\"passed\"][_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .preview-dot[data-status=\"failed\"][_ngcontent-%COMP%] { background: var(--mj-status-error); }\n .preview-dot[data-status=\"error\"][_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .preview-dot[data-status=\"running\"][_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n .preview-dot[data-status=\"\"][_ngcontent-%COMP%] { background: var(--mj-text-disabled); }\n\n .preview-test-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .preview-score[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 11px;\n min-width: 32px;\n text-align: right;\n }\n\n .preview-score.good[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .preview-score.warn[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .preview-score.bad[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n\n .preview-bar[_ngcontent-%COMP%] {\n width: 48px;\n height: 4px;\n background: var(--mj-border-default);\n border-radius: 2px;\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .preview-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 2px;\n transition: width 0.3s ease;\n }\n\n .good-bg[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n .warn-bg[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n .bad-bg[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n\n .preview-status[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n min-width: 44px;\n text-align: right;\n }\n\n .preview-status[data-status=\"passed\"][_ngcontent-%COMP%] { color: var(--mj-status-success); }\n .preview-status[data-status=\"failed\"][_ngcontent-%COMP%] { color: var(--mj-status-error); }\n .preview-status[data-status=\"error\"][_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n .preview-status[data-status=\"\"][_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n .preview-more[_ngcontent-%COMP%] {\n padding: 4px 0 0;\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-style: italic;\n }\n\n \n\n .card-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n }\n\n \n\n .empty-state[_ngcontent-%COMP%] {\n padding: 80px 40px;\n text-align: center;\n }\n\n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-muted);\n margin: 0 0 8px 0;\n }\n\n .empty-hint[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n \n\n\n\n .slideout-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: _ngcontent-%COMP%_fadeInBackdrop 0.2s ease;\n }\n\n @keyframes _ngcontent-%COMP%_fadeInBackdrop {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .slideout-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -100%;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .slideout-panel.open[_ngcontent-%COMP%] {\n right: 0;\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n transition: background 0.2s;\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%]:active {\n background: color-mix(in srgb, var(--mj-brand-primary) 50%, transparent);\n }\n\n .slideout-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n\n .slideout-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .slideout-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .slideout-title-icon[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n }\n\n .slideout-title-text[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .slideout-close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n transition: all 0.15s ease;\n }\n\n .slideout-close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n }\n\n \n\n .slideout-type-toggle[_ngcontent-%COMP%] {\n display: flex;\n gap: 0;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .type-toggle-btn[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .type-toggle-btn[_ngcontent-%COMP%]:first-child {\n border-radius: 8px 0 0 8px;\n border-right: none;\n }\n\n .type-toggle-btn[_ngcontent-%COMP%]:last-child {\n border-radius: 0 8px 8px 0;\n }\n\n .type-toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .type-toggle-btn[_ngcontent-%COMP%]:hover:not(.active) {\n background: var(--mj-border-default);\n }\n\n \n\n .slideout-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 16px 24px 0;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 8px;\n color: var(--mj-status-error);\n font-size: 13px;\n flex-shrink: 0;\n }\n\n .slideout-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n \n\n .slideout-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .form-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n }\n\n .form-section-title[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.8px;\n margin-bottom: 14px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n }\n\n .form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 6px;\n }\n\n .form-required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .form-input[_ngcontent-%COMP%], \n .form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n transition: border-color 0.2s ease;\n outline: none;\n box-sizing: border-box;\n font-family: inherit;\n }\n\n .form-input[_ngcontent-%COMP%]:focus, \n .form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .form-input[_ngcontent-%COMP%]::placeholder, \n .form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .form-textarea[_ngcontent-%COMP%] {\n resize: vertical;\n min-height: 80px;\n }\n\n .form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n }\n\n .form-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n \n\n .slideout-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n }\n\n .slideout-footer[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n min-width: 100px;\n justify-content: center;\n }\n\n .slideout-footer[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n }\n\n \n\n mark.search-highlight {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface));\n color: inherit;\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: 700;\n }\n\n \n\n\n\n @media (max-width: 1200px) {\n .card-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n }\n\n @media (max-width: 600px) {\n .card-stats[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .slideout-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n }\n\n .slideout-resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .form-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n }"], changeDetection: 0 });
1677
1699
  }
1678
1700
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingExplorerComponent, [{
1679
1701
  type: Component,
@@ -1698,71 +1720,60 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1698
1720
  </mj-stat-badge>
1699
1721
  </div>
1700
1722
  <div actions>
1701
- <!-- Sort + Direction live in a popover instead of a chrome
1702
- toggle button so both dimensions surface together (was just
1703
- a direction toggle before; the field selection was buried
1704
- in code). Pattern matches AI Analytics → Model Performance
1705
- where SortBy lives alongside other filter dropdowns. -->
1706
- <mj-filter-popover
1707
- Label="Sort"
1708
- Icon="fa-solid fa-arrow-down-wide-short"
1709
- [ActiveCount]="ActiveSortFilterCount"
1710
- [ShowClearAll]="ActiveSortFilterCount > 0"
1711
- (ClearAllRequested)="resetSortFilters()">
1712
- <mj-filter-panel
1713
- [Fields]="sortFilterFields"
1714
- [Values]="sortFilterValues"
1715
- (ValuesChange)="onSortFilterChange($event)"
1716
- (Reset)="resetSortFilters()">
1717
- </mj-filter-panel>
1718
- </mj-filter-popover>
1719
- <mj-view-toggle
1720
- [Options]="HeaderViewOptions"
1721
- [ActiveKey]="ViewMode"
1722
- (KeyChange)="SetViewMode($any($event))">
1723
- </mj-view-toggle>
1724
1723
  <button mjButton variant="secondary" size="sm" (click)="OnNewSuite()">
1725
- <i class="fa-solid fa-folder-plus"></i> New Suite
1724
+ <i class="fa-solid fa-folder-plus"></i> <span class="action-btn-label">New Suite</span>
1726
1725
  </button>
1727
1726
  <button mjButton variant="primary" size="sm" (click)="OnNewTest()">
1728
- <i class="fa-solid fa-plus"></i> New Test
1727
+ <i class="fa-solid fa-plus"></i> <span class="action-btn-label">New Test</span>
1729
1728
  </button>
1730
1729
  </div>
1731
1730
  <div toolbar>
1731
+ <!-- Concise-chrome control bar: search · Filter · view, together.
1732
+ Search is persistent wayfinding (never a filter field); all
1733
+ filters live behind the one Filter button (docks as a bottom
1734
+ sheet on mobile); applied filters render as removable chips
1735
+ below the bar (see <mj-applied-filters>). -->
1732
1736
  <mj-page-search
1733
1737
  Placeholder="Search tests and suites..."
1734
1738
  [Value]="SearchTerm"
1735
1739
  (ValueChange)="OnSearchInputValue($event)">
1736
1740
  </mj-page-search>
1737
- @for (status of StatusOptions; track status) {
1738
- <mj-filter-chip
1739
- [Label]="status"
1740
- [Active]="IsStatusActive(status)"
1741
- (Clicked)="ToggleStatus(status)">
1742
- </mj-filter-chip>
1743
- }
1741
+ <mj-filter-popover
1742
+ Label="Filters"
1743
+ Icon="fa-solid fa-filter"
1744
+ [ActiveCount]="TotalActiveFilterCount"
1745
+ [ShowClearAll]="TotalActiveFilterCount > 0"
1746
+ (ClearAllRequested)="resetAllFilters()">
1747
+ <mj-filter-panel
1748
+ [Fields]="filterFields"
1749
+ [Values]="filterValues"
1750
+ (ValuesChange)="onFilterValuesChange($event)"
1751
+ (Reset)="resetAllFilters()">
1752
+ </mj-filter-panel>
1753
+ </mj-filter-popover>
1744
1754
  <mj-view-toggle
1745
- [Options]="DisplayModeOptions"
1746
- [ActiveKey]="DisplayMode"
1747
- (KeyChange)="SetDisplayMode($any($event))">
1755
+ [Options]="HeaderViewOptions"
1756
+ [ActiveKey]="ViewMode"
1757
+ (KeyChange)="SetViewMode($any($event))">
1748
1758
  </mj-view-toggle>
1749
1759
  </div>
1750
1760
  </mj-page-header>
1751
- <mj-page-body [Flex]="true" [Padding]="false">
1752
- <ng-container *ngTemplateOutlet="content"></ng-container>
1753
- </mj-page-body>
1761
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1754
1762
  </mj-page-layout>
1755
1763
  }
1756
1764
 
1757
1765
  <ng-template #content>
1758
- @if (IsLoading) {
1759
- <div class="explorer-loading">
1760
- <mj-loading text="Loading test explorer..."></mj-loading>
1761
- </div>
1762
- } @else {
1763
- <div class="explorer-layout">
1764
- <!-- Left rail -->
1766
+ <!-- Shared chrome primitives instead of bespoke wrappers: mj-page-body
1767
+ (row) is the rail+content layout, mj-page-body-interior is the
1768
+ scroller. Both reflow / scroll correctly on mobile. -->
1769
+ <mj-page-body [Flex]="true" [Padding]="false" Direction="row">
1770
+ @if (IsLoading) {
1771
+ <div class="explorer-loading">
1772
+ <mj-loading text="Loading test explorer..."></mj-loading>
1773
+ </div>
1774
+ } @else {
1765
1775
  <mj-left-nav
1776
+ MobileTitle="Browse Tests"
1766
1777
  [Sections]="NavSections"
1767
1778
  [ActiveId]="ActiveNavId"
1768
1779
  [ExpandedIds]="ExpandedNavIds"
@@ -1770,10 +1781,8 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1770
1781
  (ItemToggled)="OnNavItemToggled($event)">
1771
1782
  </mj-left-nav>
1772
1783
 
1773
- <!-- Main Content -->
1774
1784
  <mj-left-nav-content>
1775
- <!-- Content Area -->
1776
- <div class="content-area">
1785
+ <mj-page-body-interior>
1777
1786
  <!-- Suites Section -->
1778
1787
  @if (DisplayMode === 'all' || DisplayMode === 'suites') {
1779
1788
  @if (FilteredSuites.length > 0) {
@@ -1961,10 +1970,9 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1961
1970
  <span class="empty-hint">Try adjusting your search or filters.</span>
1962
1971
  </div>
1963
1972
  }
1964
- </div>
1973
+ </mj-page-body-interior>
1965
1974
  </mj-left-nav-content>
1966
- </div>
1967
- }
1975
+ }
1968
1976
 
1969
1977
  <!-- Slideout Backdrop -->
1970
1978
  @if (SlideoutOpen) {
@@ -2150,10 +2158,11 @@ export class TestingExplorerComponent extends BaseAngularComponent {
2150
2158
  </app-test-run-dialog>
2151
2159
  </mj-slide-panel>
2152
2160
  }
2161
+ </mj-page-body>
2153
2162
  </ng-template>
2154
- `, styles: ["\n /* ==========================================\n Testing Explorer Component\n ========================================== */\n\n :host {\n display: block;\n height: 100%;\n width: 100%;\n }\n\n /* Loading */\n .explorer-loading {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-height: 400px;\n background: var(--mj-bg-surface-sunken);\n }\n\n /* Layout */\n .explorer-layout {\n display: flex;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n }\n\n /* ==========================================\n Main Content\n \u2014 left rail + content pane handled by <mj-left-nav> + <mj-left-nav-content>\n ========================================== */\n\n /* Buttons */\n .btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 9px 16px;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .btn-primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .btn-secondary {\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n }\n\n .btn-secondary:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-sm {\n padding: 6px 12px;\n font-size: 12px;\n }\n\n /* Content Area */\n .content-area {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n .content-section {\n margin-bottom: 32px;\n }\n\n .section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n .section-count {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n /* Card Grid */\n .card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));\n gap: 16px;\n }\n\n /* Suite Card */\n .suite-card,\n .test-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n transition: all 0.2s ease;\n }\n\n .suite-card:hover,\n .test-card:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n box-shadow: var(--mj-shadow-md);\n }\n\n .card-header {\n padding: 16px 16px 12px;\n }\n\n .card-title-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n }\n\n .card-icon {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .suite-icon {\n color: var(--mj-brand-primary);\n }\n\n .test-icon {\n color: var(--mj-brand-primary);\n }\n\n .card-name {\n flex: 1;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .status-badge {\n font-size: 10px;\n font-weight: 700;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n flex-shrink: 0;\n }\n\n .status-badge[data-status=\"active\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge[data-status=\"pending\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-badge[data-status=\"disabled\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .card-subtitle {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n }\n\n .dot-sep {\n display: inline-block;\n width: 3px;\n height: 3px;\n background: var(--mj-text-disabled);\n border-radius: 50%;\n vertical-align: middle;\n margin: 0 6px;\n }\n\n .card-description {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta-row {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 8px;\n }\n\n .meta-item {\n font-size: 11px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .meta-item i {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n .card-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 8px;\n }\n\n .tag {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: 4px;\n }\n\n .tag-more {\n background: var(--mj-border-default);\n color: var(--mj-text-disabled);\n }\n\n /* Card Stats */\n .card-stats {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 1px;\n background: var(--mj-border-default);\n border-top: 1px solid var(--mj-border-default);\n }\n\n .stat {\n background: var(--mj-bg-surface-card);\n padding: 10px 12px;\n text-align: center;\n }\n\n .stat-label {\n display: block;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 2px;\n }\n\n .stat-value {\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .stat-value.good { color: var(--mj-status-success); }\n .stat-value.warn { color: var(--mj-status-warning); }\n .stat-value.bad { color: var(--mj-status-error); }\n\n .status-text[data-status=\"passed\"] { color: var(--mj-status-success); }\n .status-text[data-status=\"failed\"] { color: var(--mj-status-error); }\n .status-text[data-status=\"error\"] { color: var(--mj-status-warning); }\n .status-text[data-status=\"running\"] { color: var(--mj-brand-primary); }\n .status-text[data-status=\"pending\"] { color: var(--mj-status-warning); }\n .status-text[data-status=\"skipped\"] { color: var(--mj-text-muted); }\n\n /* Suite Tests Preview */\n .card-tests-preview {\n padding: 10px 16px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n .preview-test-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n font-size: 12px;\n }\n\n .preview-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .preview-dot[data-status=\"passed\"] { background: var(--mj-status-success); }\n .preview-dot[data-status=\"failed\"] { background: var(--mj-status-error); }\n .preview-dot[data-status=\"error\"] { background: var(--mj-status-warning); }\n .preview-dot[data-status=\"running\"] { background: var(--mj-brand-primary); }\n .preview-dot[data-status=\"\"] { background: var(--mj-text-disabled); }\n\n .preview-test-name {\n flex: 1;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .preview-score {\n font-weight: 600;\n font-size: 11px;\n min-width: 32px;\n text-align: right;\n }\n\n .preview-score.good { color: var(--mj-status-success); }\n .preview-score.warn { color: var(--mj-status-warning); }\n .preview-score.bad { color: var(--mj-status-error); }\n\n .preview-bar {\n width: 48px;\n height: 4px;\n background: var(--mj-border-default);\n border-radius: 2px;\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .preview-bar-fill {\n height: 100%;\n border-radius: 2px;\n transition: width 0.3s ease;\n }\n\n .good-bg { background: var(--mj-status-success); }\n .warn-bg { background: var(--mj-status-warning); }\n .bad-bg { background: var(--mj-status-error); }\n\n .preview-status {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n min-width: 44px;\n text-align: right;\n }\n\n .preview-status[data-status=\"passed\"] { color: var(--mj-status-success); }\n .preview-status[data-status=\"failed\"] { color: var(--mj-status-error); }\n .preview-status[data-status=\"error\"] { color: var(--mj-status-warning); }\n .preview-status[data-status=\"\"] { color: var(--mj-text-disabled); }\n\n .preview-more {\n padding: 4px 0 0;\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-style: italic;\n }\n\n /* Card Actions */\n .card-actions {\n display: flex;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n }\n\n /* Empty State */\n .empty-state {\n padding: 80px 40px;\n text-align: center;\n }\n\n .empty-state i {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n }\n\n .empty-state p {\n font-size: 16px;\n color: var(--mj-text-muted);\n margin: 0 0 8px 0;\n }\n\n .empty-hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n /* ==========================================\n Slideout Panel\n ========================================== */\n .slideout-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeInBackdrop 0.2s ease;\n }\n\n @keyframes fadeInBackdrop {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .slideout-panel {\n position: fixed;\n top: 0;\n right: -100%;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .slideout-panel.open {\n right: 0;\n }\n\n .slideout-resize-handle {\n position: absolute;\n top: 0;\n left: 0;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n transition: background 0.2s;\n }\n\n .slideout-resize-handle:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n\n .slideout-resize-handle:active {\n background: color-mix(in srgb, var(--mj-brand-primary) 50%, transparent);\n }\n\n .slideout-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n\n .slideout-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .slideout-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .slideout-title-icon {\n font-size: 18px;\n color: var(--mj-brand-primary);\n }\n\n .slideout-title-text {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .slideout-close-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n transition: all 0.15s ease;\n }\n\n .slideout-close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n }\n\n /* Type Toggle */\n .slideout-type-toggle {\n display: flex;\n gap: 0;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .type-toggle-btn {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .type-toggle-btn:first-child {\n border-radius: 8px 0 0 8px;\n border-right: none;\n }\n\n .type-toggle-btn:last-child {\n border-radius: 0 8px 8px 0;\n }\n\n .type-toggle-btn.active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .type-toggle-btn:hover:not(.active) {\n background: var(--mj-border-default);\n }\n\n /* Error Banner */\n .slideout-error {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 16px 24px 0;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 8px;\n color: var(--mj-status-error);\n font-size: 13px;\n flex-shrink: 0;\n }\n\n .slideout-error i {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n /* Slideout Body */\n .slideout-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .form-section {\n margin-bottom: 24px;\n }\n\n .form-section-title {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.8px;\n margin-bottom: 14px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .form-group {\n margin-bottom: 16px;\n }\n\n .form-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 6px;\n }\n\n .form-required {\n color: var(--mj-status-error);\n }\n\n .form-input,\n .form-textarea {\n width: 100%;\n padding: 10px 14px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n transition: border-color 0.2s ease;\n outline: none;\n box-sizing: border-box;\n font-family: inherit;\n }\n\n .form-input:focus,\n .form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .form-input::placeholder,\n .form-textarea::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .form-textarea {\n resize: vertical;\n min-height: 80px;\n }\n\n .form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n }\n\n .form-hint {\n display: block;\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n /* Slideout Footer */\n .slideout-footer {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n }\n\n .slideout-footer .btn {\n min-width: 100px;\n justify-content: center;\n }\n\n .slideout-footer .btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n }\n\n /* Search Highlight */\n ::ng-deep mark.search-highlight {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface));\n color: inherit;\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: 700;\n }\n\n /* ==========================================\n Responsive\n ========================================== */\n @media (max-width: 1200px) {\n .card-grid {\n grid-template-columns: 1fr;\n }\n }\n\n @media (max-width: 600px) {\n .content-area {\n padding: 16px;\n }\n\n .card-stats {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .slideout-panel {\n width: 100% !important;\n }\n\n .slideout-resize-handle {\n display: none;\n }\n\n .form-row {\n grid-template-columns: 1fr;\n }\n }\n "] }]
2163
+ `, styles: ["\n /* ==========================================\n Testing Explorer Component\n ========================================== */\n\n :host {\n display: block;\n height: 100%;\n width: 100%;\n }\n\n /* Loading */\n .explorer-loading {\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-height: 400px;\n background: var(--mj-bg-surface-sunken);\n }\n\n /* The rail + content layout is the shared <mj-page-body Direction=\"row\">\n (it reflows to a column on mobile) and the scroller is the shared\n <mj-page-body-interior> \u2014 no bespoke .explorer-layout / .content-area. */\n\n /* Mobile search-grow + icon-only action buttons are handled by the shared\n <mj-page-header> rules (action-btn-label + toolbar search-grow). */\n\n /* ==========================================\n Main Content\n \u2014 left rail + content pane handled by <mj-left-nav> + <mj-left-nav-content>\n ========================================== */\n\n /* Buttons */\n .btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 9px 16px;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n\n .btn-primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .btn-secondary {\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n }\n\n .btn-secondary:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-sm {\n padding: 6px 12px;\n font-size: 12px;\n }\n\n .content-section {\n margin-bottom: 32px;\n }\n\n .section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n .section-count {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n /* Card Grid */\n .card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));\n gap: 16px;\n }\n\n /* Suite Card */\n .suite-card,\n .test-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n overflow: hidden;\n transition: all 0.2s ease;\n }\n\n .suite-card:hover,\n .test-card:hover {\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n box-shadow: var(--mj-shadow-md);\n }\n\n .card-header {\n padding: 16px 16px 12px;\n }\n\n .card-title-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n }\n\n .card-icon {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .suite-icon {\n color: var(--mj-brand-primary);\n }\n\n .test-icon {\n color: var(--mj-brand-primary);\n }\n\n .card-name {\n flex: 1;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .status-badge {\n font-size: 10px;\n font-weight: 700;\n padding: 3px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n flex-shrink: 0;\n }\n\n .status-badge[data-status=\"active\"] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n .status-badge[data-status=\"pending\"] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n }\n\n .status-badge[data-status=\"disabled\"] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .card-subtitle {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-bottom: 6px;\n }\n\n .dot-sep {\n display: inline-block;\n width: 3px;\n height: 3px;\n background: var(--mj-text-disabled);\n border-radius: 50%;\n vertical-align: middle;\n margin: 0 6px;\n }\n\n .card-description {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta-row {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 8px;\n }\n\n .meta-item {\n font-size: 11px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .meta-item i {\n font-size: 10px;\n color: var(--mj-text-disabled);\n }\n\n .card-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 8px;\n }\n\n .tag {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border-radius: 4px;\n }\n\n .tag-more {\n background: var(--mj-border-default);\n color: var(--mj-text-disabled);\n }\n\n /* Card Stats */\n .card-stats {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 1px;\n background: var(--mj-border-default);\n border-top: 1px solid var(--mj-border-default);\n }\n\n .stat {\n background: var(--mj-bg-surface-card);\n padding: 10px 12px;\n text-align: center;\n }\n\n .stat-label {\n display: block;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-bottom: 2px;\n }\n\n .stat-value {\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .stat-value.good { color: var(--mj-status-success); }\n .stat-value.warn { color: var(--mj-status-warning); }\n .stat-value.bad { color: var(--mj-status-error); }\n\n .status-text[data-status=\"passed\"] { color: var(--mj-status-success); }\n .status-text[data-status=\"failed\"] { color: var(--mj-status-error); }\n .status-text[data-status=\"error\"] { color: var(--mj-status-warning); }\n .status-text[data-status=\"running\"] { color: var(--mj-brand-primary); }\n .status-text[data-status=\"pending\"] { color: var(--mj-status-warning); }\n .status-text[data-status=\"skipped\"] { color: var(--mj-text-muted); }\n\n /* Suite Tests Preview */\n .card-tests-preview {\n padding: 10px 16px;\n border-top: 1px solid var(--mj-border-default);\n }\n\n .preview-test-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n font-size: 12px;\n }\n\n .preview-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .preview-dot[data-status=\"passed\"] { background: var(--mj-status-success); }\n .preview-dot[data-status=\"failed\"] { background: var(--mj-status-error); }\n .preview-dot[data-status=\"error\"] { background: var(--mj-status-warning); }\n .preview-dot[data-status=\"running\"] { background: var(--mj-brand-primary); }\n .preview-dot[data-status=\"\"] { background: var(--mj-text-disabled); }\n\n .preview-test-name {\n flex: 1;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .preview-score {\n font-weight: 600;\n font-size: 11px;\n min-width: 32px;\n text-align: right;\n }\n\n .preview-score.good { color: var(--mj-status-success); }\n .preview-score.warn { color: var(--mj-status-warning); }\n .preview-score.bad { color: var(--mj-status-error); }\n\n .preview-bar {\n width: 48px;\n height: 4px;\n background: var(--mj-border-default);\n border-radius: 2px;\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .preview-bar-fill {\n height: 100%;\n border-radius: 2px;\n transition: width 0.3s ease;\n }\n\n .good-bg { background: var(--mj-status-success); }\n .warn-bg { background: var(--mj-status-warning); }\n .bad-bg { background: var(--mj-status-error); }\n\n .preview-status {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n min-width: 44px;\n text-align: right;\n }\n\n .preview-status[data-status=\"passed\"] { color: var(--mj-status-success); }\n .preview-status[data-status=\"failed\"] { color: var(--mj-status-error); }\n .preview-status[data-status=\"error\"] { color: var(--mj-status-warning); }\n .preview-status[data-status=\"\"] { color: var(--mj-text-disabled); }\n\n .preview-more {\n padding: 4px 0 0;\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-style: italic;\n }\n\n /* Card Actions */\n .card-actions {\n display: flex;\n gap: 8px;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n }\n\n /* Empty State */\n .empty-state {\n padding: 80px 40px;\n text-align: center;\n }\n\n .empty-state i {\n font-size: 48px;\n color: var(--mj-text-disabled);\n margin-bottom: 16px;\n }\n\n .empty-state p {\n font-size: 16px;\n color: var(--mj-text-muted);\n margin: 0 0 8px 0;\n }\n\n .empty-hint {\n font-size: 13px;\n color: var(--mj-text-disabled);\n }\n\n /* ==========================================\n Slideout Panel\n ========================================== */\n .slideout-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 999;\n animation: fadeInBackdrop 0.2s ease;\n }\n\n @keyframes fadeInBackdrop {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .slideout-panel {\n position: fixed;\n top: 0;\n right: -100%;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .slideout-panel.open {\n right: 0;\n }\n\n .slideout-resize-handle {\n position: absolute;\n top: 0;\n left: 0;\n width: 5px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n transition: background 0.2s;\n }\n\n .slideout-resize-handle:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n\n .slideout-resize-handle:active {\n background: color-mix(in srgb, var(--mj-brand-primary) 50%, transparent);\n }\n\n .slideout-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n }\n\n .slideout-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .slideout-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .slideout-title-icon {\n font-size: 18px;\n color: var(--mj-brand-primary);\n }\n\n .slideout-title-text {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .slideout-close-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 14px;\n transition: all 0.15s ease;\n }\n\n .slideout-close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n }\n\n /* Type Toggle */\n .slideout-type-toggle {\n display: flex;\n gap: 0;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .type-toggle-btn {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .type-toggle-btn:first-child {\n border-radius: 8px 0 0 8px;\n border-right: none;\n }\n\n .type-toggle-btn:last-child {\n border-radius: 0 8px 8px 0;\n }\n\n .type-toggle-btn.active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .type-toggle-btn:hover:not(.active) {\n background: var(--mj-border-default);\n }\n\n /* Error Banner */\n .slideout-error {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 16px 24px 0;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 8px;\n color: var(--mj-status-error);\n font-size: 13px;\n flex-shrink: 0;\n }\n\n .slideout-error i {\n font-size: 14px;\n flex-shrink: 0;\n }\n\n /* Slideout Body */\n .slideout-body {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n .form-section {\n margin-bottom: 24px;\n }\n\n .form-section-title {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.8px;\n margin-bottom: 14px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .form-group {\n margin-bottom: 16px;\n }\n\n .form-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 6px;\n }\n\n .form-required {\n color: var(--mj-status-error);\n }\n\n .form-input,\n .form-textarea {\n width: 100%;\n padding: 10px 14px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-primary);\n transition: border-color 0.2s ease;\n outline: none;\n box-sizing: border-box;\n font-family: inherit;\n }\n\n .form-input:focus,\n .form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .form-input::placeholder,\n .form-textarea::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .form-textarea {\n resize: vertical;\n min-height: 80px;\n }\n\n .form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n }\n\n .form-hint {\n display: block;\n font-size: 11px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n }\n\n /* Slideout Footer */\n .slideout-footer {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 16px 24px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n }\n\n .slideout-footer .btn {\n min-width: 100px;\n justify-content: center;\n }\n\n .slideout-footer .btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n box-shadow: none;\n }\n\n /* Search Highlight */\n ::ng-deep mark.search-highlight {\n background: color-mix(in srgb, var(--mj-status-warning) 20%, var(--mj-bg-surface));\n color: inherit;\n padding: 1px 2px;\n border-radius: 2px;\n font-weight: 700;\n }\n\n /* ==========================================\n Responsive\n ========================================== */\n @media (max-width: 1200px) {\n .card-grid {\n grid-template-columns: 1fr;\n }\n }\n\n @media (max-width: 600px) {\n .card-stats {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .slideout-panel {\n width: 100% !important;\n }\n\n .slideout-resize-handle {\n display: none;\n }\n\n .form-row {\n grid-template-columns: 1fr;\n }\n }\n "] }]
2155
2164
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i1.TestingDialogService }, { type: i2.TestingInstrumentationService }], { HideToolbar: [{
2156
2165
  type: Input
2157
2166
  }] }); })();
2158
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingExplorerComponent, { className: "TestingExplorerComponent", filePath: "src/Testing/components/testing-explorer.component.ts", lineNumber: 1315 }); })();
2167
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingExplorerComponent, { className: "TestingExplorerComponent", filePath: "src/Testing/components/testing-explorer.component.ts", lineNumber: 1291 }); })();
2159
2168
  //# sourceMappingURL=testing-explorer.component.js.map