@memberjunction/ng-dashboards 5.34.1 → 5.36.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 (407) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  40. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
  41. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  44. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  45. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  46. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  47. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  48. package/dist/AI/components/models/model-management.component.js +370 -425
  49. package/dist/AI/components/models/model-management.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  51. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  52. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  53. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  55. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  56. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  57. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  59. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  60. package/dist/AI/components/system/system-configuration.component.js +403 -362
  61. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  62. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  63. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
  65. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  66. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  67. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  69. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  70. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  71. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  72. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  73. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  74. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  75. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  76. package/dist/Actions/components/actions-overview.component.js +202 -158
  77. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  78. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  79. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  80. package/dist/Actions/components/execution-monitoring.component.js +191 -142
  81. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  82. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  83. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  84. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  85. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  86. package/dist/Actions/components/explorer/index.d.ts +0 -1
  87. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  88. package/dist/Actions/components/explorer/index.js +0 -1
  89. package/dist/Actions/components/explorer/index.js.map +1 -1
  90. package/dist/Admin/admin-data-schema.component.js +19 -79
  91. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  92. package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
  93. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  94. package/dist/Admin/admin-identity-access.component.js +19 -79
  95. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  96. package/dist/Admin/admin-monitoring.component.js +19 -79
  97. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  98. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  99. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  100. package/dist/Admin/base-admin-container.component.js +26 -17
  101. package/dist/Admin/base-admin-container.component.js.map +1 -1
  102. package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
  103. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  104. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  105. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  106. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  107. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  108. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  109. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  110. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  111. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  112. package/dist/Communication/communication-logs-resource.component.js +80 -99
  113. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  115. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  116. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  117. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  118. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  119. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  120. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  121. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  122. package/dist/Communication/communication-providers-resource.component.js +44 -45
  123. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  124. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  125. package/dist/Communication/communication-runs-resource.component.js +60 -58
  126. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  127. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  128. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  129. package/dist/Communication/communication-templates-resource.component.js +139 -162
  130. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  131. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  132. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  133. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  134. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  135. package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
  136. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  137. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  138. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  139. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  140. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  141. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  142. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  143. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  144. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  145. package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
  146. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  147. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  148. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  149. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
  150. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  151. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  152. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  153. package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
  154. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  155. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  156. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  157. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
  158. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  159. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  160. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  161. package/dist/DevTools/app-state-inspector.component.js +46 -72
  162. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  163. package/dist/DevTools/class-registry.component.js +88 -100
  164. package/dist/DevTools/class-registry.component.js.map +1 -1
  165. package/dist/DevTools/event-monitor.component.js +158 -168
  166. package/dist/DevTools/event-monitor.component.js.map +1 -1
  167. package/dist/DevTools/graphql-console.component.js +257 -264
  168. package/dist/DevTools/graphql-console.component.js.map +1 -1
  169. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  170. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  171. package/dist/DevTools/layout-inspector.component.js +46 -64
  172. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  173. package/dist/DevTools/lazy-module-status.component.js +75 -84
  174. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  175. package/dist/DevTools/settings-explorer.component.js +76 -85
  176. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  177. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  178. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  179. package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
  180. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  181. package/dist/Home/home-dashboard.component.d.ts +6 -0
  182. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  183. package/dist/Home/home-dashboard.component.js +521 -485
  184. package/dist/Home/home-dashboard.component.js.map +1 -1
  185. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  186. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  187. package/dist/Integration/components/activity/activity.component.js +307 -318
  188. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  189. package/dist/Integration/components/connections/connections.component.js +654 -648
  190. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  191. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  192. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  193. package/dist/Integration/components/overview/overview.component.js +182 -163
  194. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  195. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  196. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  197. package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
  198. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  199. package/dist/Integration/components/schedules/schedules.component.js +230 -241
  200. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  201. package/dist/Integration/integration.module.d.ts +1 -1
  202. package/dist/Integration/integration.module.d.ts.map +1 -1
  203. package/dist/Integration/integration.module.js +28 -1
  204. package/dist/Integration/integration.module.js.map +1 -1
  205. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  206. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  207. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
  208. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  209. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  210. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  211. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  212. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  213. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
  214. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  215. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  216. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  217. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  218. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  219. package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
  220. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  221. package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
  222. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  223. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  224. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  225. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  226. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  227. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  228. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  229. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  230. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  231. package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
  232. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  233. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  234. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  235. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  236. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  237. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  238. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  239. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  240. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  241. package/dist/Lists/index.d.ts +1 -0
  242. package/dist/Lists/index.d.ts.map +1 -1
  243. package/dist/Lists/index.js +1 -0
  244. package/dist/Lists/index.js.map +1 -1
  245. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  246. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  247. package/dist/Lists/services/list-set-operations.service.js +236 -10
  248. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  249. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  250. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  251. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  252. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  253. package/dist/MCP/mcp.module.d.ts +1 -1
  254. package/dist/MCP/mcp.module.d.ts.map +1 -1
  255. package/dist/MCP/mcp.module.js +34 -1
  256. package/dist/MCP/mcp.module.js.map +1 -1
  257. package/dist/Permissions/audit-log-resource.component.js +76 -85
  258. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  259. package/dist/Permissions/resource-access-resource.component.js +64 -69
  260. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  261. package/dist/Permissions/user-access-resource.component.js +63 -74
  262. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  264. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  266. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  267. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  268. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  270. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  271. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  272. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  273. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  274. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  275. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  276. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  277. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  278. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  279. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  280. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  281. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  282. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  283. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  284. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  285. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  286. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  287. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  288. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  289. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  290. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  291. package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
  292. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  293. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  294. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  295. package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
  296. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  297. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  298. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  300. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  301. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  302. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  303. package/dist/Testing/components/testing-analytics.component.js +420 -393
  304. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  305. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  306. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  307. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  308. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  309. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  310. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  311. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  312. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  313. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  314. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  315. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  316. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  317. package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
  318. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  319. package/dist/Testing/components/testing-explorer.component.js +679 -786
  320. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  321. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  322. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  323. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  324. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  325. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  326. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  327. package/dist/Testing/components/testing-review.component.js +310 -274
  328. package/dist/Testing/components/testing-review.component.js.map +1 -1
  329. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  330. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  331. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  332. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  333. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  334. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  335. package/dist/Testing/components/testing-runs.component.js +307 -273
  336. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  337. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  338. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  339. package/dist/Testing/testing-dashboard.component.js +114 -99
  340. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  341. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  342. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  343. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  344. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  345. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  346. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  347. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  348. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  349. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  350. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  351. package/dist/actions-dashboards.module.d.ts +15 -16
  352. package/dist/actions-dashboards.module.d.ts.map +1 -1
  353. package/dist/actions-dashboards.module.js +34 -11
  354. package/dist/actions-dashboards.module.js.map +1 -1
  355. package/dist/ai-dashboards.module.d.ts +45 -48
  356. package/dist/ai-dashboards.module.d.ts.map +1 -1
  357. package/dist/ai-dashboards.module.js +51 -10
  358. package/dist/ai-dashboards.module.js.map +1 -1
  359. package/dist/archiving-dashboards.module.d.ts +2 -1
  360. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  361. package/dist/archiving-dashboards.module.js +12 -2
  362. package/dist/archiving-dashboards.module.js.map +1 -1
  363. package/dist/communication-dashboards.module.d.ts +9 -6
  364. package/dist/communication-dashboards.module.d.ts.map +1 -1
  365. package/dist/communication-dashboards.module.js +37 -7
  366. package/dist/communication-dashboards.module.js.map +1 -1
  367. package/dist/core-dashboards.module.d.ts +1 -1
  368. package/dist/core-dashboards.module.d.ts.map +1 -1
  369. package/dist/core-dashboards.module.js +46 -1
  370. package/dist/core-dashboards.module.js.map +1 -1
  371. package/dist/credentials-dashboards.module.d.ts +1 -1
  372. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  373. package/dist/credentials-dashboards.module.js +28 -1
  374. package/dist/credentials-dashboards.module.js.map +1 -1
  375. package/dist/lists-dashboards.module.d.ts +10 -9
  376. package/dist/lists-dashboards.module.d.ts.map +1 -1
  377. package/dist/lists-dashboards.module.js +40 -2
  378. package/dist/lists-dashboards.module.js.map +1 -1
  379. package/dist/public-api.d.ts +3 -2
  380. package/dist/public-api.d.ts.map +1 -1
  381. package/dist/public-api.js +4 -3
  382. package/dist/public-api.js.map +1 -1
  383. package/dist/scheduling-dashboards.module.d.ts +1 -1
  384. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  385. package/dist/scheduling-dashboards.module.js +31 -1
  386. package/dist/scheduling-dashboards.module.js.map +1 -1
  387. package/dist/testing-dashboards.module.d.ts +8 -7
  388. package/dist/testing-dashboards.module.d.ts.map +1 -1
  389. package/dist/testing-dashboards.module.js +42 -0
  390. package/dist/testing-dashboards.module.js.map +1 -1
  391. package/package.json +53 -52
  392. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  393. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  394. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  395. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  396. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  397. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  398. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  399. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  400. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  401. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  402. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  403. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  404. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  405. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  406. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  407. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
2
  import { Subject, BehaviorSubject, combineLatest } from 'rxjs';
3
3
  import { takeUntil, debounceTime } from 'rxjs/operators';
4
4
  import { RunView, CompositeKey } from '@memberjunction/core';
@@ -12,876 +12,707 @@ import * as i1 from "@memberjunction/ng-testing";
12
12
  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
- import * as i5 from "@memberjunction/ng-versions";
16
- import * as i6 from "@memberjunction/ng-shared-generic";
17
- import * as i7 from "../../shared/pipes/highlight-search.pipe";
18
- const _c0 = a0 => ({ node: a0, depth: 0 });
19
- const _c1 = (a0, a1) => ({ node: a0, depth: a1 });
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";
20
19
  const _forTrack0 = ($index, $item) => $item.ID;
21
20
  const _forTrack1 = ($index, $item) => $item.TestID;
22
- function TestingExplorerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "div", 1);
24
- i0.ɵɵelement(1, "mj-loading", 8);
25
- i0.ɵɵelementEnd();
26
- } }
27
- function TestingExplorerComponent_Conditional_1_Conditional_7_For_20_ng_container_0_Template(rf, ctx) { if (rf & 1) {
21
+ function TestingExplorerComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
28
22
  i0.ɵɵelementContainer(0);
29
23
  } }
30
- function TestingExplorerComponent_Conditional_1_Conditional_7_For_20_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵtemplate(0, TestingExplorerComponent_Conditional_1_Conditional_7_For_20_ng_container_0_Template, 1, 0, "ng-container", 50);
24
+ function TestingExplorerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵtemplate(0, TestingExplorerComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 1);
32
26
  } if (rf & 2) {
33
- const node_r5 = ctx.$implicit;
34
- i0.ɵɵnextContext(3);
35
- const suiteTreeTpl_r6 = i0.ɵɵreference(3);
36
- i0.ɵɵproperty("ngTemplateOutlet", suiteTreeTpl_r6)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, node_r5));
37
- } }
38
- function TestingExplorerComponent_Conditional_1_Conditional_7_Conditional_21_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "div", 48);
40
- i0.ɵɵtext(1, "No suites found");
41
- i0.ɵɵelementEnd();
27
+ i0.ɵɵnextContext();
28
+ const content_r1 = i0.ɵɵreference(3);
29
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
42
30
  } }
43
- function TestingExplorerComponent_Conditional_1_Conditional_7_For_26_Template(rf, ctx) { if (rf & 1) {
44
- const _r7 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "div", 44);
46
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_7_For_26_Template_div_click_0_listener() { const tt_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "testType", ID: tt_r8.ID })); });
47
- i0.ɵɵelement(1, "i", 51);
48
- i0.ɵɵelementStart(2, "span");
49
- i0.ɵɵtext(3);
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)); });
50
35
  i0.ɵɵelementEnd();
51
- i0.ɵɵelementStart(4, "span", 46);
52
- i0.ɵɵtext(5);
53
- i0.ɵɵelementEnd()();
54
36
  } if (rf & 2) {
55
- const tt_r8 = ctx.$implicit;
56
- const ctx_r2 = i0.ɵɵnextContext(3);
57
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "testType" && ctx_r2.IsSidebarSelected(tt_r8.ID));
58
- i0.ɵɵadvance(3);
59
- i0.ɵɵtextInterpolate(tt_r8.Name);
60
- i0.ɵɵadvance(2);
61
- i0.ɵɵtextInterpolate(ctx_r2.GetTestCountForType(tt_r8.ID));
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));
62
40
  } }
63
- function TestingExplorerComponent_Conditional_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
64
- const _r4 = i0.ɵɵgetCurrentView();
65
- i0.ɵɵelementStart(0, "div", 13)(1, "div", 42)(2, "div", 43);
66
- i0.ɵɵtext(3, "Browse");
67
- i0.ɵɵelementEnd();
68
- i0.ɵɵelementStart(4, "div", 44);
69
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_7_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "all", ID: null })); });
70
- i0.ɵɵelement(5, "i", 45);
71
- i0.ɵɵelementStart(6, "span");
72
- i0.ɵɵtext(7, "All Items");
41
+ function TestingExplorerComponent_Conditional_1_ng_container_20_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementContainer(0);
43
+ } }
44
+ function TestingExplorerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
45
+ const _r2 = i0.ɵɵgetCurrentView();
46
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2)(2, "div", 3);
47
+ i0.ɵɵelement(3, "mj-stat-badge", 4);
73
48
  i0.ɵɵelementEnd();
74
- i0.ɵɵelementStart(8, "span", 46);
75
- i0.ɵɵtext(9);
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()); });
76
53
  i0.ɵɵelementEnd()();
77
- i0.ɵɵelementStart(10, "div", 44);
78
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_7_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "standalone", ID: null })); });
79
- i0.ɵɵelement(11, "i", 47);
80
- i0.ɵɵelementStart(12, "span");
81
- i0.ɵɵtext(13, "Standalone Tests");
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 ");
61
+ 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 ");
66
+ 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)); });
82
69
  i0.ɵɵelementEnd();
83
- i0.ɵɵelementStart(14, "span", 46);
84
- i0.ɵɵtext(15);
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)); });
85
73
  i0.ɵɵelementEnd()()();
86
- i0.ɵɵelementStart(16, "div", 42)(17, "div", 43);
87
- i0.ɵɵtext(18, "Test Suites");
88
- i0.ɵɵelementEnd();
89
- i0.ɵɵrepeaterCreate(19, TestingExplorerComponent_Conditional_1_Conditional_7_For_20_Template, 1, 4, "ng-container", null, _forTrack0);
90
- i0.ɵɵconditionalCreate(21, TestingExplorerComponent_Conditional_1_Conditional_7_Conditional_21_Template, 2, 0, "div", 48);
91
- i0.ɵɵelementEnd();
92
- i0.ɵɵelementStart(22, "div", 42)(23, "div", 43);
93
- i0.ɵɵtext(24, "Test Types");
94
- i0.ɵɵelementEnd();
95
- i0.ɵɵrepeaterCreate(25, TestingExplorerComponent_Conditional_1_Conditional_7_For_26_Template, 6, 4, "div", 49, _forTrack0);
74
+ i0.ɵɵelementStart(19, "mj-page-body", 16);
75
+ i0.ɵɵtemplate(20, TestingExplorerComponent_Conditional_1_ng_container_20_Template, 1, 0, "ng-container", 1);
96
76
  i0.ɵɵelementEnd()();
97
77
  } if (rf & 2) {
98
- const ctx_r2 = i0.ɵɵnextContext(2);
99
- i0.ɵɵadvance(4);
100
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "all");
101
- i0.ɵɵadvance(5);
102
- i0.ɵɵtextInterpolate(ctx_r2.TotalItemCount);
78
+ const ctx_r2 = i0.ɵɵnextContext();
79
+ const content_r1 = i0.ɵɵreference(3);
80
+ i0.ɵɵadvance(3);
81
+ 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);
103
84
  i0.ɵɵadvance();
104
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "standalone");
105
- i0.ɵɵadvance(5);
106
- i0.ɵɵtextInterpolate(ctx_r2.StandaloneTestCount);
107
- i0.ɵɵadvance(4);
108
- i0.ɵɵrepeater(ctx_r2.FilteredSuiteTree);
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);
89
+ i0.ɵɵproperty("Value", ctx_r2.SearchTerm);
90
+ i0.ɵɵadvance();
91
+ i0.ɵɵrepeater(ctx_r2.StatusOptions);
109
92
  i0.ɵɵadvance(2);
110
- i0.ɵɵconditional(ctx_r2.FilteredSuiteTree.length === 0 ? 21 : -1);
111
- i0.ɵɵadvance(4);
112
- i0.ɵɵrepeater(ctx_r2.FilteredTestTypes);
93
+ i0.ɵɵproperty("Options", ctx_r2.DisplayModeOptions)("ActiveKey", ctx_r2.DisplayMode);
94
+ i0.ɵɵadvance();
95
+ i0.ɵɵproperty("Flex", true)("Padding", false);
96
+ i0.ɵɵadvance();
97
+ i0.ɵɵproperty("ngTemplateOutlet", content_r1);
113
98
  } }
114
- function TestingExplorerComponent_Conditional_1_Conditional_14_Template(rf, ctx) { if (rf & 1) {
115
- const _r9 = i0.ɵɵgetCurrentView();
116
- i0.ɵɵelementStart(0, "button", 52);
117
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ClearSearch()); });
118
- i0.ɵɵelement(1, "i", 53);
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);
119
102
  i0.ɵɵelementEnd();
120
103
  } }
121
- function TestingExplorerComponent_Conditional_1_For_17_Template(rf, ctx) { if (rf & 1) {
122
- const _r10 = i0.ɵɵgetCurrentView();
123
- i0.ɵɵelementStart(0, "button", 54);
124
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_For_17_Template_button_click_0_listener() { const status_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ToggleStatus(status_r11)); });
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);
125
106
  i0.ɵɵtext(1);
126
- i0.ɵɵelementEnd();
127
107
  } if (rf & 2) {
128
- const status_r11 = ctx.$implicit;
129
- const ctx_r2 = i0.ɵɵnextContext(2);
130
- i0.ɵɵclassProp("active", ctx_r2.IsStatusActive(status_r11));
131
- i0.ɵɵattribute("data-status", status_r11.toLowerCase());
108
+ const suite_r9 = i0.ɵɵnextContext().$implicit;
109
+ const ctx_r2 = i0.ɵɵnextContext(5);
132
110
  i0.ɵɵadvance();
133
- i0.ɵɵtextInterpolate1(" ", status_r11, " ");
111
+ i0.ɵɵtextInterpolate1(" Last run ", ctx_r2.FormatRelativeTime(suite_r9.LastRunDate), " ");
134
112
  } }
135
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelement(0, "span", 79);
137
- i0.ɵɵtext(1);
138
- } if (rf & 2) {
139
- const suite_r13 = i0.ɵɵnextContext().$implicit;
140
- const ctx_r2 = i0.ɵɵnextContext(4);
141
- i0.ɵɵadvance();
142
- i0.ɵɵtextInterpolate1(" Last run ", ctx_r2.FormatRelativeTime(suite_r13.LastRunDate), " ");
143
- } }
144
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
145
- i0.ɵɵelement(0, "p", 67);
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);
146
115
  i0.ɵɵpipe(1, "highlightSearch");
147
116
  } if (rf & 2) {
148
- const suite_r13 = i0.ɵɵnextContext().$implicit;
149
- const ctx_r2 = i0.ɵɵnextContext(4);
150
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, suite_r13.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
117
+ const suite_r9 = i0.ɵɵnextContext().$implicit;
118
+ const ctx_r2 = i0.ɵɵnextContext(5);
119
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, suite_r9.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
151
120
  } }
152
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelementStart(0, "div", 81);
154
- i0.ɵɵelement(1, "span", 82);
155
- i0.ɵɵelementStart(2, "span", 83);
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);
156
125
  i0.ɵɵtext(3);
157
126
  i0.ɵɵelementEnd();
158
- i0.ɵɵelementStart(4, "span", 84);
127
+ i0.ɵɵelementStart(4, "span", 58);
159
128
  i0.ɵɵtext(5);
160
129
  i0.ɵɵelementEnd();
161
- i0.ɵɵelementStart(6, "span", 85);
162
- i0.ɵɵelement(7, "span", 86);
130
+ i0.ɵɵelementStart(6, "span", 59);
131
+ i0.ɵɵelement(7, "span", 60);
163
132
  i0.ɵɵelementEnd();
164
- i0.ɵɵelementStart(8, "span", 87);
133
+ i0.ɵɵelementStart(8, "span", 61);
165
134
  i0.ɵɵtext(9);
166
135
  i0.ɵɵelementEnd()();
167
136
  } if (rf & 2) {
168
- const t_r14 = i0.ɵɵnextContext().$implicit;
169
- const ctx_r2 = i0.ɵɵnextContext(6);
137
+ const t_r10 = i0.ɵɵnextContext().$implicit;
138
+ const ctx_r2 = i0.ɵɵnextContext(7);
170
139
  i0.ɵɵadvance();
171
- i0.ɵɵattribute("data-status", t_r14.LastStatus.toLowerCase());
140
+ i0.ɵɵattribute("data-status", t_r10.LastStatus.toLowerCase());
172
141
  i0.ɵɵadvance(2);
173
- i0.ɵɵtextInterpolate(t_r14.TestName);
142
+ i0.ɵɵtextInterpolate(t_r10.TestName);
174
143
  i0.ɵɵadvance();
175
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r14.LastScore));
144
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r10.LastScore));
176
145
  i0.ɵɵadvance();
177
- i0.ɵɵtextInterpolate1("", (t_r14.LastScore * 100).toFixed(0), "%");
146
+ i0.ɵɵtextInterpolate1("", (t_r10.LastScore * 100).toFixed(0), "%");
178
147
  i0.ɵɵadvance(2);
179
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r14.LastScore) + "-bg");
180
- i0.ɵɵstyleProp("width", t_r14.LastScore * 100, "%");
148
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r10.LastScore) + "-bg");
149
+ i0.ɵɵstyleProp("width", t_r10.LastScore * 100, "%");
181
150
  i0.ɵɵadvance();
182
- i0.ɵɵattribute("data-status", t_r14.LastStatus.toLowerCase());
151
+ i0.ɵɵattribute("data-status", t_r10.LastStatus.toLowerCase());
183
152
  i0.ɵɵadvance();
184
- i0.ɵɵtextInterpolate(t_r14.LastStatus);
153
+ i0.ɵɵtextInterpolate(t_r10.LastStatus);
185
154
  } }
186
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
187
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template, 10, 11, "div", 81);
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);
188
157
  } if (rf & 2) {
189
- const ɵ$index_227_r15 = ctx.$index;
190
- i0.ɵɵconditional(ɵ$index_227_r15 < 4 ? 0 : -1);
158
+ const ɵ$index_141_r11 = ctx.$index;
159
+ i0.ɵɵconditional(ɵ$index_141_r11 < 4 ? 0 : -1);
191
160
  } }
192
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
193
- i0.ɵɵelementStart(0, "div", 80);
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);
194
163
  i0.ɵɵtext(1);
195
164
  i0.ɵɵelementEnd();
196
165
  } if (rf & 2) {
197
- const suite_r13 = i0.ɵɵnextContext(2).$implicit;
166
+ const suite_r9 = i0.ɵɵnextContext(2).$implicit;
198
167
  i0.ɵɵadvance();
199
- i0.ɵɵtextInterpolate1("+", suite_r13.TotalTestsInSuite - 4, " more tests");
168
+ i0.ɵɵtextInterpolate1("+", suite_r9.TotalTestsInSuite - 4, " more tests");
200
169
  } }
201
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_Template(rf, ctx) { if (rf & 1) {
202
- i0.ɵɵelementStart(0, "div", 72);
203
- i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_For_2_Template, 1, 1, null, null, _forTrack1);
204
- i0.ɵɵconditionalCreate(3, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_Conditional_3_Template, 2, 1, "div", 80);
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);
205
174
  i0.ɵɵelementEnd();
206
175
  } if (rf & 2) {
207
- const suite_r13 = i0.ɵɵnextContext().$implicit;
176
+ const suite_r9 = i0.ɵɵnextContext().$implicit;
208
177
  i0.ɵɵadvance();
209
- i0.ɵɵrepeater(suite_r13.Tests);
178
+ i0.ɵɵrepeater(suite_r9.Tests);
210
179
  i0.ɵɵadvance(2);
211
- i0.ɵɵconditional(suite_r13.TotalTestsInSuite > 4 ? 3 : -1);
180
+ i0.ɵɵconditional(suite_r9.TotalTestsInSuite > 4 ? 3 : -1);
212
181
  } }
213
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
214
- const _r12 = i0.ɵɵgetCurrentView();
215
- i0.ɵɵelementStart(0, "div", 60)(1, "div", 61)(2, "div", 62);
216
- i0.ɵɵelement(3, "i", 63)(4, "span", 64);
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);
217
186
  i0.ɵɵpipe(5, "highlightSearch");
218
- i0.ɵɵelementStart(6, "span", 65);
187
+ i0.ɵɵelementStart(6, "span", 39);
219
188
  i0.ɵɵtext(7);
220
189
  i0.ɵɵelementEnd()();
221
- i0.ɵɵelementStart(8, "div", 66);
190
+ i0.ɵɵelementStart(8, "div", 40);
222
191
  i0.ɵɵtext(9);
223
- i0.ɵɵconditionalCreate(10, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_10_Template, 2, 1);
192
+ i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_10_Template, 2, 1);
224
193
  i0.ɵɵelementEnd();
225
- i0.ɵɵconditionalCreate(11, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 67);
194
+ i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 41);
226
195
  i0.ɵɵelementEnd();
227
- i0.ɵɵelementStart(12, "div", 68)(13, "div", 69)(14, "span", 70);
196
+ i0.ɵɵelementStart(12, "div", 42)(13, "div", 43)(14, "span", 44);
228
197
  i0.ɵɵtext(15, "Pass Rate");
229
198
  i0.ɵɵelementEnd();
230
- i0.ɵɵelementStart(16, "span", 71);
199
+ i0.ɵɵelementStart(16, "span", 45);
231
200
  i0.ɵɵtext(17);
232
201
  i0.ɵɵelementEnd()();
233
- i0.ɵɵelementStart(18, "div", 69)(19, "span", 70);
202
+ i0.ɵɵelementStart(18, "div", 43)(19, "span", 44);
234
203
  i0.ɵɵtext(20, "Tests");
235
204
  i0.ɵɵelementEnd();
236
- i0.ɵɵelementStart(21, "span", 71);
205
+ i0.ɵɵelementStart(21, "span", 45);
237
206
  i0.ɵɵtext(22);
238
207
  i0.ɵɵelementEnd()();
239
- i0.ɵɵelementStart(23, "div", 69)(24, "span", 70);
208
+ i0.ɵɵelementStart(23, "div", 43)(24, "span", 44);
240
209
  i0.ɵɵtext(25, "Avg Score");
241
210
  i0.ɵɵelementEnd();
242
- i0.ɵɵelementStart(26, "span", 71);
211
+ i0.ɵɵelementStart(26, "span", 45);
243
212
  i0.ɵɵtext(27);
244
213
  i0.ɵɵelementEnd()();
245
- i0.ɵɵelementStart(28, "div", 69)(29, "span", 70);
214
+ i0.ɵɵelementStart(28, "div", 43)(29, "span", 44);
246
215
  i0.ɵɵtext(30, "Avg Duration");
247
216
  i0.ɵɵelementEnd();
248
- i0.ɵɵelementStart(31, "span", 71);
217
+ i0.ɵɵelementStart(31, "span", 45);
249
218
  i0.ɵɵtext(32);
250
219
  i0.ɵɵelementEnd()()();
251
- i0.ɵɵconditionalCreate(33, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Conditional_33_Template, 4, 1, "div", 72);
252
- i0.ɵɵelementStart(34, "div", 73)(35, "button", 74);
253
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Template_button_click_35_listener() { const suite_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.RunSuite(suite_r13.ID)); });
254
- i0.ɵɵelement(36, "i", 75);
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);
255
224
  i0.ɵɵtext(37, " Run Suite ");
256
225
  i0.ɵɵelementEnd();
257
- i0.ɵɵelementStart(38, "button", 76);
258
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Template_button_click_38_listener() { const suite_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ViewSuiteResults(suite_r13.ID)); });
259
- i0.ɵɵelement(39, "i", 77);
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);
260
229
  i0.ɵɵtext(40, " Results ");
261
230
  i0.ɵɵelementEnd();
262
- i0.ɵɵelementStart(41, "button", 76);
263
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Template_button_click_41_listener() { const suite_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Test Suites", suite_r13.ID)); });
264
- i0.ɵɵelement(42, "i", 78);
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);
265
234
  i0.ɵɵtext(43, " Edit ");
266
235
  i0.ɵɵelementEnd()()();
267
236
  } if (rf & 2) {
268
- const suite_r13 = ctx.$implicit;
269
- const ctx_r2 = i0.ɵɵnextContext(4);
237
+ const suite_r9 = ctx.$implicit;
238
+ const ctx_r2 = i0.ɵɵnextContext(5);
270
239
  i0.ɵɵadvance(4);
271
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 15, suite_r13.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
240
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 15, suite_r9.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
272
241
  i0.ɵɵadvance(2);
273
- i0.ɵɵattribute("data-status", suite_r13.Status.toLowerCase());
242
+ i0.ɵɵattribute("data-status", suite_r9.Status.toLowerCase());
274
243
  i0.ɵɵadvance();
275
- i0.ɵɵtextInterpolate(suite_r13.Status);
244
+ i0.ɵɵtextInterpolate(suite_r9.Status);
276
245
  i0.ɵɵadvance(2);
277
- i0.ɵɵtextInterpolate1(" ", suite_r13.TestCount, " tests ");
246
+ i0.ɵɵtextInterpolate1(" ", suite_r9.TestCount, " tests ");
278
247
  i0.ɵɵadvance();
279
- i0.ɵɵconditional(suite_r13.LastRunDate ? 10 : -1);
248
+ i0.ɵɵconditional(suite_r9.LastRunDate ? 10 : -1);
280
249
  i0.ɵɵadvance();
281
- i0.ɵɵconditional(suite_r13.Description ? 11 : -1);
250
+ i0.ɵɵconditional(suite_r9.Description ? 11 : -1);
282
251
  i0.ɵɵadvance(5);
283
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r13.PassRate / 100));
252
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r9.PassRate / 100));
284
253
  i0.ɵɵadvance();
285
- i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(suite_r13.PassRate));
254
+ i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(suite_r9.PassRate));
286
255
  i0.ɵɵadvance(5);
287
- i0.ɵɵtextInterpolate(suite_r13.TestCount);
256
+ i0.ɵɵtextInterpolate(suite_r9.TestCount);
288
257
  i0.ɵɵadvance(4);
289
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r13.AvgScore));
258
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r9.AvgScore));
290
259
  i0.ɵɵadvance();
291
- i0.ɵɵtextInterpolate1("", (suite_r13.AvgScore * 100).toFixed(0), "%");
260
+ i0.ɵɵtextInterpolate1("", (suite_r9.AvgScore * 100).toFixed(0), "%");
292
261
  i0.ɵɵadvance(5);
293
- i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(suite_r13.AvgDuration));
262
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(suite_r9.AvgDuration));
294
263
  i0.ɵɵadvance();
295
- i0.ɵɵconditional(suite_r13.Tests.length > 0 ? 33 : -1);
264
+ i0.ɵɵconditional(suite_r9.Tests.length > 0 ? 33 : -1);
296
265
  } }
297
- function TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_Template(rf, ctx) { if (rf & 1) {
298
- i0.ɵɵelementStart(0, "div", 55)(1, "h3", 56);
299
- i0.ɵɵelement(2, "i", 57);
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);
300
269
  i0.ɵɵtext(3, " Test Suites ");
301
- i0.ɵɵelementStart(4, "span", 58);
270
+ i0.ɵɵelementStart(4, "span", 32);
302
271
  i0.ɵɵtext(5);
303
272
  i0.ɵɵelementEnd()();
304
- i0.ɵɵelementStart(6, "div", 59);
305
- i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_For_8_Template, 44, 18, "div", 60, _forTrack0);
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);
306
275
  i0.ɵɵelementEnd()();
307
276
  } if (rf & 2) {
308
- const ctx_r2 = i0.ɵɵnextContext(3);
277
+ const ctx_r2 = i0.ɵɵnextContext(4);
309
278
  i0.ɵɵadvance(5);
310
279
  i0.ɵɵtextInterpolate(ctx_r2.FilteredSuites.length);
311
280
  i0.ɵɵadvance(2);
312
281
  i0.ɵɵrepeater(ctx_r2.FilteredSuites);
313
282
  } }
314
- function TestingExplorerComponent_Conditional_1_Conditional_46_Template(rf, ctx) { if (rf & 1) {
315
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_1_Conditional_46_Conditional_0_Template, 9, 1, "div", 55);
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);
316
285
  } if (rf & 2) {
317
- const ctx_r2 = i0.ɵɵnextContext(2);
286
+ const ctx_r2 = i0.ɵɵnextContext(3);
318
287
  i0.ɵɵconditional(ctx_r2.FilteredSuites.length > 0 ? 0 : -1);
319
288
  } }
320
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
321
- i0.ɵɵelement(0, "span", 79);
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);
322
291
  i0.ɵɵtext(1);
323
292
  } if (rf & 2) {
324
- const test_r17 = i0.ɵɵnextContext().$implicit;
293
+ const test_r13 = i0.ɵɵnextContext().$implicit;
325
294
  i0.ɵɵadvance();
326
- i0.ɵɵtextInterpolate1(" ", test_r17.SuiteName, " ");
295
+ i0.ɵɵtextInterpolate1(" ", test_r13.SuiteName, " ");
327
296
  } }
328
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
329
- i0.ɵɵelement(0, "p", 67);
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);
330
299
  i0.ɵɵpipe(1, "highlightSearch");
331
300
  } if (rf & 2) {
332
- const test_r17 = i0.ɵɵnextContext().$implicit;
333
- const ctx_r2 = i0.ɵɵnextContext(4);
334
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, test_r17.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
301
+ const test_r13 = i0.ɵɵnextContext().$implicit;
302
+ const ctx_r2 = i0.ɵɵnextContext(5);
303
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, test_r13.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
335
304
  } }
336
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_13_Template(rf, ctx) { if (rf & 1) {
337
- i0.ɵɵelementStart(0, "span", 91);
338
- i0.ɵɵelement(1, "i", 96);
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);
339
308
  i0.ɵɵtext(2);
340
309
  i0.ɵɵelementEnd();
341
310
  } if (rf & 2) {
342
- const test_r17 = i0.ɵɵnextContext().$implicit;
311
+ const test_r13 = i0.ɵɵnextContext().$implicit;
343
312
  i0.ɵɵadvance(2);
344
- i0.ɵɵtextInterpolate1(" ", test_r17.TypeName);
313
+ i0.ɵɵtextInterpolate1(" ", test_r13.TypeName);
345
314
  } }
346
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_14_Template(rf, ctx) { if (rf & 1) {
347
- i0.ɵɵelementStart(0, "span", 91);
348
- i0.ɵɵelement(1, "i", 97);
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);
349
318
  i0.ɵɵtext(2);
350
319
  i0.ɵɵelementEnd();
351
320
  } if (rf & 2) {
352
- const test_r17 = i0.ɵɵnextContext().$implicit;
353
- const ctx_r2 = i0.ɵɵnextContext(4);
321
+ const test_r13 = i0.ɵɵnextContext().$implicit;
322
+ const ctx_r2 = i0.ɵɵnextContext(5);
354
323
  i0.ɵɵadvance(2);
355
- i0.ɵɵtextInterpolate1(" ~", ctx_r2.FormatDurationSeconds(test_r17.EstDuration));
324
+ i0.ɵɵtextInterpolate1(" ~", ctx_r2.FormatDurationSeconds(test_r13.EstDuration));
356
325
  } }
357
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_15_Template(rf, ctx) { if (rf & 1) {
358
- i0.ɵɵelementStart(0, "span", 91);
359
- i0.ɵɵelement(1, "i", 98);
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);
360
329
  i0.ɵɵtext(2);
361
330
  i0.ɵɵelementEnd();
362
331
  } if (rf & 2) {
363
- const test_r17 = i0.ɵɵnextContext().$implicit;
364
- const ctx_r2 = i0.ɵɵnextContext(4);
332
+ const test_r13 = i0.ɵɵnextContext().$implicit;
333
+ const ctx_r2 = i0.ɵɵnextContext(5);
365
334
  i0.ɵɵadvance(2);
366
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatCost(test_r17.EstCost));
335
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatCost(test_r13.EstCost));
367
336
  } }
368
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
369
- i0.ɵɵelementStart(0, "span", 100);
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);
370
339
  i0.ɵɵtext(1);
371
340
  i0.ɵɵelementEnd();
372
341
  } if (rf & 2) {
373
- const tag_r18 = i0.ɵɵnextContext().$implicit;
342
+ const tag_r14 = i0.ɵɵnextContext().$implicit;
374
343
  i0.ɵɵadvance();
375
- i0.ɵɵtextInterpolate(tag_r18);
344
+ i0.ɵɵtextInterpolate(tag_r14);
376
345
  } }
377
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
378
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template, 2, 1, "span", 100);
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);
379
348
  } if (rf & 2) {
380
- const ɵ$index_335_r19 = ctx.$index;
381
- i0.ɵɵconditional(ɵ$index_335_r19 < 4 ? 0 : -1);
349
+ const ɵ$index_249_r15 = ctx.$index;
350
+ i0.ɵɵconditional(ɵ$index_249_r15 < 4 ? 0 : -1);
382
351
  } }
383
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
384
- i0.ɵɵelementStart(0, "span", 99);
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);
385
354
  i0.ɵɵtext(1);
386
355
  i0.ɵɵelementEnd();
387
356
  } if (rf & 2) {
388
- const test_r17 = i0.ɵɵnextContext(2).$implicit;
357
+ const test_r13 = i0.ɵɵnextContext(2).$implicit;
389
358
  i0.ɵɵadvance();
390
- i0.ɵɵtextInterpolate1("+", test_r17.Tags.length - 4);
359
+ i0.ɵɵtextInterpolate1("+", test_r13.Tags.length - 4);
391
360
  } }
392
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_Template(rf, ctx) { if (rf & 1) {
393
- i0.ɵɵelementStart(0, "div", 93);
394
- i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_For_2_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
395
- i0.ɵɵconditionalCreate(3, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_Conditional_3_Template, 2, 1, "span", 99);
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);
396
365
  i0.ɵɵelementEnd();
397
366
  } if (rf & 2) {
398
- const test_r17 = i0.ɵɵnextContext().$implicit;
367
+ const test_r13 = i0.ɵɵnextContext().$implicit;
399
368
  i0.ɵɵadvance();
400
- i0.ɵɵrepeater(test_r17.Tags);
369
+ i0.ɵɵrepeater(test_r13.Tags);
401
370
  i0.ɵɵadvance(2);
402
- i0.ɵɵconditional(test_r17.Tags.length > 4 ? 3 : -1);
371
+ i0.ɵɵconditional(test_r13.Tags.length > 4 ? 3 : -1);
403
372
  } }
404
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
405
- const _r16 = i0.ɵɵgetCurrentView();
406
- i0.ɵɵelementStart(0, "div", 88)(1, "div", 61)(2, "div", 62);
407
- i0.ɵɵelement(3, "i", 89)(4, "span", 64);
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);
408
377
  i0.ɵɵpipe(5, "highlightSearch");
409
- i0.ɵɵelementStart(6, "span", 65);
378
+ i0.ɵɵelementStart(6, "span", 39);
410
379
  i0.ɵɵtext(7);
411
380
  i0.ɵɵelementEnd()();
412
- i0.ɵɵelementStart(8, "div", 66);
381
+ i0.ɵɵelementStart(8, "div", 40);
413
382
  i0.ɵɵtext(9);
414
- i0.ɵɵconditionalCreate(10, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_10_Template, 2, 1);
415
- i0.ɵɵelementEnd();
416
- i0.ɵɵconditionalCreate(11, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 67);
417
- i0.ɵɵelementStart(12, "div", 90);
418
- i0.ɵɵconditionalCreate(13, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_13_Template, 3, 1, "span", 91);
419
- i0.ɵɵconditionalCreate(14, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_14_Template, 3, 1, "span", 91);
420
- i0.ɵɵconditionalCreate(15, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_15_Template, 3, 1, "span", 91);
421
- i0.ɵɵelementStart(16, "span", 91);
422
- i0.ɵɵelement(17, "i", 92);
383
+ i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_10_Template, 2, 1);
384
+ 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);
423
392
  i0.ɵɵtext(18);
424
393
  i0.ɵɵelementEnd()();
425
- i0.ɵɵconditionalCreate(19, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Conditional_19_Template, 4, 1, "div", 93);
394
+ i0.ɵɵconditionalCreate(19, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_Template, 4, 1, "div", 68);
426
395
  i0.ɵɵelementEnd();
427
- i0.ɵɵelementStart(20, "div", 68)(21, "div", 69)(22, "span", 70);
396
+ i0.ɵɵelementStart(20, "div", 42)(21, "div", 43)(22, "span", 44);
428
397
  i0.ɵɵtext(23, "Last Status");
429
398
  i0.ɵɵelementEnd();
430
- i0.ɵɵelementStart(24, "span", 94);
399
+ i0.ɵɵelementStart(24, "span", 69);
431
400
  i0.ɵɵtext(25);
432
401
  i0.ɵɵelementEnd()();
433
- i0.ɵɵelementStart(26, "div", 69)(27, "span", 70);
402
+ i0.ɵɵelementStart(26, "div", 43)(27, "span", 44);
434
403
  i0.ɵɵtext(28, "Score");
435
404
  i0.ɵɵelementEnd();
436
- i0.ɵɵelementStart(29, "span", 71);
405
+ i0.ɵɵelementStart(29, "span", 45);
437
406
  i0.ɵɵtext(30);
438
407
  i0.ɵɵelementEnd()();
439
- i0.ɵɵelementStart(31, "div", 69)(32, "span", 70);
408
+ i0.ɵɵelementStart(31, "div", 43)(32, "span", 44);
440
409
  i0.ɵɵtext(33, "Total Runs");
441
410
  i0.ɵɵelementEnd();
442
- i0.ɵɵelementStart(34, "span", 71);
411
+ i0.ɵɵelementStart(34, "span", 45);
443
412
  i0.ɵɵtext(35);
444
413
  i0.ɵɵelementEnd()();
445
- i0.ɵɵelementStart(36, "div", 69)(37, "span", 70);
414
+ i0.ɵɵelementStart(36, "div", 43)(37, "span", 44);
446
415
  i0.ɵɵtext(38, "Pass Rate");
447
416
  i0.ɵɵelementEnd();
448
- i0.ɵɵelementStart(39, "span", 71);
417
+ i0.ɵɵelementStart(39, "span", 45);
449
418
  i0.ɵɵtext(40);
450
419
  i0.ɵɵelementEnd()()();
451
- i0.ɵɵelementStart(41, "div", 73)(42, "button", 74);
452
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Template_button_click_42_listener() { const test_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.RunTest(test_r17.ID)); });
453
- i0.ɵɵelement(43, "i", 75);
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);
454
423
  i0.ɵɵtext(44, " Run ");
455
424
  i0.ɵɵelementEnd();
456
- i0.ɵɵelementStart(45, "button", 76);
457
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Template_button_click_45_listener() { const test_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.ViewTestHistory(test_r17.ID)); });
458
- i0.ɵɵelement(46, "i", 95);
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);
459
428
  i0.ɵɵtext(47, " History ");
460
429
  i0.ɵɵelementEnd();
461
- i0.ɵɵelementStart(48, "button", 76);
462
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Template_button_click_48_listener() { const test_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Tests", test_r17.ID)); });
463
- i0.ɵɵelement(49, "i", 78);
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);
464
433
  i0.ɵɵtext(50, " Edit ");
465
434
  i0.ɵɵelementEnd()()();
466
435
  } if (rf & 2) {
467
- const test_r17 = ctx.$implicit;
468
- const ctx_r2 = i0.ɵɵnextContext(4);
436
+ const test_r13 = ctx.$implicit;
437
+ const ctx_r2 = i0.ɵɵnextContext(5);
469
438
  i0.ɵɵadvance(4);
470
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 20, test_r17.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
439
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 20, test_r13.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
471
440
  i0.ɵɵadvance(2);
472
- i0.ɵɵattribute("data-status", test_r17.Status.toLowerCase());
441
+ i0.ɵɵattribute("data-status", test_r13.Status.toLowerCase());
473
442
  i0.ɵɵadvance();
474
- i0.ɵɵtextInterpolate(test_r17.Status);
443
+ i0.ɵɵtextInterpolate(test_r13.Status);
475
444
  i0.ɵɵadvance(2);
476
- i0.ɵɵtextInterpolate1(" ", test_r17.TypeName, " ");
445
+ i0.ɵɵtextInterpolate1(" ", test_r13.TypeName, " ");
477
446
  i0.ɵɵadvance();
478
- i0.ɵɵconditional(test_r17.SuiteName ? 10 : -1);
447
+ i0.ɵɵconditional(test_r13.SuiteName ? 10 : -1);
479
448
  i0.ɵɵadvance();
480
- i0.ɵɵconditional(test_r17.Description ? 11 : -1);
449
+ i0.ɵɵconditional(test_r13.Description ? 11 : -1);
481
450
  i0.ɵɵadvance(2);
482
- i0.ɵɵconditional(test_r17.TypeName ? 13 : -1);
451
+ i0.ɵɵconditional(test_r13.TypeName ? 13 : -1);
483
452
  i0.ɵɵadvance();
484
- i0.ɵɵconditional(test_r17.EstDuration > 0 ? 14 : -1);
453
+ i0.ɵɵconditional(test_r13.EstDuration > 0 ? 14 : -1);
485
454
  i0.ɵɵadvance();
486
- i0.ɵɵconditional(test_r17.EstCost > 0 ? 15 : -1);
455
+ i0.ɵɵconditional(test_r13.EstCost > 0 ? 15 : -1);
487
456
  i0.ɵɵadvance(3);
488
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(test_r17.UpdatedAt));
457
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(test_r13.UpdatedAt));
489
458
  i0.ɵɵadvance();
490
- i0.ɵɵconditional(test_r17.Tags.length > 0 ? 19 : -1);
459
+ i0.ɵɵconditional(test_r13.Tags.length > 0 ? 19 : -1);
491
460
  i0.ɵɵadvance(5);
492
- i0.ɵɵattribute("data-status", test_r17.LastRunStatus.toLowerCase());
461
+ i0.ɵɵattribute("data-status", test_r13.LastRunStatus.toLowerCase());
493
462
  i0.ɵɵadvance();
494
- i0.ɵɵtextInterpolate(test_r17.LastRunStatus || "N/A");
463
+ i0.ɵɵtextInterpolate(test_r13.LastRunStatus || "N/A");
495
464
  i0.ɵɵadvance(4);
496
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r17.LastScore));
465
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r13.LastScore));
497
466
  i0.ɵɵadvance();
498
- i0.ɵɵtextInterpolate(test_r17.LastScore > 0 ? (test_r17.LastScore * 100).toFixed(0) + "%" : "N/A");
467
+ i0.ɵɵtextInterpolate(test_r13.LastScore > 0 ? (test_r13.LastScore * 100).toFixed(0) + "%" : "N/A");
499
468
  i0.ɵɵadvance(5);
500
- i0.ɵɵtextInterpolate(test_r17.TotalRuns);
469
+ i0.ɵɵtextInterpolate(test_r13.TotalRuns);
501
470
  i0.ɵɵadvance(4);
502
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r17.PassRate / 100));
471
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r13.PassRate / 100));
503
472
  i0.ɵɵadvance();
504
- i0.ɵɵtextInterpolate(test_r17.TotalRuns > 0 ? ctx_r2.FormatPercent(test_r17.PassRate) : "N/A");
473
+ i0.ɵɵtextInterpolate(test_r13.TotalRuns > 0 ? ctx_r2.FormatPercent(test_r13.PassRate) : "N/A");
505
474
  } }
506
- function TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_Template(rf, ctx) { if (rf & 1) {
507
- i0.ɵɵelementStart(0, "div", 55)(1, "h3", 56);
508
- i0.ɵɵelement(2, "i", 47);
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);
509
478
  i0.ɵɵtext(3, " Tests ");
510
- i0.ɵɵelementStart(4, "span", 58);
479
+ i0.ɵɵelementStart(4, "span", 32);
511
480
  i0.ɵɵtext(5);
512
481
  i0.ɵɵelementEnd()();
513
- i0.ɵɵelementStart(6, "div", 59);
514
- i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_For_8_Template, 51, 23, "div", 88, _forTrack0);
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);
515
484
  i0.ɵɵelementEnd()();
516
485
  } if (rf & 2) {
517
- const ctx_r2 = i0.ɵɵnextContext(3);
486
+ const ctx_r2 = i0.ɵɵnextContext(4);
518
487
  i0.ɵɵadvance(5);
519
488
  i0.ɵɵtextInterpolate(ctx_r2.FilteredTests.length);
520
489
  i0.ɵɵadvance(2);
521
490
  i0.ɵɵrepeater(ctx_r2.FilteredTests);
522
491
  } }
523
- function TestingExplorerComponent_Conditional_1_Conditional_47_Template(rf, ctx) { if (rf & 1) {
524
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_1_Conditional_47_Conditional_0_Template, 9, 1, "div", 55);
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);
525
494
  } if (rf & 2) {
526
- const ctx_r2 = i0.ɵɵnextContext(2);
495
+ const ctx_r2 = i0.ɵɵnextContext(3);
527
496
  i0.ɵɵconditional(ctx_r2.FilteredTests.length > 0 ? 0 : -1);
528
497
  } }
529
- function TestingExplorerComponent_Conditional_1_Conditional_48_Template(rf, ctx) { if (rf & 1) {
530
- i0.ɵɵelementStart(0, "div", 41);
531
- i0.ɵɵelement(1, "i", 101);
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);
532
501
  i0.ɵɵelementStart(2, "p");
533
502
  i0.ɵɵtext(3, "No tests or suites found");
534
503
  i0.ɵɵelementEnd();
535
- i0.ɵɵelementStart(4, "span", 102);
504
+ i0.ɵɵelementStart(4, "span", 77);
536
505
  i0.ɵɵtext(5, "Try adjusting your search or filters.");
537
506
  i0.ɵɵelementEnd()();
538
507
  } }
539
- function TestingExplorerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
540
- const _r2 = i0.ɵɵgetCurrentView();
541
- i0.ɵɵelementStart(0, "div", 2)(1, "aside", 9)(2, "div", 10)(3, "h3");
542
- i0.ɵɵtext(4, "Explorer");
543
- i0.ɵɵelementEnd();
544
- i0.ɵɵelementStart(5, "button", 11);
545
- 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.ToggleSidebar()); });
546
- i0.ɵɵelement(6, "i", 12);
547
- i0.ɵɵelementEnd()();
548
- i0.ɵɵconditionalCreate(7, TestingExplorerComponent_Conditional_1_Conditional_7_Template, 27, 7, "div", 13);
549
- i0.ɵɵelementEnd();
550
- i0.ɵɵelementStart(8, "main", 14)(9, "div", 15)(10, "div", 16)(11, "div", 17);
551
- i0.ɵɵelement(12, "i", 18);
552
- i0.ɵɵelementStart(13, "input", 19);
553
- i0.ɵɵlistener("input", function TestingExplorerComponent_Conditional_1_Template_input_input_13_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSearchInput($event)); });
554
- i0.ɵɵelementEnd();
555
- i0.ɵɵconditionalCreate(14, TestingExplorerComponent_Conditional_1_Conditional_14_Template, 2, 0, "button", 20);
556
- i0.ɵɵelementEnd();
557
- i0.ɵɵelementStart(15, "div", 21);
558
- i0.ɵɵrepeaterCreate(16, TestingExplorerComponent_Conditional_1_For_17_Template, 2, 4, "button", 22, i0.ɵɵrepeaterTrackByIdentity);
559
- i0.ɵɵelementEnd()();
560
- i0.ɵɵelementStart(18, "div", 23)(19, "span", 24);
561
- i0.ɵɵtext(20);
562
- i0.ɵɵelementEnd();
563
- i0.ɵɵelementStart(21, "div", 25)(22, "button", 26);
564
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetViewMode("card")); });
565
- i0.ɵɵelement(23, "i", 27);
566
- i0.ɵɵelementEnd();
567
- i0.ɵɵelementStart(24, "button", 28);
568
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetViewMode("list")); });
569
- i0.ɵɵelement(25, "i", 29);
570
- i0.ɵɵelementEnd()();
571
- i0.ɵɵelementStart(26, "button", 30);
572
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewSuite()); });
573
- i0.ɵɵelement(27, "i", 31);
574
- i0.ɵɵtext(28, " New Suite ");
575
- i0.ɵɵelementEnd();
576
- i0.ɵɵelementStart(29, "button", 32);
577
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewTest()); });
578
- i0.ɵɵelement(30, "i", 33);
579
- i0.ɵɵtext(31, " New Test ");
580
- i0.ɵɵelementEnd()()();
581
- i0.ɵɵelementStart(32, "div", 34)(33, "div", 35)(34, "button", 36);
582
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDisplayMode("all")); });
583
- i0.ɵɵtext(35, "All");
584
- i0.ɵɵelementEnd();
585
- i0.ɵɵelementStart(36, "button", 36);
586
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDisplayMode("suites")); });
587
- i0.ɵɵtext(37, "Suites Only");
588
- i0.ɵɵelementEnd();
589
- i0.ɵɵelementStart(38, "button", 36);
590
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_38_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDisplayMode("tests")); });
591
- i0.ɵɵtext(39, "Tests Only");
592
- i0.ɵɵelementEnd()();
593
- i0.ɵɵelementStart(40, "div", 37)(41, "button", 38);
594
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_41_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleSortDirection()); });
595
- i0.ɵɵelement(42, "i", 39);
596
- i0.ɵɵtext(43);
597
- i0.ɵɵelement(44, "i", 12);
598
- i0.ɵɵelementEnd()()();
599
- i0.ɵɵelementStart(45, "div", 40);
600
- i0.ɵɵconditionalCreate(46, TestingExplorerComponent_Conditional_1_Conditional_46_Template, 1, 1);
601
- i0.ɵɵconditionalCreate(47, TestingExplorerComponent_Conditional_1_Conditional_47_Template, 1, 1);
602
- i0.ɵɵconditionalCreate(48, TestingExplorerComponent_Conditional_1_Conditional_48_Template, 6, 0, "div", 41);
603
- i0.ɵɵelementEnd()()();
604
- } if (rf & 2) {
605
- const ctx_r2 = i0.ɵɵnextContext();
606
- i0.ɵɵadvance();
607
- i0.ɵɵclassProp("collapsed", ctx_r2.IsSidebarCollapsed);
608
- i0.ɵɵadvance(5);
609
- i0.ɵɵclassProp("fa-chevron-left", !ctx_r2.IsSidebarCollapsed)("fa-chevron-right", ctx_r2.IsSidebarCollapsed);
610
- i0.ɵɵadvance();
611
- i0.ɵɵconditional(!ctx_r2.IsSidebarCollapsed ? 7 : -1);
612
- i0.ɵɵadvance(6);
613
- i0.ɵɵproperty("value", ctx_r2.SearchTerm);
614
- i0.ɵɵadvance();
615
- i0.ɵɵconditional(ctx_r2.SearchTerm ? 14 : -1);
616
- i0.ɵɵadvance(2);
617
- i0.ɵɵrepeater(ctx_r2.StatusOptions);
618
- i0.ɵɵadvance(4);
619
- i0.ɵɵtextInterpolate1("", ctx_r2.FilteredResultCount, " results");
620
- i0.ɵɵadvance(2);
621
- i0.ɵɵclassProp("active", ctx_r2.ViewMode === "card");
622
- i0.ɵɵadvance(2);
623
- i0.ɵɵclassProp("active", ctx_r2.ViewMode === "list");
624
- i0.ɵɵadvance(10);
625
- i0.ɵɵclassProp("active", ctx_r2.DisplayMode === "all");
626
- i0.ɵɵadvance(2);
627
- i0.ɵɵclassProp("active", ctx_r2.DisplayMode === "suites");
628
- i0.ɵɵadvance(2);
629
- i0.ɵɵclassProp("active", ctx_r2.DisplayMode === "tests");
630
- i0.ɵɵadvance(5);
631
- i0.ɵɵtextInterpolate1(" ", ctx_r2.SortFieldLabel, " ");
632
- i0.ɵɵadvance();
633
- i0.ɵɵclassProp("fa-arrow-up", ctx_r2.SortDirection === "asc")("fa-arrow-down", ctx_r2.SortDirection === "desc");
634
- i0.ɵɵadvance(2);
635
- i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "suites" ? 46 : -1);
636
- i0.ɵɵadvance();
637
- i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "tests" ? 47 : -1);
638
- i0.ɵɵadvance();
639
- i0.ɵɵconditional(ctx_r2.FilteredSuites.length === 0 && ctx_r2.FilteredTests.length === 0 ? 48 : -1);
640
- } }
641
508
  function TestingExplorerComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
642
- const _r22 = i0.ɵɵgetCurrentView();
643
- i0.ɵɵelementStart(0, "button", 106);
644
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r22); const node_r21 = i0.ɵɵnextContext().node; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleSuiteExpand(node_r21, $event)); });
645
- i0.ɵɵelement(1, "i", 12);
646
- i0.ɵɵelementEnd();
647
- } if (rf & 2) {
648
- const node_r21 = i0.ɵɵnextContext().node;
649
- i0.ɵɵadvance();
650
- i0.ɵɵclassProp("fa-chevron-right", !node_r21.Expanded)("fa-chevron-down", node_r21.Expanded);
651
- } }
652
- function TestingExplorerComponent_ng_template_2_Conditional_7_For_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
653
- i0.ɵɵelementContainer(0);
654
- } }
655
- function TestingExplorerComponent_ng_template_2_Conditional_7_For_1_Template(rf, ctx) { if (rf & 1) {
656
- i0.ɵɵtemplate(0, TestingExplorerComponent_ng_template_2_Conditional_7_For_1_ng_container_0_Template, 1, 0, "ng-container", 50);
657
- } if (rf & 2) {
658
- const child_r23 = ctx.$implicit;
659
- const depth_r24 = i0.ɵɵnextContext(2).depth;
660
- i0.ɵɵnextContext();
661
- const suiteTreeTpl_r6 = i0.ɵɵreference(3);
662
- i0.ɵɵproperty("ngTemplateOutlet", suiteTreeTpl_r6)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1, child_r23, depth_r24 + 1));
663
- } }
664
- function TestingExplorerComponent_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
665
- i0.ɵɵrepeaterCreate(0, TestingExplorerComponent_ng_template_2_Conditional_7_For_1_Template, 1, 5, "ng-container", null, _forTrack0);
666
- } if (rf & 2) {
667
- const node_r21 = i0.ɵɵnextContext().node;
668
- i0.ɵɵrepeater(node_r21.Children);
669
- } }
670
- function TestingExplorerComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
671
- const _r20 = i0.ɵɵgetCurrentView();
672
- i0.ɵɵelementStart(0, "div", 103);
673
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Template_div_click_0_listener() { const node_r21 = i0.ɵɵrestoreView(_r20).node; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "suite", ID: node_r21.ID })); });
674
- i0.ɵɵconditionalCreate(1, TestingExplorerComponent_ng_template_2_Conditional_1_Template, 2, 4, "button", 104);
675
- i0.ɵɵelement(2, "i", 57);
676
- i0.ɵɵelementStart(3, "span", 105);
677
- i0.ɵɵtext(4);
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)); });
678
512
  i0.ɵɵelementEnd();
679
- i0.ɵɵelementStart(5, "span", 46);
680
- i0.ɵɵtext(6);
681
- i0.ɵɵelementEnd()();
682
- i0.ɵɵconditionalCreate(7, TestingExplorerComponent_ng_template_2_Conditional_7_Template, 2, 0);
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()()();
683
518
  } if (rf & 2) {
684
- const node_r21 = ctx.node;
685
- const depth_r24 = ctx.depth;
686
- const ctx_r2 = i0.ɵɵnextContext();
687
- i0.ɵɵstyleProp("padding-left", 16 + depth_r24 * 14, "px");
688
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "suite" && ctx_r2.IsSidebarSelected(node_r21.ID));
519
+ const ctx_r2 = i0.ɵɵnextContext(2);
689
520
  i0.ɵɵadvance();
690
- i0.ɵɵconditional(node_r21.Children.length > 0 ? 1 : -1);
521
+ i0.ɵɵproperty("Sections", ctx_r2.NavSections)("ActiveId", ctx_r2.ActiveNavId)("ExpandedIds", ctx_r2.ExpandedNavIds);
691
522
  i0.ɵɵadvance(3);
692
- i0.ɵɵtextInterpolate(node_r21.Name);
693
- i0.ɵɵadvance(2);
694
- i0.ɵɵtextInterpolate(node_r21.TestCount);
523
+ i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "suites" ? 4 : -1);
524
+ i0.ɵɵadvance();
525
+ i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "tests" ? 5 : -1);
695
526
  i0.ɵɵadvance();
696
- i0.ɵɵconditional(node_r21.Expanded && node_r21.Children.length > 0 ? 7 : -1);
527
+ i0.ɵɵconditional(ctx_r2.FilteredSuites.length === 0 && ctx_r2.FilteredTests.length === 0 ? 6 : -1);
697
528
  } }
698
- function TestingExplorerComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
699
- const _r25 = i0.ɵɵgetCurrentView();
700
- i0.ɵɵelementStart(0, "div", 107);
701
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_4_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
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()); });
702
533
  i0.ɵɵelementEnd();
703
534
  } }
704
- function TestingExplorerComponent_Conditional_7_Conditional_15_Template(rf, ctx) { if (rf & 1) {
705
- i0.ɵɵelementStart(0, "div", 116);
706
- i0.ɵɵelement(1, "i", 134);
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);
707
538
  i0.ɵɵelementStart(2, "span");
708
539
  i0.ɵɵtext(3);
709
540
  i0.ɵɵelementEnd()();
710
541
  } if (rf & 2) {
711
- const ctx_r2 = i0.ɵɵnextContext(2);
542
+ const ctx_r2 = i0.ɵɵnextContext(3);
712
543
  i0.ɵɵadvance(3);
713
544
  i0.ɵɵtextInterpolate(ctx_r2.FormErrorMessage);
714
545
  } }
715
- function TestingExplorerComponent_Conditional_7_Conditional_31_For_9_Template(rf, ctx) { if (rf & 1) {
716
- i0.ɵɵelementStart(0, "option", 127);
546
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_For_9_Template(rf, ctx) { if (rf & 1) {
547
+ i0.ɵɵelementStart(0, "option", 98);
717
548
  i0.ɵɵtext(1);
718
549
  i0.ɵɵelementEnd();
719
550
  } if (rf & 2) {
720
- const tt_r28 = ctx.$implicit;
721
- i0.ɵɵproperty("value", tt_r28.ID);
551
+ const tt_r19 = ctx.$implicit;
552
+ i0.ɵɵproperty("value", tt_r19.ID);
722
553
  i0.ɵɵadvance();
723
- i0.ɵɵtextInterpolate(tt_r28.Name);
554
+ i0.ɵɵtextInterpolate(tt_r19.Name);
724
555
  } }
725
- function TestingExplorerComponent_Conditional_7_Conditional_31_Template(rf, ctx) { if (rf & 1) {
726
- const _r27 = i0.ɵɵgetCurrentView();
727
- i0.ɵɵelementStart(0, "div", 120)(1, "label", 121);
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);
728
559
  i0.ɵɵtext(2, "Test Type ");
729
- i0.ɵɵelementStart(3, "span", 122);
560
+ i0.ɵɵelementStart(3, "span", 93);
730
561
  i0.ɵɵtext(4, "*");
731
562
  i0.ɵɵelementEnd()();
732
- i0.ɵɵelementStart(5, "select", 126);
733
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Conditional_31_Template_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormTypeID, $event) || (ctx_r2.FormTypeID = $event); return i0.ɵɵresetView($event); });
734
- i0.ɵɵelementStart(6, "option", 135);
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);
735
566
  i0.ɵɵtext(7, "Select type...");
736
567
  i0.ɵɵelementEnd();
737
- i0.ɵɵrepeaterCreate(8, TestingExplorerComponent_Conditional_7_Conditional_31_For_9_Template, 2, 2, "option", 127, _forTrack0);
568
+ i0.ɵɵrepeaterCreate(8, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_For_9_Template, 2, 2, "option", 98, _forTrack0);
738
569
  i0.ɵɵelementEnd()();
739
570
  } if (rf & 2) {
740
- const ctx_r2 = i0.ɵɵnextContext(2);
571
+ const ctx_r2 = i0.ɵɵnextContext(3);
741
572
  i0.ɵɵadvance(5);
742
573
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.FormTypeID);
743
574
  i0.ɵɵadvance(3);
744
575
  i0.ɵɵrepeater(ctx_r2.AllTestTypes);
745
576
  } }
746
- function TestingExplorerComponent_Conditional_7_Conditional_32_For_7_Template(rf, ctx) { if (rf & 1) {
747
- i0.ɵɵelementStart(0, "option", 127);
577
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_For_7_Template(rf, ctx) { if (rf & 1) {
578
+ i0.ɵɵelementStart(0, "option", 98);
748
579
  i0.ɵɵtext(1);
749
580
  i0.ɵɵelementEnd();
750
581
  } if (rf & 2) {
751
- const s_r30 = ctx.$implicit;
752
- i0.ɵɵproperty("value", s_r30.ID);
582
+ const s_r21 = ctx.$implicit;
583
+ i0.ɵɵproperty("value", s_r21.ID);
753
584
  i0.ɵɵadvance();
754
- i0.ɵɵtextInterpolate(s_r30.Name);
585
+ i0.ɵɵtextInterpolate(s_r21.Name);
755
586
  } }
756
- function TestingExplorerComponent_Conditional_7_Conditional_32_Template(rf, ctx) { if (rf & 1) {
757
- const _r29 = i0.ɵɵgetCurrentView();
758
- i0.ɵɵelementStart(0, "div", 120)(1, "label", 121);
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);
759
590
  i0.ɵɵtext(2, "Parent Suite");
760
591
  i0.ɵɵelementEnd();
761
- i0.ɵɵelementStart(3, "select", 126);
762
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Conditional_32_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormParentSuiteID, $event) || (ctx_r2.FormParentSuiteID = $event); return i0.ɵɵresetView($event); });
763
- i0.ɵɵelementStart(4, "option", 136);
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);
764
595
  i0.ɵɵtext(5, "None (top-level)");
765
596
  i0.ɵɵelementEnd();
766
- i0.ɵɵrepeaterCreate(6, TestingExplorerComponent_Conditional_7_Conditional_32_For_7_Template, 2, 2, "option", 127, _forTrack0);
597
+ i0.ɵɵrepeaterCreate(6, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_For_7_Template, 2, 2, "option", 98, _forTrack0);
767
598
  i0.ɵɵelementEnd()();
768
599
  } if (rf & 2) {
769
- const ctx_r2 = i0.ɵɵnextContext(2);
600
+ const ctx_r2 = i0.ɵɵnextContext(3);
770
601
  i0.ɵɵadvance(3);
771
602
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.FormParentSuiteID);
772
603
  i0.ɵɵadvance(3);
773
604
  i0.ɵɵrepeater(ctx_r2.AllSuites);
774
605
  } }
775
- function TestingExplorerComponent_Conditional_7_For_38_Template(rf, ctx) { if (rf & 1) {
776
- i0.ɵɵelementStart(0, "option", 127);
606
+ function TestingExplorerComponent_ng_template_2_Conditional_5_For_38_Template(rf, ctx) { if (rf & 1) {
607
+ i0.ɵɵelementStart(0, "option", 98);
777
608
  i0.ɵɵtext(1);
778
609
  i0.ɵɵelementEnd();
779
610
  } if (rf & 2) {
780
- const status_r31 = ctx.$implicit;
781
- i0.ɵɵproperty("value", status_r31);
611
+ const status_r22 = ctx.$implicit;
612
+ i0.ɵɵproperty("value", status_r22);
782
613
  i0.ɵɵadvance();
783
- i0.ɵɵtextInterpolate(status_r31);
614
+ i0.ɵɵtextInterpolate(status_r22);
784
615
  } }
785
- function TestingExplorerComponent_Conditional_7_Conditional_39_Template(rf, ctx) { if (rf & 1) {
786
- const _r32 = i0.ɵɵgetCurrentView();
787
- i0.ɵɵelementStart(0, "div", 118)(1, "div", 119);
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);
788
619
  i0.ɵɵtext(2, "Estimates");
789
620
  i0.ɵɵelementEnd();
790
- i0.ɵɵelementStart(3, "div", 125)(4, "div", 120)(5, "label", 121);
621
+ i0.ɵɵelementStart(3, "div", 96)(4, "div", 91)(5, "label", 92);
791
622
  i0.ɵɵtext(6, "Duration (seconds)");
792
623
  i0.ɵɵelementEnd();
793
- i0.ɵɵelementStart(7, "input", 137);
794
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Conditional_39_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormEstDuration, $event) || (ctx_r2.FormEstDuration = $event); return i0.ɵɵresetView($event); });
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); });
795
626
  i0.ɵɵelementEnd()();
796
- i0.ɵɵelementStart(8, "div", 120)(9, "label", 121);
627
+ i0.ɵɵelementStart(8, "div", 91)(9, "label", 92);
797
628
  i0.ɵɵtext(10, "Cost (USD)");
798
629
  i0.ɵɵelementEnd();
799
- i0.ɵɵelementStart(11, "input", 138);
800
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Conditional_39_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormEstCost, $event) || (ctx_r2.FormEstCost = $event); return i0.ɵɵresetView($event); });
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); });
801
632
  i0.ɵɵelementEnd()()()();
802
633
  } if (rf & 2) {
803
- const ctx_r2 = i0.ɵɵnextContext(2);
634
+ const ctx_r2 = i0.ɵɵnextContext(3);
804
635
  i0.ɵɵadvance(7);
805
636
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.FormEstDuration);
806
637
  i0.ɵɵadvance(4);
807
638
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.FormEstCost);
808
639
  } }
809
- function TestingExplorerComponent_Conditional_7_Conditional_51_Template(rf, ctx) { if (rf & 1) {
810
- i0.ɵɵelement(0, "i", 132);
640
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_51_Template(rf, ctx) { if (rf & 1) {
641
+ i0.ɵɵelement(0, "i", 104);
811
642
  } }
812
- function TestingExplorerComponent_Conditional_7_Conditional_52_Template(rf, ctx) { if (rf & 1) {
813
- i0.ɵɵelement(0, "i", 133);
643
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_52_Template(rf, ctx) { if (rf & 1) {
644
+ i0.ɵɵelement(0, "i", 105);
814
645
  } }
815
- function TestingExplorerComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
816
- const _r26 = i0.ɵɵgetCurrentView();
817
- i0.ɵɵelementStart(0, "div", 6)(1, "div", 108)(2, "div", 109);
818
- i0.ɵɵelement(3, "i", 110);
819
- i0.ɵɵelementStart(4, "span", 111);
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);
820
651
  i0.ɵɵtext(5);
821
652
  i0.ɵɵelementEnd()();
822
- i0.ɵɵelementStart(6, "button", 112);
823
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_7_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
824
- i0.ɵɵelement(7, "i", 113);
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);
825
656
  i0.ɵɵelementEnd()();
826
- i0.ɵɵelementStart(8, "div", 114)(9, "button", 115);
827
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_7_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("test")); });
828
- i0.ɵɵelement(10, "i", 47);
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);
829
660
  i0.ɵɵtext(11, " Test ");
830
661
  i0.ɵɵelementEnd();
831
- i0.ɵɵelementStart(12, "button", 115);
832
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_7_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("suite")); });
833
- i0.ɵɵelement(13, "i", 57);
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);
834
665
  i0.ɵɵtext(14, " Suite ");
835
666
  i0.ɵɵelementEnd()();
836
- i0.ɵɵconditionalCreate(15, TestingExplorerComponent_Conditional_7_Conditional_15_Template, 4, 1, "div", 116);
837
- i0.ɵɵelementStart(16, "div", 117)(17, "div", 118)(18, "div", 119);
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);
838
669
  i0.ɵɵtext(19, "General");
839
670
  i0.ɵɵelementEnd();
840
- i0.ɵɵelementStart(20, "div", 120)(21, "label", 121);
671
+ i0.ɵɵelementStart(20, "div", 91)(21, "label", 92);
841
672
  i0.ɵɵtext(22, "Name ");
842
- i0.ɵɵelementStart(23, "span", 122);
673
+ i0.ɵɵelementStart(23, "span", 93);
843
674
  i0.ɵɵtext(24, "*");
844
675
  i0.ɵɵelementEnd()();
845
- i0.ɵɵelementStart(25, "input", 123);
846
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.FormName, $event) || (ctx_r2.FormName = $event); return i0.ɵɵresetView($event); });
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); });
847
678
  i0.ɵɵelementEnd()();
848
- i0.ɵɵelementStart(26, "div", 120)(27, "label", 121);
679
+ i0.ɵɵelementStart(26, "div", 91)(27, "label", 92);
849
680
  i0.ɵɵtext(28, "Description");
850
681
  i0.ɵɵelementEnd();
851
- i0.ɵɵelementStart(29, "textarea", 124);
852
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Template_textarea_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.FormDescription, $event) || (ctx_r2.FormDescription = $event); return i0.ɵɵresetView($event); });
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); });
853
684
  i0.ɵɵelementEnd()();
854
- i0.ɵɵelementStart(30, "div", 125);
855
- i0.ɵɵconditionalCreate(31, TestingExplorerComponent_Conditional_7_Conditional_31_Template, 10, 1, "div", 120);
856
- i0.ɵɵconditionalCreate(32, TestingExplorerComponent_Conditional_7_Conditional_32_Template, 8, 1, "div", 120);
857
- i0.ɵɵelementStart(33, "div", 120)(34, "label", 121);
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);
858
689
  i0.ɵɵtext(35, "Status");
859
690
  i0.ɵɵelementEnd();
860
- i0.ɵɵelementStart(36, "select", 126);
861
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Template_select_ngModelChange_36_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.FormStatus, $event) || (ctx_r2.FormStatus = $event); return i0.ɵɵresetView($event); });
862
- i0.ɵɵrepeaterCreate(37, TestingExplorerComponent_Conditional_7_For_38_Template, 2, 2, "option", 127, i0.ɵɵrepeaterTrackByIdentity);
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);
863
694
  i0.ɵɵelementEnd()()()();
864
- i0.ɵɵconditionalCreate(39, TestingExplorerComponent_Conditional_7_Conditional_39_Template, 12, 2, "div", 118);
865
- i0.ɵɵelementStart(40, "div", 118)(41, "div", 119);
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);
866
697
  i0.ɵɵtext(42, "Tags");
867
698
  i0.ɵɵelementEnd();
868
- i0.ɵɵelementStart(43, "div", 120)(44, "input", 128);
869
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_Conditional_7_Template_input_ngModelChange_44_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.FormTags, $event) || (ctx_r2.FormTags = $event); return i0.ɵɵresetView($event); });
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); });
870
701
  i0.ɵɵelementEnd();
871
- i0.ɵɵelementStart(45, "span", 129);
702
+ i0.ɵɵelementStart(45, "span", 100);
872
703
  i0.ɵɵtext(46, "Separate multiple tags with commas");
873
704
  i0.ɵɵelementEnd()()()();
874
- i0.ɵɵelementStart(47, "div", 130)(48, "button", 30);
875
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_7_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
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()); });
876
707
  i0.ɵɵtext(49, "Cancel");
877
708
  i0.ɵɵelementEnd();
878
- i0.ɵɵelementStart(50, "button", 131);
879
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_7_Template_button_click_50_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SaveForm()); });
880
- i0.ɵɵconditionalCreate(51, TestingExplorerComponent_Conditional_7_Conditional_51_Template, 1, 0, "i", 132)(52, TestingExplorerComponent_Conditional_7_Conditional_52_Template, 1, 0, "i", 133);
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);
881
712
  i0.ɵɵtext(53);
882
713
  i0.ɵɵelementEnd()()();
883
714
  } if (rf & 2) {
884
- const ctx_r2 = i0.ɵɵnextContext();
715
+ const ctx_r2 = i0.ɵɵnextContext(2);
885
716
  i0.ɵɵadvance(5);
886
717
  i0.ɵɵtextInterpolate1(" Create ", ctx_r2.SlideoutCreateType === "test" ? "Test" : "Test Suite", " ");
887
718
  i0.ɵɵadvance(4);
@@ -915,24 +746,63 @@ function TestingExplorerComponent_Conditional_7_Template(rf, ctx) { if (rf & 1)
915
746
  i0.ɵɵadvance(2);
916
747
  i0.ɵɵtextInterpolate1(" Create ", ctx_r2.SlideoutCreateType === "test" ? "Test" : "Suite", " ");
917
748
  } }
918
- function TestingExplorerComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
919
- const _r33 = i0.ɵɵgetCurrentView();
920
- i0.ɵɵelementStart(0, "mj-slide-panel", 139);
921
- i0.ɵɵlistener("Closed", function TestingExplorerComponent_Conditional_8_Template_mj_slide_panel_Closed_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnPanelClosed()); });
922
- i0.ɵɵelementStart(1, "app-test-run-dialog", 140);
923
- i0.ɵɵlistener("PanelClose", function TestingExplorerComponent_Conditional_8_Template_app_test_run_dialog_PanelClose_1_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnPanelClosed()); });
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()); });
924
755
  i0.ɵɵelementEnd()();
925
756
  } if (rf & 2) {
926
- const ctx_r2 = i0.ɵɵnextContext();
757
+ const ctx_r2 = i0.ɵɵnextContext(2);
927
758
  i0.ɵɵproperty("Resizable", true);
928
759
  i0.ɵɵadvance();
929
760
  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");
930
761
  } }
762
+ 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)); });
768
+ i0.ɵɵelementEnd();
769
+ i0.ɵɵconditionalCreate(5, TestingExplorerComponent_ng_template_2_Conditional_5_Template, 54, 18, "div", 23);
770
+ i0.ɵɵelementEnd();
771
+ i0.ɵɵconditionalCreate(6, TestingExplorerComponent_ng_template_2_Conditional_6_Template, 2, 5, "mj-slide-panel", 24);
772
+ } if (rf & 2) {
773
+ const ctx_r2 = i0.ɵɵnextContext();
774
+ i0.ɵɵconditional(ctx_r2.IsLoading ? 0 : 1);
775
+ i0.ɵɵadvance(2);
776
+ i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 2 : -1);
777
+ i0.ɵɵadvance();
778
+ i0.ɵɵstyleProp("width", ctx_r2.SlideoutWidth, "px");
779
+ i0.ɵɵclassProp("open", ctx_r2.SlideoutOpen);
780
+ i0.ɵɵadvance(2);
781
+ i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 5 : -1);
782
+ i0.ɵɵadvance();
783
+ i0.ɵɵconditional(ctx_r2.testingDialogService.IsPanelOpen ? 6 : -1);
784
+ } }
931
785
  export class TestingExplorerComponent extends BaseAngularComponent {
932
786
  cdr;
933
787
  viewContainerRef;
934
788
  testingDialogService;
935
789
  instrumentationService;
790
+ HeaderViewOptions = [
791
+ { key: 'card', icon: 'fa-solid fa-grip', title: 'Card view' },
792
+ { key: 'list', icon: 'fa-solid fa-list', title: 'List view' }
793
+ ];
794
+ DisplayModeOptions = [
795
+ { key: 'all', label: 'All' },
796
+ { key: 'suites', label: 'Suites' },
797
+ { key: 'tests', label: 'Tests' }
798
+ ];
799
+ /** mj-page-search emits a string; bridge it to the inner's Event-based OnSearchInput. */
800
+ OnSearchInputValue(value) {
801
+ const fakeEvent = { target: { value } };
802
+ this.OnSearchInput(fakeEvent);
803
+ }
804
+ /** When true, the inner bespoke .toolbar is hidden — the parent shell owns the chrome. */
805
+ HideToolbar = false;
936
806
  destroy$ = new Subject();
937
807
  // Raw cached data
938
808
  allTests = [];
@@ -953,7 +823,6 @@ export class TestingExplorerComponent extends BaseAngularComponent {
953
823
  _sortDirection$ = new BehaviorSubject('asc');
954
824
  // Template-bound state
955
825
  IsLoading = true;
956
- IsSidebarCollapsed = false;
957
826
  SearchTerm = '';
958
827
  StatusFilters = new Set();
959
828
  ViewMode = 'card';
@@ -1002,14 +871,6 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1002
871
  return false;
1003
872
  return true;
1004
873
  }
1005
- get SortFieldLabel() {
1006
- switch (this.SortField) {
1007
- case 'name': return 'Name';
1008
- case 'updated': return 'Updated';
1009
- case 'status': return 'Status';
1010
- default: return 'Name';
1011
- }
1012
- }
1013
874
  constructor(cdr, viewContainerRef, testingDialogService, instrumentationService) {
1014
875
  super();
1015
876
  this.cdr = cdr;
@@ -1092,18 +953,159 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1092
953
  ClearSearch() {
1093
954
  this._searchTerm$.next('');
1094
955
  }
1095
- ToggleSidebar() {
1096
- this.IsSidebarCollapsed = !this.IsSidebarCollapsed;
1097
- this.cdr.markForCheck();
1098
- }
1099
- ToggleSuiteExpand(node, event) {
1100
- event.stopPropagation();
956
+ ToggleSuiteExpand(node) {
1101
957
  node.Expanded = !node.Expanded;
1102
958
  this.cdr.markForCheck();
1103
959
  }
1104
- ToggleSortDirection() {
1105
- const newDir = this.SortDirection === 'asc' ? 'desc' : 'asc';
1106
- this._sortDirection$.next(newDir);
960
+ // ---------------------------------------------------------------------------
961
+ // <mj-left-nav> adapters
962
+ //
963
+ // The rail is one <mj-left-nav> with three logical sections. Internal state
964
+ // still lives on SelectedSidebar (typed Type+ID) and on SuiteTreeNode.Expanded
965
+ // booleans — these getters translate to/from the primitive's flat
966
+ // string-id interface.
967
+ // ---------------------------------------------------------------------------
968
+ /** Composite-key sections fed to <mj-left-nav>. */
969
+ get NavSections() {
970
+ const suiteItems = this.FilteredSuiteTree.length === 0
971
+ ? [{ id: '__suites-empty', label: 'No suites found', disabled: true }]
972
+ : this.FilteredSuiteTree.map(node => this.suiteNodeToNavItem(node));
973
+ return [
974
+ {
975
+ label: 'Browse',
976
+ items: [
977
+ { id: 'all', label: 'All Items', icon: 'fa-solid fa-layer-group', badge: this.TotalItemCount },
978
+ { id: 'standalone', label: 'Standalone Tests', icon: 'fa-solid fa-vial', badge: this.StandaloneTestCount },
979
+ ]
980
+ },
981
+ { label: 'Test Suites', items: suiteItems },
982
+ {
983
+ label: 'Test Types',
984
+ items: this.FilteredTestTypes.map(tt => ({
985
+ id: `testType:${tt.ID}`,
986
+ label: tt.Name,
987
+ icon: 'fa-solid fa-tag',
988
+ badge: this.GetTestCountForType(tt.ID)
989
+ }))
990
+ }
991
+ ];
992
+ }
993
+ /** Recursive map SuiteTreeNode -> MJLeftNavItem. Leaves keep `children: []`
994
+ * so the primitive renders a placeholder where the chevron would be —
995
+ * this keeps siblings vertically aligned. */
996
+ suiteNodeToNavItem(node) {
997
+ return {
998
+ id: `suite:${node.ID}`,
999
+ label: node.Name,
1000
+ icon: 'fa-solid fa-folder',
1001
+ badge: node.TestCount,
1002
+ children: node.Children.map(child => this.suiteNodeToNavItem(child))
1003
+ };
1004
+ }
1005
+ /** Translate SelectedSidebar (typed Type+ID) to the rail's composite key. */
1006
+ get ActiveNavId() {
1007
+ const sel = this.SelectedSidebar;
1008
+ if (sel.Type === 'suite' || sel.Type === 'testType') {
1009
+ return `${sel.Type}:${sel.ID ?? ''}`;
1010
+ }
1011
+ return sel.Type;
1012
+ }
1013
+ /** Suite-node IDs that are currently expanded, walked from FilteredSuiteTree. */
1014
+ get ExpandedNavIds() {
1015
+ const out = [];
1016
+ const walk = (nodes) => {
1017
+ for (const n of nodes) {
1018
+ if (n.Expanded)
1019
+ out.push(`suite:${n.ID}`);
1020
+ walk(n.Children);
1021
+ }
1022
+ };
1023
+ walk(this.FilteredSuiteTree);
1024
+ return out;
1025
+ }
1026
+ /** Parse composite id and delegate to the existing SelectSidebarItem path. */
1027
+ OnNavItemClicked(item) {
1028
+ const id = item.id;
1029
+ if (id === 'all') {
1030
+ this.SelectSidebarItem({ Type: 'all', ID: null });
1031
+ }
1032
+ else if (id === 'standalone') {
1033
+ this.SelectSidebarItem({ Type: 'standalone', ID: null });
1034
+ }
1035
+ else if (id.startsWith('suite:')) {
1036
+ this.SelectSidebarItem({ Type: 'suite', ID: id.substring('suite:'.length) });
1037
+ }
1038
+ else if (id.startsWith('testType:')) {
1039
+ this.SelectSidebarItem({ Type: 'testType', ID: id.substring('testType:'.length) });
1040
+ }
1041
+ }
1042
+ /** Chevron click on a suite item — toggle that node's Expanded flag. */
1043
+ OnNavItemToggled(item) {
1044
+ if (!item.id.startsWith('suite:'))
1045
+ return;
1046
+ const suiteId = item.id.substring('suite:'.length);
1047
+ const node = this.findSuiteNode(this.FilteredSuiteTree, suiteId);
1048
+ if (node)
1049
+ this.ToggleSuiteExpand(node);
1050
+ }
1051
+ findSuiteNode(tree, id) {
1052
+ for (const node of tree) {
1053
+ if (UUIDsEqual(node.ID, id))
1054
+ return node;
1055
+ const found = this.findSuiteNode(node.Children, id);
1056
+ if (found)
1057
+ return found;
1058
+ }
1059
+ return null;
1060
+ }
1061
+ // ---------------------------------------------------------------------------
1062
+ // Sort filter-popover wiring
1063
+ //
1064
+ // The chrome surfaces SortField + SortDirection through a <mj-filter-popover>
1065
+ // — same pattern AI Analytics → Model Performance uses for its SortBy
1066
+ // selection. Was previously a single direction-toggle button in chrome
1067
+ // [actions] with no way to change the field from the UI.
1068
+ // ---------------------------------------------------------------------------
1069
+ sortFieldOptions = [
1070
+ { text: 'Name', value: 'name' },
1071
+ { text: 'Updated', value: 'updated' },
1072
+ { text: 'Status', value: 'status' },
1073
+ ];
1074
+ sortDirectionOptions = [
1075
+ { text: 'Ascending', value: 'asc' },
1076
+ { text: 'Descending', value: 'desc' },
1077
+ ];
1078
+ get sortFilterFields() {
1079
+ return [
1080
+ { key: 'SortField', type: 'dropdown', label: 'Sort by',
1081
+ icon: 'fa-solid fa-arrow-down-wide-short', options: this.sortFieldOptions },
1082
+ { key: 'SortDirection', type: 'dropdown', label: 'Direction',
1083
+ icon: 'fa-solid fa-arrow-up-arrow-down', options: this.sortDirectionOptions },
1084
+ ];
1085
+ }
1086
+ get sortFilterValues() {
1087
+ return { SortField: this.SortField, SortDirection: this.SortDirection };
1088
+ }
1089
+ onSortFilterChange(values) {
1090
+ if ('SortField' in values) {
1091
+ this._sortField$.next(values['SortField']);
1092
+ }
1093
+ if ('SortDirection' in values) {
1094
+ this._sortDirection$.next(values['SortDirection']);
1095
+ }
1096
+ }
1097
+ resetSortFilters() {
1098
+ this._sortField$.next('name');
1099
+ this._sortDirection$.next('asc');
1100
+ }
1101
+ /** Non-zero when the user has changed SortField or SortDirection from defaults — drives the popover badge. */
1102
+ get ActiveSortFilterCount() {
1103
+ let count = 0;
1104
+ if (this.SortField !== 'name')
1105
+ count++;
1106
+ if (this.SortDirection !== 'asc')
1107
+ count++;
1108
+ return count;
1107
1109
  }
1108
1110
  RunTest(testId) {
1109
1111
  this.testingDialogService.OpenTestPanel(testId);
@@ -1666,196 +1668,110 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1666
1668
  throw new Error('Failed to save test suite. Please check your input and try again.');
1667
1669
  }
1668
1670
  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)); };
1669
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TestingExplorerComponent, selectors: [["app-testing-explorer"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 8, consts: [["suiteTreeTpl", ""], [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..."], [1, "sidebar"], [1, "sidebar-header"], [1, "sidebar-toggle", 3, "click"], [1, "fa-solid"], [1, "sidebar-content"], [1, "main-content"], [1, "toolbar"], [1, "toolbar-left"], [1, "toolbar-search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search tests and suites...", 3, "input", "value"], [1, "clear-search"], [1, "status-chips"], [1, "chip", 3, "active"], [1, "toolbar-right"], [1, "result-count"], [1, "view-toggle"], ["title", "Card View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-grip"], ["title", "List View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-list"], [1, "btn", "btn-secondary", 3, "click"], [1, "fa-solid", "fa-folder-plus"], [1, "btn", "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "toggle-bar"], [1, "toggle-group"], [1, "toggle-btn", 3, "click"], [1, "sort-indicator"], [1, "sort-btn", 3, "click"], [1, "fa-solid", "fa-arrow-down-short-wide"], [1, "content-area"], [1, "empty-state"], [1, "sidebar-section"], [1, "sidebar-section-title"], [1, "sidebar-item", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "sidebar-count"], [1, "fa-solid", "fa-vial"], [1, "sidebar-empty"], [1, "sidebar-item", 3, "active"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "fa-solid", "fa-tag"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [1, "chip", 3, "click"], [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, "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, "sidebar-item", "suite-tree-item", 3, "click"], [1, "tree-toggle"], [1, "tree-name"], [1, "tree-toggle", 3, "click"], [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-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) {
1670
- const _r1 = i0.ɵɵgetCurrentView();
1671
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_0_Template, 2, 0, "div", 1)(1, TestingExplorerComponent_Conditional_1_Template, 49, 28, "div", 2);
1672
- i0.ɵɵtemplate(2, TestingExplorerComponent_ng_template_2_Template, 8, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
1673
- i0.ɵɵconditionalCreate(4, TestingExplorerComponent_Conditional_4_Template, 1, 0, "div", 3);
1674
- i0.ɵɵelementStart(5, "div", 4)(6, "div", 5);
1675
- i0.ɵɵlistener("mousedown", function TestingExplorerComponent_Template_div_mousedown_6_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnResizeStart($event)); });
1676
- i0.ɵɵelementEnd();
1677
- i0.ɵɵconditionalCreate(7, TestingExplorerComponent_Conditional_7_Template, 54, 18, "div", 6);
1678
- i0.ɵɵelementEnd();
1679
- i0.ɵɵconditionalCreate(8, TestingExplorerComponent_Conditional_8_Template, 2, 5, "mj-slide-panel", 7);
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);
1680
1674
  } if (rf & 2) {
1681
- i0.ɵɵconditional(ctx.IsLoading ? 0 : 1);
1682
- i0.ɵɵadvance(4);
1683
- i0.ɵɵconditional(ctx.SlideoutOpen ? 4 : -1);
1684
- i0.ɵɵadvance();
1685
- i0.ɵɵstyleProp("width", ctx.SlideoutWidth, "px");
1686
- i0.ɵɵclassProp("open", ctx.SlideoutOpen);
1687
- i0.ɵɵadvance(2);
1688
- i0.ɵɵconditional(ctx.SlideoutOpen ? 7 : -1);
1689
- i0.ɵɵadvance();
1690
- i0.ɵɵconditional(ctx.testingDialogService.IsPanelOpen ? 8 : -1);
1691
- } }, dependencies: [i3.NgTemplateOutlet, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.MinValidator, i4.NgModel, 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 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 .sidebar[_ngcontent-%COMP%] {\n width: 280px;\n min-width: 280px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transition: width 0.2s ease, min-width 0.2s ease;\n }\n\n .sidebar.collapsed[_ngcontent-%COMP%] {\n width: 48px;\n min-width: 48px;\n }\n\n .sidebar-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .sidebar-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .sidebar.collapsed[_ngcontent-%COMP%] .sidebar-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: none;\n }\n\n .sidebar-toggle[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\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: 11px;\n transition: all 0.15s ease;\n }\n\n .sidebar-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .sidebar-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .sidebar-section[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n }\n\n .sidebar-section-title[_ngcontent-%COMP%] {\n padding: 8px 16px 4px;\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.8px;\n }\n\n .sidebar-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n font-size: 13px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .sidebar-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .sidebar-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .sidebar-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n }\n\n .sidebar-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:not(.sidebar-count) {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .sidebar-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n flex-shrink: 0;\n }\n\n .sidebar-item.active[_ngcontent-%COMP%] .sidebar-count[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .sidebar-empty[_ngcontent-%COMP%] {\n padding: 8px 16px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-style: italic;\n }\n\n \n\n .suite-tree-item[_ngcontent-%COMP%] {\n gap: 6px;\n }\n\n .tree-toggle[_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 9px;\n flex-shrink: 0;\n border-radius: 4px;\n padding: 0;\n }\n\n .tree-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n }\n\n .tree-name[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n \n\n\n\n .main-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n \n\n .toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n padding: 16px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n }\n\n .toolbar-search-box[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n min-width: 240px;\n max-width: 360px;\n flex: 1;\n transition: border-color 0.2s ease;\n }\n\n .toolbar-search-box[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n }\n\n .toolbar-search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 13px;\n }\n\n .toolbar-search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n\n .toolbar-search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .clear-search[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px 4px;\n border-radius: 4px;\n }\n\n .clear-search[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n }\n\n .status-chips[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n }\n\n .chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 6px 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid transparent;\n border-radius: 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n }\n\n .chip.active[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n }\n\n .chip.active[data-status=\"active\"][_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n }\n\n .chip.active[data-status=\"pending\"][_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n }\n\n .chip.active[data-status=\"disabled\"][_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n border-color: var(--mj-text-muted);\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n }\n\n .result-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n white-space: nowrap;\n }\n\n .view-toggle[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .view-btn[_ngcontent-%COMP%] {\n width: 34px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 13px;\n transition: all 0.15s ease;\n }\n\n .view-btn[_ngcontent-%COMP%]:not(:last-child) {\n border-right: 1px solid var(--mj-border-default);\n }\n\n .view-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .view-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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 .toggle-bar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .toggle-group[_ngcontent-%COMP%] {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .toggle-btn[_ngcontent-%COMP%] {\n padding: 6px 16px;\n background: var(--mj-bg-surface);\n border: none;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .toggle-btn[_ngcontent-%COMP%]:not(:last-child) {\n border-right: 1px solid var(--mj-border-default);\n }\n\n .toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .toggle-btn[_ngcontent-%COMP%]:hover:not(.active) {\n background: var(--mj-bg-surface-sunken);\n }\n\n .sort-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n }\n\n .sort-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n cursor: pointer;\n }\n\n .sort-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .sort-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\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: 900px) {\n .sidebar[_ngcontent-%COMP%] {\n display: none;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left[_ngcontent-%COMP%], .toolbar-right[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n justify-content: center;\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 });
1675
+ 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 });
1692
1677
  }
1693
1678
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingExplorerComponent, [{
1694
1679
  type: Component,
1695
1680
  args: [{ standalone: false, selector: 'app-testing-explorer', changeDetection: ChangeDetectionStrategy.OnPush, template: `
1681
+ @if (HideToolbar) {
1682
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1683
+ } @else {
1684
+ <mj-page-layout>
1685
+ <mj-page-header
1686
+ Title="Test Explorer"
1687
+ Icon="fa-solid fa-compass"
1688
+ Subtitle="Browse tests and test suites">
1689
+ <!-- X-of-Y filtered count earns its meta spot per chrome conventions §2.
1690
+ TotalItemCount and FilteredResultCount are both kept in sync by
1691
+ the component as the rail selection / status chips / search input
1692
+ narrow the data. -->
1693
+ <div meta>
1694
+ <mj-stat-badge
1695
+ [Count]="FilteredResultCount"
1696
+ [Total]="TotalItemCount"
1697
+ Label="results">
1698
+ </mj-stat-badge>
1699
+ </div>
1700
+ <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
+ <button mjButton variant="secondary" size="sm" (click)="OnNewSuite()">
1725
+ <i class="fa-solid fa-folder-plus"></i> New Suite
1726
+ </button>
1727
+ <button mjButton variant="primary" size="sm" (click)="OnNewTest()">
1728
+ <i class="fa-solid fa-plus"></i> New Test
1729
+ </button>
1730
+ </div>
1731
+ <div toolbar>
1732
+ <mj-page-search
1733
+ Placeholder="Search tests and suites..."
1734
+ [Value]="SearchTerm"
1735
+ (ValueChange)="OnSearchInputValue($event)">
1736
+ </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
+ }
1744
+ <mj-view-toggle
1745
+ [Options]="DisplayModeOptions"
1746
+ [ActiveKey]="DisplayMode"
1747
+ (KeyChange)="SetDisplayMode($any($event))">
1748
+ </mj-view-toggle>
1749
+ </div>
1750
+ </mj-page-header>
1751
+ <mj-page-body [Flex]="true" [Padding]="false">
1752
+ <ng-container *ngTemplateOutlet="content"></ng-container>
1753
+ </mj-page-body>
1754
+ </mj-page-layout>
1755
+ }
1756
+
1757
+ <ng-template #content>
1696
1758
  @if (IsLoading) {
1697
1759
  <div class="explorer-loading">
1698
1760
  <mj-loading text="Loading test explorer..."></mj-loading>
1699
1761
  </div>
1700
1762
  } @else {
1701
1763
  <div class="explorer-layout">
1702
- <!-- Left Sidebar -->
1703
- <aside class="sidebar" [class.collapsed]="IsSidebarCollapsed">
1704
- <div class="sidebar-header">
1705
- <h3>Explorer</h3>
1706
- <button class="sidebar-toggle" (click)="ToggleSidebar()">
1707
- <i class="fa-solid" [class.fa-chevron-left]="!IsSidebarCollapsed" [class.fa-chevron-right]="IsSidebarCollapsed"></i>
1708
- </button>
1709
- </div>
1710
-
1711
- @if (!IsSidebarCollapsed) {
1712
- <div class="sidebar-content">
1713
- <!-- Browse Section -->
1714
- <div class="sidebar-section">
1715
- <div class="sidebar-section-title">Browse</div>
1716
- <div
1717
- class="sidebar-item"
1718
- [class.active]="SelectedSidebar.Type === 'all'"
1719
- (click)="SelectSidebarItem({ Type: 'all', ID: null })"
1720
- >
1721
- <i class="fa-solid fa-layer-group"></i>
1722
- <span>All Items</span>
1723
- <span class="sidebar-count">{{ TotalItemCount }}</span>
1724
- </div>
1725
- <div
1726
- class="sidebar-item"
1727
- [class.active]="SelectedSidebar.Type === 'standalone'"
1728
- (click)="SelectSidebarItem({ Type: 'standalone', ID: null })"
1729
- >
1730
- <i class="fa-solid fa-vial"></i>
1731
- <span>Standalone Tests</span>
1732
- <span class="sidebar-count">{{ StandaloneTestCount }}</span>
1733
- </div>
1734
- </div>
1735
-
1736
- <!-- Test Suites Section -->
1737
- <div class="sidebar-section">
1738
- <div class="sidebar-section-title">Test Suites</div>
1739
- @for (node of FilteredSuiteTree; track node.ID) {
1740
- <ng-container
1741
- *ngTemplateOutlet="suiteTreeTpl; context: { node: node, depth: 0 }"
1742
- ></ng-container>
1743
- }
1744
- @if (FilteredSuiteTree.length === 0) {
1745
- <div class="sidebar-empty">No suites found</div>
1746
- }
1747
- </div>
1748
-
1749
- <!-- Test Types Section -->
1750
- <div class="sidebar-section">
1751
- <div class="sidebar-section-title">Test Types</div>
1752
- @for (tt of FilteredTestTypes; track tt.ID) {
1753
- <div
1754
- class="sidebar-item"
1755
- [class.active]="SelectedSidebar.Type === 'testType' && IsSidebarSelected(tt.ID)"
1756
- (click)="SelectSidebarItem({ Type: 'testType', ID: tt.ID })"
1757
- >
1758
- <i class="fa-solid fa-tag"></i>
1759
- <span>{{ tt.Name }}</span>
1760
- <span class="sidebar-count">{{ GetTestCountForType(tt.ID) }}</span>
1761
- </div>
1762
- }
1763
- </div>
1764
- </div>
1765
- }
1766
- </aside>
1764
+ <!-- Left rail -->
1765
+ <mj-left-nav
1766
+ [Sections]="NavSections"
1767
+ [ActiveId]="ActiveNavId"
1768
+ [ExpandedIds]="ExpandedNavIds"
1769
+ (ItemClicked)="OnNavItemClicked($event)"
1770
+ (ItemToggled)="OnNavItemToggled($event)">
1771
+ </mj-left-nav>
1767
1772
 
1768
1773
  <!-- Main Content -->
1769
- <main class="main-content">
1770
- <!-- Toolbar -->
1771
- <div class="toolbar">
1772
- <div class="toolbar-left">
1773
- <div class="toolbar-search-box">
1774
- <i class="fa-solid fa-search"></i>
1775
- <input
1776
- type="text"
1777
- placeholder="Search tests and suites..."
1778
- [value]="SearchTerm"
1779
- (input)="OnSearchInput($event)"
1780
- />
1781
- @if (SearchTerm) {
1782
- <button class="clear-search" (click)="ClearSearch()">
1783
- <i class="fa-solid fa-times"></i>
1784
- </button>
1785
- }
1786
- </div>
1787
- <div class="status-chips">
1788
- @for (status of StatusOptions; track status) {
1789
- <button
1790
- class="chip"
1791
- [class.active]="IsStatusActive(status)"
1792
- [attr.data-status]="status.toLowerCase()"
1793
- (click)="ToggleStatus(status)"
1794
- >
1795
- {{ status }}
1796
- </button>
1797
- }
1798
- </div>
1799
- </div>
1800
- <div class="toolbar-right">
1801
- <span class="result-count">{{ FilteredResultCount }} results</span>
1802
- <div class="view-toggle">
1803
- <button
1804
- class="view-btn"
1805
- [class.active]="ViewMode === 'card'"
1806
- (click)="SetViewMode('card')"
1807
- title="Card View"
1808
- >
1809
- <i class="fa-solid fa-grip"></i>
1810
- </button>
1811
- <button
1812
- class="view-btn"
1813
- [class.active]="ViewMode === 'list'"
1814
- (click)="SetViewMode('list')"
1815
- title="List View"
1816
- >
1817
- <i class="fa-solid fa-list"></i>
1818
- </button>
1819
- </div>
1820
- <button class="btn btn-secondary" (click)="OnNewSuite()">
1821
- <i class="fa-solid fa-folder-plus"></i>
1822
- New Suite
1823
- </button>
1824
- <button class="btn btn-primary" (click)="OnNewTest()">
1825
- <i class="fa-solid fa-plus"></i>
1826
- New Test
1827
- </button>
1828
- </div>
1829
- </div>
1830
-
1831
- <!-- Toggle Bar -->
1832
- <div class="toggle-bar">
1833
- <div class="toggle-group">
1834
- <button
1835
- class="toggle-btn"
1836
- [class.active]="DisplayMode === 'all'"
1837
- (click)="SetDisplayMode('all')"
1838
- >All</button>
1839
- <button
1840
- class="toggle-btn"
1841
- [class.active]="DisplayMode === 'suites'"
1842
- (click)="SetDisplayMode('suites')"
1843
- >Suites Only</button>
1844
- <button
1845
- class="toggle-btn"
1846
- [class.active]="DisplayMode === 'tests'"
1847
- (click)="SetDisplayMode('tests')"
1848
- >Tests Only</button>
1849
- </div>
1850
- <div class="sort-indicator">
1851
- <button class="sort-btn" (click)="ToggleSortDirection()">
1852
- <i class="fa-solid fa-arrow-down-short-wide"></i>
1853
- {{ SortFieldLabel }}
1854
- <i class="fa-solid" [class.fa-arrow-up]="SortDirection === 'asc'" [class.fa-arrow-down]="SortDirection === 'desc'"></i>
1855
- </button>
1856
- </div>
1857
- </div>
1858
-
1774
+ <mj-left-nav-content>
1859
1775
  <!-- Content Area -->
1860
1776
  <div class="content-area">
1861
1777
  <!-- Suites Section -->
@@ -2046,36 +1962,10 @@ export class TestingExplorerComponent extends BaseAngularComponent {
2046
1962
  </div>
2047
1963
  }
2048
1964
  </div>
2049
- </main>
1965
+ </mj-left-nav-content>
2050
1966
  </div>
2051
1967
  }
2052
1968
 
2053
- <!-- Template for recursive suite tree rendering -->
2054
- <ng-template #suiteTreeTpl let-node="node" let-depth="depth">
2055
- <div
2056
- class="sidebar-item suite-tree-item"
2057
- [style.paddingLeft.px]="16 + depth * 14"
2058
- [class.active]="SelectedSidebar.Type === 'suite' && IsSidebarSelected(node.ID)"
2059
- (click)="SelectSidebarItem({ Type: 'suite', ID: node.ID })"
2060
- >
2061
- @if (node.Children.length > 0) {
2062
- <button class="tree-toggle" (click)="ToggleSuiteExpand(node, $event)">
2063
- <i class="fa-solid" [class.fa-chevron-right]="!node.Expanded" [class.fa-chevron-down]="node.Expanded"></i>
2064
- </button>
2065
- }
2066
- <i class="fa-solid fa-folder"></i>
2067
- <span class="tree-name">{{ node.Name }}</span>
2068
- <span class="sidebar-count">{{ node.TestCount }}</span>
2069
- </div>
2070
- @if (node.Expanded && node.Children.length > 0) {
2071
- @for (child of node.Children; track child.ID) {
2072
- <ng-container
2073
- *ngTemplateOutlet="suiteTreeTpl; context: { node: child, depth: depth + 1 }"
2074
- ></ng-container>
2075
- }
2076
- }
2077
- </ng-template>
2078
-
2079
1969
  <!-- Slideout Backdrop -->
2080
1970
  @if (SlideoutOpen) {
2081
1971
  <div class="slideout-backdrop" (click)="CloseSlideout()"></div>
@@ -2260,7 +2150,10 @@ export class TestingExplorerComponent extends BaseAngularComponent {
2260
2150
  </app-test-run-dialog>
2261
2151
  </mj-slide-panel>
2262
2152
  }
2263
- `, 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 Sidebar\n ========================================== */\n .sidebar {\n width: 280px;\n min-width: 280px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transition: width 0.2s ease, min-width 0.2s ease;\n }\n\n .sidebar.collapsed {\n width: 48px;\n min-width: 48px;\n }\n\n .sidebar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .sidebar-header h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n }\n\n .sidebar.collapsed .sidebar-header h3 {\n display: none;\n }\n\n .sidebar-toggle {\n width: 28px;\n height: 28px;\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: 11px;\n transition: all 0.15s ease;\n }\n\n .sidebar-toggle:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .sidebar-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .sidebar-section {\n margin-bottom: 8px;\n }\n\n .sidebar-section-title {\n padding: 8px 16px 4px;\n font-size: 10px;\n font-weight: 700;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.8px;\n }\n\n .sidebar-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n font-size: 13px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .sidebar-item:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .sidebar-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .sidebar-item i {\n font-size: 12px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n }\n\n .sidebar-item span:not(.sidebar-count) {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .sidebar-count {\n font-size: 11px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n flex-shrink: 0;\n }\n\n .sidebar-item.active .sidebar-count {\n color: var(--mj-brand-primary);\n }\n\n .sidebar-empty {\n padding: 8px 16px;\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-style: italic;\n }\n\n /* Tree nodes */\n .suite-tree-item {\n gap: 6px;\n }\n\n .tree-toggle {\n width: 18px;\n height: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 9px;\n flex-shrink: 0;\n border-radius: 4px;\n padding: 0;\n }\n\n .tree-toggle:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n }\n\n .tree-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n /* ==========================================\n Main Content\n ========================================== */\n .main-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n /* Toolbar */\n .toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n padding: 16px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n }\n\n .toolbar-search-box {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n min-width: 240px;\n max-width: 360px;\n flex: 1;\n transition: border-color 0.2s ease;\n }\n\n .toolbar-search-box:focus-within {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n }\n\n .toolbar-search-box i {\n color: var(--mj-text-disabled);\n font-size: 13px;\n }\n\n .toolbar-search-box input {\n flex: 1;\n border: none;\n background: transparent;\n outline: none;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n\n .toolbar-search-box input::placeholder {\n color: var(--mj-text-disabled);\n }\n\n .clear-search {\n border: none;\n background: transparent;\n color: var(--mj-text-disabled);\n cursor: pointer;\n padding: 2px 4px;\n border-radius: 4px;\n }\n\n .clear-search:hover {\n color: var(--mj-text-muted);\n background: var(--mj-border-default);\n }\n\n .status-chips {\n display: flex;\n gap: 6px;\n }\n\n .chip {\n display: inline-flex;\n align-items: center;\n padding: 6px 14px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid transparent;\n border-radius: 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .chip:hover {\n background: var(--mj-border-default);\n }\n\n .chip.active {\n color: var(--mj-text-inverse);\n }\n\n .chip.active[data-status=\"active\"] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n }\n\n .chip.active[data-status=\"pending\"] {\n background: var(--mj-status-warning);\n border-color: var(--mj-status-warning);\n }\n\n .chip.active[data-status=\"disabled\"] {\n background: var(--mj-text-muted);\n border-color: var(--mj-text-muted);\n }\n\n .toolbar-right {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n }\n\n .result-count {\n font-size: 12px;\n color: var(--mj-text-disabled);\n font-weight: 500;\n white-space: nowrap;\n }\n\n .view-toggle {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .view-btn {\n width: 34px;\n height: 34px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface);\n border: none;\n color: var(--mj-text-disabled);\n cursor: pointer;\n font-size: 13px;\n transition: all 0.15s ease;\n }\n\n .view-btn:not(:last-child) {\n border-right: 1px solid var(--mj-border-default);\n }\n\n .view-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n .view-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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 /* Toggle Bar */\n .toggle-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .toggle-group {\n display: flex;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n }\n\n .toggle-btn {\n padding: 6px 16px;\n background: var(--mj-bg-surface);\n border: none;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n }\n\n .toggle-btn:not(:last-child) {\n border-right: 1px solid var(--mj-border-default);\n }\n\n .toggle-btn.active {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .toggle-btn:hover:not(.active) {\n background: var(--mj-bg-surface-sunken);\n }\n\n .sort-indicator {\n display: flex;\n align-items: center;\n }\n\n .sort-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-muted);\n cursor: pointer;\n }\n\n .sort-btn:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .sort-btn i {\n font-size: 11px;\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: 900px) {\n .sidebar {\n display: none;\n }\n\n .toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left, .toolbar-right {\n flex-wrap: wrap;\n justify-content: center;\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 "] }]
2264
- }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i1.TestingDialogService }, { type: i2.TestingInstrumentationService }], null); })();
2265
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingExplorerComponent, { className: "TestingExplorerComponent", filePath: "src/Testing/components/testing-explorer.component.ts", lineNumber: 1823 }); })();
2153
+ </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 "] }]
2155
+ }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i1.TestingDialogService }, { type: i2.TestingInstrumentationService }], { HideToolbar: [{
2156
+ type: Input
2157
+ }] }); })();
2158
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingExplorerComponent, { className: "TestingExplorerComponent", filePath: "src/Testing/components/testing-explorer.component.ts", lineNumber: 1315 }); })();
2266
2159
  //# sourceMappingURL=testing-explorer.component.js.map