@memberjunction/ng-dashboards 5.35.0 → 5.37.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 (159) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js +3 -3
  2. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  3. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +157 -137
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  11. package/dist/AI/components/models/model-management.component.js +4 -4
  12. package/dist/AI/components/models/model-management.component.js.map +1 -1
  13. package/dist/AI/components/prompts/prompt-management.component.js +3 -3
  14. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  16. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  17. package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
  18. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  19. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  20. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  22. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  23. package/dist/Actions/components/actions-overview.component.js +137 -142
  24. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  25. package/dist/Actions/components/execution-monitoring.component.js +111 -116
  26. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  27. package/dist/Admin/admin-data-schema.component.js +13 -65
  28. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  29. package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
  30. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  31. package/dist/Admin/admin-identity-access.component.js +13 -65
  32. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  33. package/dist/Admin/admin-monitoring.component.js +13 -65
  34. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  35. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  36. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  37. package/dist/Admin/base-admin-container.component.js +26 -17
  38. package/dist/Admin/base-admin-container.component.js.map +1 -1
  39. package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
  40. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  41. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  42. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  43. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  44. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  45. package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
  46. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  47. package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
  48. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  49. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
  50. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  51. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  52. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  53. package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
  54. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  55. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  56. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  57. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
  58. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  59. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  60. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  61. package/dist/DevTools/app-state-inspector.component.js +46 -72
  62. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  63. package/dist/DevTools/class-registry.component.js +88 -100
  64. package/dist/DevTools/class-registry.component.js.map +1 -1
  65. package/dist/DevTools/event-monitor.component.js +158 -168
  66. package/dist/DevTools/event-monitor.component.js.map +1 -1
  67. package/dist/DevTools/graphql-console.component.js +257 -264
  68. package/dist/DevTools/graphql-console.component.js.map +1 -1
  69. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  70. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  71. package/dist/DevTools/layout-inspector.component.js +46 -64
  72. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  73. package/dist/DevTools/lazy-module-status.component.js +75 -84
  74. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  75. package/dist/DevTools/settings-explorer.component.js +76 -85
  76. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  78. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  79. package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
  80. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  81. package/dist/Integration/components/activity/activity.component.js +97 -99
  82. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  83. package/dist/Integration/components/connections/connections.component.js +842 -855
  84. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  85. package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
  86. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  87. package/dist/Integration/components/schedules/schedules.component.js +78 -89
  88. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  89. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  90. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  91. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
  92. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  93. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  94. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  95. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
  96. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  97. package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
  98. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  99. package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
  100. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  101. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  102. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  103. package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
  104. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  105. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  106. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  107. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  108. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  109. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  110. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  111. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  112. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  113. package/dist/Lists/index.d.ts +1 -0
  114. package/dist/Lists/index.d.ts.map +1 -1
  115. package/dist/Lists/index.js +1 -0
  116. package/dist/Lists/index.js.map +1 -1
  117. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  118. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js +236 -10
  120. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  121. package/dist/MCP/mcp-dashboard.component.js +19 -19
  122. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  123. package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
  124. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  125. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  126. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  127. package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
  128. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  129. package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
  130. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  131. package/dist/Testing/components/testing-explorer.component.js +543 -629
  132. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  133. package/dist/Testing/testing-dashboard.component.js +50 -49
  134. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  135. package/dist/ai-dashboards.module.d.ts +1 -1
  136. package/dist/ai-dashboards.module.d.ts.map +1 -1
  137. package/dist/ai-dashboards.module.js +16 -1
  138. package/dist/ai-dashboards.module.js.map +1 -1
  139. package/dist/communication-dashboards.module.d.ts +9 -7
  140. package/dist/communication-dashboards.module.d.ts.map +1 -1
  141. package/dist/communication-dashboards.module.js +13 -4
  142. package/dist/communication-dashboards.module.js.map +1 -1
  143. package/dist/core-dashboards.module.d.ts +1 -1
  144. package/dist/core-dashboards.module.d.ts.map +1 -1
  145. package/dist/core-dashboards.module.js +16 -1
  146. package/dist/core-dashboards.module.js.map +1 -1
  147. package/dist/lists-dashboards.module.d.ts +10 -9
  148. package/dist/lists-dashboards.module.d.ts.map +1 -1
  149. package/dist/lists-dashboards.module.js +13 -2
  150. package/dist/lists-dashboards.module.js.map +1 -1
  151. package/dist/public-api.d.ts +1 -0
  152. package/dist/public-api.d.ts.map +1 -1
  153. package/dist/public-api.js +1 -0
  154. package/dist/public-api.js.map +1 -1
  155. package/dist/testing-dashboards.module.d.ts +1 -1
  156. package/dist/testing-dashboards.module.d.ts.map +1 -1
  157. package/dist/testing-dashboards.module.js +13 -1
  158. package/dist/testing-dashboards.module.js.map +1 -1
  159. package/package.json +53 -52
@@ -16,76 +16,75 @@ import * as i5 from "@memberjunction/ng-ui-components";
16
16
  import * as i6 from "@memberjunction/ng-versions";
17
17
  import * as i7 from "@memberjunction/ng-shared-generic";
18
18
  import * as i8 from "../../shared/pipes/highlight-search.pipe";
19
- const _c0 = a0 => ({ node: a0, depth: 0 });
20
- const _c1 = (a0, a1) => ({ node: a0, depth: a1 });
21
19
  const _forTrack0 = ($index, $item) => $item.ID;
22
20
  const _forTrack1 = ($index, $item) => $item.TestID;
23
21
  function TestingExplorerComponent_Conditional_0_ng_container_0_Template(rf, ctx) { if (rf & 1) {
24
22
  i0.ɵɵelementContainer(0);
25
23
  } }
26
24
  function TestingExplorerComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵtemplate(0, TestingExplorerComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 2);
25
+ i0.ɵɵtemplate(0, TestingExplorerComponent_Conditional_0_ng_container_0_Template, 1, 0, "ng-container", 1);
28
26
  } if (rf & 2) {
29
27
  i0.ɵɵnextContext();
30
28
  const content_r1 = i0.ɵɵreference(3);
31
29
  i0.ɵɵproperty("ngTemplateOutlet", content_r1);
32
30
  } }
33
- function TestingExplorerComponent_Conditional_1_For_18_Template(rf, ctx) { if (rf & 1) {
31
+ function TestingExplorerComponent_Conditional_1_For_17_Template(rf, ctx) { if (rf & 1) {
34
32
  const _r4 = i0.ɵɵgetCurrentView();
35
- i0.ɵɵelementStart(0, "mj-filter-chip", 19);
36
- i0.ɵɵlistener("Clicked", function TestingExplorerComponent_Conditional_1_For_18_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)); });
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)); });
37
35
  i0.ɵɵelementEnd();
38
36
  } if (rf & 2) {
39
37
  const status_r5 = ctx.$implicit;
40
38
  const ctx_r2 = i0.ɵɵnextContext(2);
41
39
  i0.ɵɵproperty("Label", status_r5)("Active", ctx_r2.IsStatusActive(status_r5));
42
40
  } }
43
- function TestingExplorerComponent_Conditional_1_ng_container_21_Template(rf, ctx) { if (rf & 1) {
41
+ function TestingExplorerComponent_Conditional_1_ng_container_20_Template(rf, ctx) { if (rf & 1) {
44
42
  i0.ɵɵelementContainer(0);
45
43
  } }
46
44
  function TestingExplorerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
47
45
  const _r2 = i0.ɵɵgetCurrentView();
48
- i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 3)(2, "div", 4);
49
- i0.ɵɵelement(3, "mj-stat-badge", 5);
46
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 2)(2, "div", 3);
47
+ i0.ɵɵelement(3, "mj-stat-badge", 4);
50
48
  i0.ɵɵelementEnd();
51
- i0.ɵɵelementStart(4, "div", 6)(5, "mj-view-toggle", 7);
52
- i0.ɵɵlistener("KeyChange", function TestingExplorerComponent_Conditional_1_Template_mj_view_toggle_KeyChange_5_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetViewMode($event)); });
53
- i0.ɵɵelementEnd();
54
- i0.ɵɵelementStart(6, "button", 8);
55
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleSortDirection()); });
56
- i0.ɵɵelement(7, "i", 9)(8, "i", 10);
57
- i0.ɵɵelementEnd();
58
- i0.ɵɵelementStart(9, "button", 11);
59
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewSuite()); });
60
- i0.ɵɵelement(10, "i", 12);
61
- i0.ɵɵtext(11, " New Suite ");
62
- i0.ɵɵelementEnd();
63
- i0.ɵɵelementStart(12, "button", 13);
64
- i0.ɵɵlistener("click", function TestingExplorerComponent_Conditional_1_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnNewTest()); });
65
- i0.ɵɵelement(13, "i", 14);
66
- i0.ɵɵtext(14, " New Test ");
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()); });
67
53
  i0.ɵɵelementEnd()();
68
- i0.ɵɵelementStart(15, "div", 15)(16, "mj-page-search", 16);
69
- i0.ɵɵlistener("ValueChange", function TestingExplorerComponent_Conditional_1_Template_mj_page_search_ValueChange_16_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSearchInputValue($event)); });
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)); });
70
69
  i0.ɵɵelementEnd();
71
- i0.ɵɵrepeaterCreate(17, TestingExplorerComponent_Conditional_1_For_18_Template, 1, 2, "mj-filter-chip", 17, i0.ɵɵrepeaterTrackByIdentity);
72
- i0.ɵɵelementStart(19, "mj-view-toggle", 7);
73
- i0.ɵɵlistener("KeyChange", function TestingExplorerComponent_Conditional_1_Template_mj_view_toggle_KeyChange_19_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDisplayMode($event)); });
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)); });
74
73
  i0.ɵɵelementEnd()()();
75
- i0.ɵɵelementStart(20, "mj-page-body", 18);
76
- i0.ɵɵtemplate(21, TestingExplorerComponent_Conditional_1_ng_container_21_Template, 1, 0, "ng-container", 2);
74
+ i0.ɵɵelementStart(19, "mj-page-body", 16);
75
+ i0.ɵɵtemplate(20, TestingExplorerComponent_Conditional_1_ng_container_20_Template, 1, 0, "ng-container", 1);
77
76
  i0.ɵɵelementEnd()();
78
77
  } if (rf & 2) {
79
78
  const ctx_r2 = i0.ɵɵnextContext();
80
79
  const content_r1 = i0.ɵɵreference(3);
81
80
  i0.ɵɵadvance(3);
82
- i0.ɵɵproperty("Count", ctx_r2.FilteredResultCount);
81
+ i0.ɵɵproperty("Count", ctx_r2.FilteredResultCount)("Total", ctx_r2.TotalItemCount);
83
82
  i0.ɵɵadvance(2);
84
- i0.ɵɵproperty("Options", ctx_r2.HeaderViewOptions)("ActiveKey", ctx_r2.ViewMode);
83
+ i0.ɵɵproperty("ActiveCount", ctx_r2.ActiveSortFilterCount)("ShowClearAll", ctx_r2.ActiveSortFilterCount > 0);
85
84
  i0.ɵɵadvance();
86
- i0.ɵɵproperty("title", "Sort by " + ctx_r2.SortFieldLabel + " (" + (ctx_r2.SortDirection === "asc" ? "ascending" : "descending") + ")");
87
- i0.ɵɵadvance(2);
88
- i0.ɵɵclassProp("fa-arrow-up", ctx_r2.SortDirection === "asc")("fa-arrow-down", ctx_r2.SortDirection === "desc");
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);
89
88
  i0.ɵɵadvance(8);
90
89
  i0.ɵɵproperty("Value", ctx_r2.SearchTerm);
91
90
  i0.ɵɵadvance();
@@ -93,273 +92,186 @@ function TestingExplorerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1)
93
92
  i0.ɵɵadvance(2);
94
93
  i0.ɵɵproperty("Options", ctx_r2.DisplayModeOptions)("ActiveKey", ctx_r2.DisplayMode);
95
94
  i0.ɵɵadvance();
96
- i0.ɵɵproperty("Flex", true);
95
+ i0.ɵɵproperty("Flex", true)("Padding", false);
97
96
  i0.ɵɵadvance();
98
97
  i0.ɵɵproperty("ngTemplateOutlet", content_r1);
99
98
  } }
100
99
  function TestingExplorerComponent_ng_template_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
101
- i0.ɵɵelementStart(0, "div", 20);
102
- i0.ɵɵelement(1, "mj-loading", 27);
103
- i0.ɵɵelementEnd();
104
- } }
105
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_For_20_ng_container_0_Template(rf, ctx) { if (rf & 1) {
106
- i0.ɵɵelementContainer(0);
107
- } }
108
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_For_20_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵtemplate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_For_20_ng_container_0_Template, 1, 0, "ng-container", 43);
110
- } if (rf & 2) {
111
- const node_r9 = ctx.$implicit;
112
- i0.ɵɵnextContext(3);
113
- const suiteTreeTpl_r10 = i0.ɵɵreference(3);
114
- i0.ɵɵproperty("ngTemplateOutlet", suiteTreeTpl_r10)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, node_r9));
115
- } }
116
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_Conditional_21_Template(rf, ctx) { if (rf & 1) {
117
- i0.ɵɵelementStart(0, "div", 41);
118
- i0.ɵɵtext(1, "No suites found");
119
- i0.ɵɵelementEnd();
120
- } }
121
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_For_26_Template(rf, ctx) { if (rf & 1) {
122
- const _r11 = i0.ɵɵgetCurrentView();
123
- i0.ɵɵelementStart(0, "div", 37);
124
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_For_26_Template_div_click_0_listener() { const tt_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "testType", ID: tt_r12.ID })); });
125
- i0.ɵɵelement(1, "i", 44);
126
- i0.ɵɵelementStart(2, "span");
127
- i0.ɵɵtext(3);
128
- i0.ɵɵelementEnd();
129
- i0.ɵɵelementStart(4, "span", 39);
130
- i0.ɵɵtext(5);
131
- i0.ɵɵelementEnd()();
132
- } if (rf & 2) {
133
- const tt_r12 = ctx.$implicit;
134
- const ctx_r2 = i0.ɵɵnextContext(4);
135
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "testType" && ctx_r2.IsSidebarSelected(tt_r12.ID));
136
- i0.ɵɵadvance(3);
137
- i0.ɵɵtextInterpolate(tt_r12.Name);
138
- i0.ɵɵadvance(2);
139
- i0.ɵɵtextInterpolate(ctx_r2.GetTestCountForType(tt_r12.ID));
140
- } }
141
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
142
- const _r8 = i0.ɵɵgetCurrentView();
143
- i0.ɵɵelementStart(0, "div", 31)(1, "div", 35)(2, "div", 36);
144
- i0.ɵɵtext(3, "Browse");
145
- i0.ɵɵelementEnd();
146
- i0.ɵɵelementStart(4, "div", 37);
147
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "all", ID: null })); });
148
- i0.ɵɵelement(5, "i", 38);
149
- i0.ɵɵelementStart(6, "span");
150
- i0.ɵɵtext(7, "All Items");
151
- i0.ɵɵelementEnd();
152
- i0.ɵɵelementStart(8, "span", 39);
153
- i0.ɵɵtext(9);
154
- i0.ɵɵelementEnd()();
155
- i0.ɵɵelementStart(10, "div", 37);
156
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "standalone", ID: null })); });
157
- i0.ɵɵelement(11, "i", 40);
158
- i0.ɵɵelementStart(12, "span");
159
- i0.ɵɵtext(13, "Standalone Tests");
160
- i0.ɵɵelementEnd();
161
- i0.ɵɵelementStart(14, "span", 39);
162
- i0.ɵɵtext(15);
163
- i0.ɵɵelementEnd()()();
164
- i0.ɵɵelementStart(16, "div", 35)(17, "div", 36);
165
- i0.ɵɵtext(18, "Test Suites");
100
+ i0.ɵɵelementStart(0, "div", 18);
101
+ i0.ɵɵelement(1, "mj-loading", 25);
166
102
  i0.ɵɵelementEnd();
167
- i0.ɵɵrepeaterCreate(19, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_For_20_Template, 1, 4, "ng-container", null, _forTrack0);
168
- i0.ɵɵconditionalCreate(21, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_Conditional_21_Template, 2, 0, "div", 41);
169
- i0.ɵɵelementEnd();
170
- i0.ɵɵelementStart(22, "div", 35)(23, "div", 36);
171
- i0.ɵɵtext(24, "Test Types");
172
- i0.ɵɵelementEnd();
173
- i0.ɵɵrepeaterCreate(25, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_For_26_Template, 6, 4, "div", 42, _forTrack0);
174
- i0.ɵɵelementEnd()();
175
- } if (rf & 2) {
176
- const ctx_r2 = i0.ɵɵnextContext(3);
177
- i0.ɵɵadvance(4);
178
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "all");
179
- i0.ɵɵadvance(5);
180
- i0.ɵɵtextInterpolate(ctx_r2.TotalItemCount);
181
- i0.ɵɵadvance();
182
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "standalone");
183
- i0.ɵɵadvance(5);
184
- i0.ɵɵtextInterpolate(ctx_r2.StandaloneTestCount);
185
- i0.ɵɵadvance(4);
186
- i0.ɵɵrepeater(ctx_r2.FilteredSuiteTree);
187
- i0.ɵɵadvance(2);
188
- i0.ɵɵconditional(ctx_r2.FilteredSuiteTree.length === 0 ? 21 : -1);
189
- i0.ɵɵadvance(4);
190
- i0.ɵɵrepeater(ctx_r2.FilteredTestTypes);
191
103
  } }
192
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
193
- i0.ɵɵelement(0, "span", 69);
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);
194
106
  i0.ɵɵtext(1);
195
107
  } if (rf & 2) {
196
- const suite_r14 = i0.ɵɵnextContext().$implicit;
108
+ const suite_r9 = i0.ɵɵnextContext().$implicit;
197
109
  const ctx_r2 = i0.ɵɵnextContext(5);
198
110
  i0.ɵɵadvance();
199
- i0.ɵɵtextInterpolate1(" Last run ", ctx_r2.FormatRelativeTime(suite_r14.LastRunDate), " ");
111
+ i0.ɵɵtextInterpolate1(" Last run ", ctx_r2.FormatRelativeTime(suite_r9.LastRunDate), " ");
200
112
  } }
201
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
202
- i0.ɵɵelement(0, "p", 57);
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);
203
115
  i0.ɵɵpipe(1, "highlightSearch");
204
116
  } if (rf & 2) {
205
- const suite_r14 = i0.ɵɵnextContext().$implicit;
117
+ const suite_r9 = i0.ɵɵnextContext().$implicit;
206
118
  const ctx_r2 = i0.ɵɵnextContext(5);
207
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, suite_r14.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
119
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, suite_r9.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
208
120
  } }
209
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
210
- i0.ɵɵelementStart(0, "div", 71);
211
- i0.ɵɵelement(1, "span", 72);
212
- i0.ɵɵelementStart(2, "span", 73);
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);
213
125
  i0.ɵɵtext(3);
214
126
  i0.ɵɵelementEnd();
215
- i0.ɵɵelementStart(4, "span", 74);
127
+ i0.ɵɵelementStart(4, "span", 58);
216
128
  i0.ɵɵtext(5);
217
129
  i0.ɵɵelementEnd();
218
- i0.ɵɵelementStart(6, "span", 75);
219
- i0.ɵɵelement(7, "span", 76);
130
+ i0.ɵɵelementStart(6, "span", 59);
131
+ i0.ɵɵelement(7, "span", 60);
220
132
  i0.ɵɵelementEnd();
221
- i0.ɵɵelementStart(8, "span", 77);
133
+ i0.ɵɵelementStart(8, "span", 61);
222
134
  i0.ɵɵtext(9);
223
135
  i0.ɵɵelementEnd()();
224
136
  } if (rf & 2) {
225
- const t_r15 = i0.ɵɵnextContext().$implicit;
137
+ const t_r10 = i0.ɵɵnextContext().$implicit;
226
138
  const ctx_r2 = i0.ɵɵnextContext(7);
227
139
  i0.ɵɵadvance();
228
- i0.ɵɵattribute("data-status", t_r15.LastStatus.toLowerCase());
140
+ i0.ɵɵattribute("data-status", t_r10.LastStatus.toLowerCase());
229
141
  i0.ɵɵadvance(2);
230
- i0.ɵɵtextInterpolate(t_r15.TestName);
142
+ i0.ɵɵtextInterpolate(t_r10.TestName);
231
143
  i0.ɵɵadvance();
232
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r15.LastScore));
144
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r10.LastScore));
233
145
  i0.ɵɵadvance();
234
- i0.ɵɵtextInterpolate1("", (t_r15.LastScore * 100).toFixed(0), "%");
146
+ i0.ɵɵtextInterpolate1("", (t_r10.LastScore * 100).toFixed(0), "%");
235
147
  i0.ɵɵadvance(2);
236
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r15.LastScore) + "-bg");
237
- i0.ɵɵstyleProp("width", t_r15.LastScore * 100, "%");
148
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(t_r10.LastScore) + "-bg");
149
+ i0.ɵɵstyleProp("width", t_r10.LastScore * 100, "%");
238
150
  i0.ɵɵadvance();
239
- i0.ɵɵattribute("data-status", t_r15.LastStatus.toLowerCase());
151
+ i0.ɵɵattribute("data-status", t_r10.LastStatus.toLowerCase());
240
152
  i0.ɵɵadvance();
241
- i0.ɵɵtextInterpolate(t_r15.LastStatus);
153
+ i0.ɵɵtextInterpolate(t_r10.LastStatus);
242
154
  } }
243
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
244
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_For_2_Conditional_0_Template, 10, 11, "div", 71);
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);
245
157
  } if (rf & 2) {
246
- const ɵ$index_210_r16 = ctx.$index;
247
- i0.ɵɵconditional(ɵ$index_210_r16 < 4 ? 0 : -1);
158
+ const ɵ$index_141_r11 = ctx.$index;
159
+ i0.ɵɵconditional(ɵ$index_141_r11 < 4 ? 0 : -1);
248
160
  } }
249
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
250
- i0.ɵɵelementStart(0, "div", 70);
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);
251
163
  i0.ɵɵtext(1);
252
164
  i0.ɵɵelementEnd();
253
165
  } if (rf & 2) {
254
- const suite_r14 = i0.ɵɵnextContext(2).$implicit;
166
+ const suite_r9 = i0.ɵɵnextContext(2).$implicit;
255
167
  i0.ɵɵadvance();
256
- i0.ɵɵtextInterpolate1("+", suite_r14.TotalTestsInSuite - 4, " more tests");
168
+ i0.ɵɵtextInterpolate1("+", suite_r9.TotalTestsInSuite - 4, " more tests");
257
169
  } }
258
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_Template(rf, ctx) { if (rf & 1) {
259
- i0.ɵɵelementStart(0, "div", 62);
260
- i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_For_2_Template, 1, 1, null, null, _forTrack1);
261
- i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_Conditional_3_Template, 2, 1, "div", 70);
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);
262
174
  i0.ɵɵelementEnd();
263
175
  } if (rf & 2) {
264
- const suite_r14 = i0.ɵɵnextContext().$implicit;
176
+ const suite_r9 = i0.ɵɵnextContext().$implicit;
265
177
  i0.ɵɵadvance();
266
- i0.ɵɵrepeater(suite_r14.Tests);
178
+ i0.ɵɵrepeater(suite_r9.Tests);
267
179
  i0.ɵɵadvance(2);
268
- i0.ɵɵconditional(suite_r14.TotalTestsInSuite > 4 ? 3 : -1);
180
+ i0.ɵɵconditional(suite_r9.TotalTestsInSuite > 4 ? 3 : -1);
269
181
  } }
270
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
271
- const _r13 = i0.ɵɵgetCurrentView();
272
- i0.ɵɵelementStart(0, "div", 50)(1, "div", 51)(2, "div", 52);
273
- i0.ɵɵelement(3, "i", 53)(4, "span", 54);
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);
274
186
  i0.ɵɵpipe(5, "highlightSearch");
275
- i0.ɵɵelementStart(6, "span", 55);
187
+ i0.ɵɵelementStart(6, "span", 39);
276
188
  i0.ɵɵtext(7);
277
189
  i0.ɵɵelementEnd()();
278
- i0.ɵɵelementStart(8, "div", 56);
190
+ i0.ɵɵelementStart(8, "div", 40);
279
191
  i0.ɵɵtext(9);
280
- i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_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);
281
193
  i0.ɵɵelementEnd();
282
- i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 57);
194
+ i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_4_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 41);
283
195
  i0.ɵɵelementEnd();
284
- i0.ɵɵelementStart(12, "div", 58)(13, "div", 59)(14, "span", 60);
196
+ i0.ɵɵelementStart(12, "div", 42)(13, "div", 43)(14, "span", 44);
285
197
  i0.ɵɵtext(15, "Pass Rate");
286
198
  i0.ɵɵelementEnd();
287
- i0.ɵɵelementStart(16, "span", 61);
199
+ i0.ɵɵelementStart(16, "span", 45);
288
200
  i0.ɵɵtext(17);
289
201
  i0.ɵɵelementEnd()();
290
- i0.ɵɵelementStart(18, "div", 59)(19, "span", 60);
202
+ i0.ɵɵelementStart(18, "div", 43)(19, "span", 44);
291
203
  i0.ɵɵtext(20, "Tests");
292
204
  i0.ɵɵelementEnd();
293
- i0.ɵɵelementStart(21, "span", 61);
205
+ i0.ɵɵelementStart(21, "span", 45);
294
206
  i0.ɵɵtext(22);
295
207
  i0.ɵɵelementEnd()();
296
- i0.ɵɵelementStart(23, "div", 59)(24, "span", 60);
208
+ i0.ɵɵelementStart(23, "div", 43)(24, "span", 44);
297
209
  i0.ɵɵtext(25, "Avg Score");
298
210
  i0.ɵɵelementEnd();
299
- i0.ɵɵelementStart(26, "span", 61);
211
+ i0.ɵɵelementStart(26, "span", 45);
300
212
  i0.ɵɵtext(27);
301
213
  i0.ɵɵelementEnd()();
302
- i0.ɵɵelementStart(28, "div", 59)(29, "span", 60);
214
+ i0.ɵɵelementStart(28, "div", 43)(29, "span", 44);
303
215
  i0.ɵɵtext(30, "Avg Duration");
304
216
  i0.ɵɵelementEnd();
305
- i0.ɵɵelementStart(31, "span", 61);
217
+ i0.ɵɵelementStart(31, "span", 45);
306
218
  i0.ɵɵtext(32);
307
219
  i0.ɵɵelementEnd()()();
308
- i0.ɵɵconditionalCreate(33, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Conditional_33_Template, 4, 1, "div", 62);
309
- i0.ɵɵelementStart(34, "div", 63)(35, "button", 64);
310
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Template_button_click_35_listener() { const suite_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.RunSuite(suite_r14.ID)); });
311
- i0.ɵɵelement(36, "i", 65);
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);
312
224
  i0.ɵɵtext(37, " Run Suite ");
313
225
  i0.ɵɵelementEnd();
314
- i0.ɵɵelementStart(38, "button", 66);
315
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Template_button_click_38_listener() { const suite_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.ViewSuiteResults(suite_r14.ID)); });
316
- i0.ɵɵelement(39, "i", 67);
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);
317
229
  i0.ɵɵtext(40, " Results ");
318
230
  i0.ɵɵelementEnd();
319
- i0.ɵɵelementStart(41, "button", 66);
320
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Template_button_click_41_listener() { const suite_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Test Suites", suite_r14.ID)); });
321
- i0.ɵɵelement(42, "i", 68);
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);
322
234
  i0.ɵɵtext(43, " Edit ");
323
235
  i0.ɵɵelementEnd()()();
324
236
  } if (rf & 2) {
325
- const suite_r14 = ctx.$implicit;
237
+ const suite_r9 = ctx.$implicit;
326
238
  const ctx_r2 = i0.ɵɵnextContext(5);
327
239
  i0.ɵɵadvance(4);
328
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 15, suite_r14.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
240
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 15, suite_r9.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
329
241
  i0.ɵɵadvance(2);
330
- i0.ɵɵattribute("data-status", suite_r14.Status.toLowerCase());
242
+ i0.ɵɵattribute("data-status", suite_r9.Status.toLowerCase());
331
243
  i0.ɵɵadvance();
332
- i0.ɵɵtextInterpolate(suite_r14.Status);
244
+ i0.ɵɵtextInterpolate(suite_r9.Status);
333
245
  i0.ɵɵadvance(2);
334
- i0.ɵɵtextInterpolate1(" ", suite_r14.TestCount, " tests ");
246
+ i0.ɵɵtextInterpolate1(" ", suite_r9.TestCount, " tests ");
335
247
  i0.ɵɵadvance();
336
- i0.ɵɵconditional(suite_r14.LastRunDate ? 10 : -1);
248
+ i0.ɵɵconditional(suite_r9.LastRunDate ? 10 : -1);
337
249
  i0.ɵɵadvance();
338
- i0.ɵɵconditional(suite_r14.Description ? 11 : -1);
250
+ i0.ɵɵconditional(suite_r9.Description ? 11 : -1);
339
251
  i0.ɵɵadvance(5);
340
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r14.PassRate / 100));
252
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r9.PassRate / 100));
341
253
  i0.ɵɵadvance();
342
- i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(suite_r14.PassRate));
254
+ i0.ɵɵtextInterpolate(ctx_r2.FormatPercent(suite_r9.PassRate));
343
255
  i0.ɵɵadvance(5);
344
- i0.ɵɵtextInterpolate(suite_r14.TestCount);
256
+ i0.ɵɵtextInterpolate(suite_r9.TestCount);
345
257
  i0.ɵɵadvance(4);
346
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r14.AvgScore));
258
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(suite_r9.AvgScore));
347
259
  i0.ɵɵadvance();
348
- i0.ɵɵtextInterpolate1("", (suite_r14.AvgScore * 100).toFixed(0), "%");
260
+ i0.ɵɵtextInterpolate1("", (suite_r9.AvgScore * 100).toFixed(0), "%");
349
261
  i0.ɵɵadvance(5);
350
- i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(suite_r14.AvgDuration));
262
+ i0.ɵɵtextInterpolate(ctx_r2.FormatDuration(suite_r9.AvgDuration));
351
263
  i0.ɵɵadvance();
352
- i0.ɵɵconditional(suite_r14.Tests.length > 0 ? 33 : -1);
264
+ i0.ɵɵconditional(suite_r9.Tests.length > 0 ? 33 : -1);
353
265
  } }
354
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_Template(rf, ctx) { if (rf & 1) {
355
- i0.ɵɵelementStart(0, "div", 45)(1, "h3", 46);
356
- i0.ɵɵelement(2, "i", 47);
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);
357
269
  i0.ɵɵtext(3, " Test Suites ");
358
- i0.ɵɵelementStart(4, "span", 48);
270
+ i0.ɵɵelementStart(4, "span", 32);
359
271
  i0.ɵɵtext(5);
360
272
  i0.ɵɵelementEnd()();
361
- i0.ɵɵelementStart(6, "div", 49);
362
- i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_For_8_Template, 44, 18, "div", 50, _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);
363
275
  i0.ɵɵelementEnd()();
364
276
  } if (rf & 2) {
365
277
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -368,207 +280,207 @@ function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Con
368
280
  i0.ɵɵadvance(2);
369
281
  i0.ɵɵrepeater(ctx_r2.FilteredSuites);
370
282
  } }
371
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
372
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Conditional_0_Template, 9, 1, "div", 45);
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);
373
285
  } if (rf & 2) {
374
286
  const ctx_r2 = i0.ɵɵnextContext(3);
375
287
  i0.ɵɵconditional(ctx_r2.FilteredSuites.length > 0 ? 0 : -1);
376
288
  } }
377
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_10_Template(rf, ctx) { if (rf & 1) {
378
- i0.ɵɵelement(0, "span", 69);
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);
379
291
  i0.ɵɵtext(1);
380
292
  } if (rf & 2) {
381
- const test_r18 = i0.ɵɵnextContext().$implicit;
293
+ const test_r13 = i0.ɵɵnextContext().$implicit;
382
294
  i0.ɵɵadvance();
383
- i0.ɵɵtextInterpolate1(" ", test_r18.SuiteName, " ");
295
+ i0.ɵɵtextInterpolate1(" ", test_r13.SuiteName, " ");
384
296
  } }
385
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
386
- i0.ɵɵelement(0, "p", 57);
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);
387
299
  i0.ɵɵpipe(1, "highlightSearch");
388
300
  } if (rf & 2) {
389
- const test_r18 = i0.ɵɵnextContext().$implicit;
301
+ const test_r13 = i0.ɵɵnextContext().$implicit;
390
302
  const ctx_r2 = i0.ɵɵnextContext(5);
391
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, test_r18.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
303
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, test_r13.Description, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
392
304
  } }
393
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_13_Template(rf, ctx) { if (rf & 1) {
394
- i0.ɵɵelementStart(0, "span", 81);
395
- i0.ɵɵelement(1, "i", 86);
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);
396
308
  i0.ɵɵtext(2);
397
309
  i0.ɵɵelementEnd();
398
310
  } if (rf & 2) {
399
- const test_r18 = i0.ɵɵnextContext().$implicit;
311
+ const test_r13 = i0.ɵɵnextContext().$implicit;
400
312
  i0.ɵɵadvance(2);
401
- i0.ɵɵtextInterpolate1(" ", test_r18.TypeName);
313
+ i0.ɵɵtextInterpolate1(" ", test_r13.TypeName);
402
314
  } }
403
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_14_Template(rf, ctx) { if (rf & 1) {
404
- i0.ɵɵelementStart(0, "span", 81);
405
- i0.ɵɵelement(1, "i", 87);
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);
406
318
  i0.ɵɵtext(2);
407
319
  i0.ɵɵelementEnd();
408
320
  } if (rf & 2) {
409
- const test_r18 = i0.ɵɵnextContext().$implicit;
321
+ const test_r13 = i0.ɵɵnextContext().$implicit;
410
322
  const ctx_r2 = i0.ɵɵnextContext(5);
411
323
  i0.ɵɵadvance(2);
412
- i0.ɵɵtextInterpolate1(" ~", ctx_r2.FormatDurationSeconds(test_r18.EstDuration));
324
+ i0.ɵɵtextInterpolate1(" ~", ctx_r2.FormatDurationSeconds(test_r13.EstDuration));
413
325
  } }
414
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_15_Template(rf, ctx) { if (rf & 1) {
415
- i0.ɵɵelementStart(0, "span", 81);
416
- i0.ɵɵelement(1, "i", 88);
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);
417
329
  i0.ɵɵtext(2);
418
330
  i0.ɵɵelementEnd();
419
331
  } if (rf & 2) {
420
- const test_r18 = i0.ɵɵnextContext().$implicit;
332
+ const test_r13 = i0.ɵɵnextContext().$implicit;
421
333
  const ctx_r2 = i0.ɵɵnextContext(5);
422
334
  i0.ɵɵadvance(2);
423
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatCost(test_r18.EstCost));
335
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatCost(test_r13.EstCost));
424
336
  } }
425
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
426
- i0.ɵɵelementStart(0, "span", 90);
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);
427
339
  i0.ɵɵtext(1);
428
340
  i0.ɵɵelementEnd();
429
341
  } if (rf & 2) {
430
- const tag_r19 = i0.ɵɵnextContext().$implicit;
342
+ const tag_r14 = i0.ɵɵnextContext().$implicit;
431
343
  i0.ɵɵadvance();
432
- i0.ɵɵtextInterpolate(tag_r19);
344
+ i0.ɵɵtextInterpolate(tag_r14);
433
345
  } }
434
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
435
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_For_2_Conditional_0_Template, 2, 1, "span", 90);
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);
436
348
  } if (rf & 2) {
437
- const ɵ$index_318_r20 = ctx.$index;
438
- i0.ɵɵconditional(ɵ$index_318_r20 < 4 ? 0 : -1);
349
+ const ɵ$index_249_r15 = ctx.$index;
350
+ i0.ɵɵconditional(ɵ$index_249_r15 < 4 ? 0 : -1);
439
351
  } }
440
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
441
- i0.ɵɵelementStart(0, "span", 89);
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);
442
354
  i0.ɵɵtext(1);
443
355
  i0.ɵɵelementEnd();
444
356
  } if (rf & 2) {
445
- const test_r18 = i0.ɵɵnextContext(2).$implicit;
357
+ const test_r13 = i0.ɵɵnextContext(2).$implicit;
446
358
  i0.ɵɵadvance();
447
- i0.ɵɵtextInterpolate1("+", test_r18.Tags.length - 4);
359
+ i0.ɵɵtextInterpolate1("+", test_r13.Tags.length - 4);
448
360
  } }
449
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_Template(rf, ctx) { if (rf & 1) {
450
- i0.ɵɵelementStart(0, "div", 83);
451
- i0.ɵɵrepeaterCreate(1, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_For_2_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
452
- i0.ɵɵconditionalCreate(3, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_Conditional_3_Template, 2, 1, "span", 89);
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);
453
365
  i0.ɵɵelementEnd();
454
366
  } if (rf & 2) {
455
- const test_r18 = i0.ɵɵnextContext().$implicit;
367
+ const test_r13 = i0.ɵɵnextContext().$implicit;
456
368
  i0.ɵɵadvance();
457
- i0.ɵɵrepeater(test_r18.Tags);
369
+ i0.ɵɵrepeater(test_r13.Tags);
458
370
  i0.ɵɵadvance(2);
459
- i0.ɵɵconditional(test_r18.Tags.length > 4 ? 3 : -1);
371
+ i0.ɵɵconditional(test_r13.Tags.length > 4 ? 3 : -1);
460
372
  } }
461
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
462
- const _r17 = i0.ɵɵgetCurrentView();
463
- i0.ɵɵelementStart(0, "div", 78)(1, "div", 51)(2, "div", 52);
464
- i0.ɵɵelement(3, "i", 79)(4, "span", 54);
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);
465
377
  i0.ɵɵpipe(5, "highlightSearch");
466
- i0.ɵɵelementStart(6, "span", 55);
378
+ i0.ɵɵelementStart(6, "span", 39);
467
379
  i0.ɵɵtext(7);
468
380
  i0.ɵɵelementEnd()();
469
- i0.ɵɵelementStart(8, "div", 56);
381
+ i0.ɵɵelementStart(8, "div", 40);
470
382
  i0.ɵɵtext(9);
471
- i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_10_Template, 2, 1);
472
- i0.ɵɵelementEnd();
473
- i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_11_Template, 2, 4, "p", 57);
474
- i0.ɵɵelementStart(12, "div", 80);
475
- i0.ɵɵconditionalCreate(13, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_13_Template, 3, 1, "span", 81);
476
- i0.ɵɵconditionalCreate(14, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_14_Template, 3, 1, "span", 81);
477
- i0.ɵɵconditionalCreate(15, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_15_Template, 3, 1, "span", 81);
478
- i0.ɵɵelementStart(16, "span", 81);
479
- i0.ɵɵelement(17, "i", 82);
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);
480
392
  i0.ɵɵtext(18);
481
393
  i0.ɵɵelementEnd()();
482
- i0.ɵɵconditionalCreate(19, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Conditional_19_Template, 4, 1, "div", 83);
394
+ i0.ɵɵconditionalCreate(19, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_5_Conditional_0_For_8_Conditional_19_Template, 4, 1, "div", 68);
483
395
  i0.ɵɵelementEnd();
484
- i0.ɵɵelementStart(20, "div", 58)(21, "div", 59)(22, "span", 60);
396
+ i0.ɵɵelementStart(20, "div", 42)(21, "div", 43)(22, "span", 44);
485
397
  i0.ɵɵtext(23, "Last Status");
486
398
  i0.ɵɵelementEnd();
487
- i0.ɵɵelementStart(24, "span", 84);
399
+ i0.ɵɵelementStart(24, "span", 69);
488
400
  i0.ɵɵtext(25);
489
401
  i0.ɵɵelementEnd()();
490
- i0.ɵɵelementStart(26, "div", 59)(27, "span", 60);
402
+ i0.ɵɵelementStart(26, "div", 43)(27, "span", 44);
491
403
  i0.ɵɵtext(28, "Score");
492
404
  i0.ɵɵelementEnd();
493
- i0.ɵɵelementStart(29, "span", 61);
405
+ i0.ɵɵelementStart(29, "span", 45);
494
406
  i0.ɵɵtext(30);
495
407
  i0.ɵɵelementEnd()();
496
- i0.ɵɵelementStart(31, "div", 59)(32, "span", 60);
408
+ i0.ɵɵelementStart(31, "div", 43)(32, "span", 44);
497
409
  i0.ɵɵtext(33, "Total Runs");
498
410
  i0.ɵɵelementEnd();
499
- i0.ɵɵelementStart(34, "span", 61);
411
+ i0.ɵɵelementStart(34, "span", 45);
500
412
  i0.ɵɵtext(35);
501
413
  i0.ɵɵelementEnd()();
502
- i0.ɵɵelementStart(36, "div", 59)(37, "span", 60);
414
+ i0.ɵɵelementStart(36, "div", 43)(37, "span", 44);
503
415
  i0.ɵɵtext(38, "Pass Rate");
504
416
  i0.ɵɵelementEnd();
505
- i0.ɵɵelementStart(39, "span", 61);
417
+ i0.ɵɵelementStart(39, "span", 45);
506
418
  i0.ɵɵtext(40);
507
419
  i0.ɵɵelementEnd()()();
508
- i0.ɵɵelementStart(41, "div", 63)(42, "button", 64);
509
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Template_button_click_42_listener() { const test_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.RunTest(test_r18.ID)); });
510
- i0.ɵɵelement(43, "i", 65);
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);
511
423
  i0.ɵɵtext(44, " Run ");
512
424
  i0.ɵɵelementEnd();
513
- i0.ɵɵelementStart(45, "button", 66);
514
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Template_button_click_45_listener() { const test_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.ViewTestHistory(test_r18.ID)); });
515
- i0.ɵɵelement(46, "i", 85);
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);
516
428
  i0.ɵɵtext(47, " History ");
517
429
  i0.ɵɵelementEnd();
518
- i0.ɵɵelementStart(48, "button", 66);
519
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Template_button_click_48_listener() { const test_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.EditItem("MJ: Tests", test_r18.ID)); });
520
- i0.ɵɵelement(49, "i", 68);
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);
521
433
  i0.ɵɵtext(50, " Edit ");
522
434
  i0.ɵɵelementEnd()()();
523
435
  } if (rf & 2) {
524
- const test_r18 = ctx.$implicit;
436
+ const test_r13 = ctx.$implicit;
525
437
  const ctx_r2 = i0.ɵɵnextContext(5);
526
438
  i0.ɵɵadvance(4);
527
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 20, test_r18.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
439
+ i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 20, test_r13.Name, ctx_r2.SearchTerm), i0.ɵɵsanitizeHtml);
528
440
  i0.ɵɵadvance(2);
529
- i0.ɵɵattribute("data-status", test_r18.Status.toLowerCase());
441
+ i0.ɵɵattribute("data-status", test_r13.Status.toLowerCase());
530
442
  i0.ɵɵadvance();
531
- i0.ɵɵtextInterpolate(test_r18.Status);
443
+ i0.ɵɵtextInterpolate(test_r13.Status);
532
444
  i0.ɵɵadvance(2);
533
- i0.ɵɵtextInterpolate1(" ", test_r18.TypeName, " ");
445
+ i0.ɵɵtextInterpolate1(" ", test_r13.TypeName, " ");
534
446
  i0.ɵɵadvance();
535
- i0.ɵɵconditional(test_r18.SuiteName ? 10 : -1);
447
+ i0.ɵɵconditional(test_r13.SuiteName ? 10 : -1);
536
448
  i0.ɵɵadvance();
537
- i0.ɵɵconditional(test_r18.Description ? 11 : -1);
449
+ i0.ɵɵconditional(test_r13.Description ? 11 : -1);
538
450
  i0.ɵɵadvance(2);
539
- i0.ɵɵconditional(test_r18.TypeName ? 13 : -1);
451
+ i0.ɵɵconditional(test_r13.TypeName ? 13 : -1);
540
452
  i0.ɵɵadvance();
541
- i0.ɵɵconditional(test_r18.EstDuration > 0 ? 14 : -1);
453
+ i0.ɵɵconditional(test_r13.EstDuration > 0 ? 14 : -1);
542
454
  i0.ɵɵadvance();
543
- i0.ɵɵconditional(test_r18.EstCost > 0 ? 15 : -1);
455
+ i0.ɵɵconditional(test_r13.EstCost > 0 ? 15 : -1);
544
456
  i0.ɵɵadvance(3);
545
- i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(test_r18.UpdatedAt));
457
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatRelativeTime(test_r13.UpdatedAt));
546
458
  i0.ɵɵadvance();
547
- i0.ɵɵconditional(test_r18.Tags.length > 0 ? 19 : -1);
459
+ i0.ɵɵconditional(test_r13.Tags.length > 0 ? 19 : -1);
548
460
  i0.ɵɵadvance(5);
549
- i0.ɵɵattribute("data-status", test_r18.LastRunStatus.toLowerCase());
461
+ i0.ɵɵattribute("data-status", test_r13.LastRunStatus.toLowerCase());
550
462
  i0.ɵɵadvance();
551
- i0.ɵɵtextInterpolate(test_r18.LastRunStatus || "N/A");
463
+ i0.ɵɵtextInterpolate(test_r13.LastRunStatus || "N/A");
552
464
  i0.ɵɵadvance(4);
553
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r18.LastScore));
465
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r13.LastScore));
554
466
  i0.ɵɵadvance();
555
- i0.ɵɵtextInterpolate(test_r18.LastScore > 0 ? (test_r18.LastScore * 100).toFixed(0) + "%" : "N/A");
467
+ i0.ɵɵtextInterpolate(test_r13.LastScore > 0 ? (test_r13.LastScore * 100).toFixed(0) + "%" : "N/A");
556
468
  i0.ɵɵadvance(5);
557
- i0.ɵɵtextInterpolate(test_r18.TotalRuns);
469
+ i0.ɵɵtextInterpolate(test_r13.TotalRuns);
558
470
  i0.ɵɵadvance(4);
559
- i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r18.PassRate / 100));
471
+ i0.ɵɵclassMap(ctx_r2.GetScoreClass(test_r13.PassRate / 100));
560
472
  i0.ɵɵadvance();
561
- i0.ɵɵtextInterpolate(test_r18.TotalRuns > 0 ? ctx_r2.FormatPercent(test_r18.PassRate) : "N/A");
473
+ i0.ɵɵtextInterpolate(test_r13.TotalRuns > 0 ? ctx_r2.FormatPercent(test_r13.PassRate) : "N/A");
562
474
  } }
563
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_Template(rf, ctx) { if (rf & 1) {
564
- i0.ɵɵelementStart(0, "div", 45)(1, "h3", 46);
565
- i0.ɵɵelement(2, "i", 40);
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);
566
478
  i0.ɵɵtext(3, " Tests ");
567
- i0.ɵɵelementStart(4, "span", 48);
479
+ i0.ɵɵelementStart(4, "span", 32);
568
480
  i0.ɵɵtext(5);
569
481
  i0.ɵɵelementEnd()();
570
- i0.ɵɵelementStart(6, "div", 49);
571
- i0.ɵɵrepeaterCreate(7, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_For_8_Template, 51, 23, "div", 78, _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);
572
484
  i0.ɵɵelementEnd()();
573
485
  } if (rf & 2) {
574
486
  const ctx_r2 = i0.ɵɵnextContext(4);
@@ -577,119 +489,52 @@ function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Con
577
489
  i0.ɵɵadvance(2);
578
490
  i0.ɵɵrepeater(ctx_r2.FilteredTests);
579
491
  } }
580
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
581
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Conditional_0_Template, 9, 1, "div", 45);
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);
582
494
  } if (rf & 2) {
583
495
  const ctx_r2 = i0.ɵɵnextContext(3);
584
496
  i0.ɵɵconditional(ctx_r2.FilteredTests.length > 0 ? 0 : -1);
585
497
  } }
586
- function TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
587
- i0.ɵɵelementStart(0, "div", 34);
588
- i0.ɵɵelement(1, "i", 91);
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);
589
501
  i0.ɵɵelementStart(2, "p");
590
502
  i0.ɵɵtext(3, "No tests or suites found");
591
503
  i0.ɵɵelementEnd();
592
- i0.ɵɵelementStart(4, "span", 92);
504
+ i0.ɵɵelementStart(4, "span", 77);
593
505
  i0.ɵɵtext(5, "Try adjusting your search or filters.");
594
506
  i0.ɵɵelementEnd()();
595
507
  } }
596
508
  function TestingExplorerComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
597
509
  const _r7 = i0.ɵɵgetCurrentView();
598
- i0.ɵɵelementStart(0, "div", 21)(1, "aside", 28)(2, "div", 29)(3, "h3");
599
- i0.ɵɵtext(4, "Explorer");
600
- i0.ɵɵelementEnd();
601
- i0.ɵɵelementStart(5, "button", 30);
602
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_1_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ToggleSidebar()); });
603
- i0.ɵɵelement(6, "i", 10);
604
- i0.ɵɵelementEnd()();
605
- i0.ɵɵconditionalCreate(7, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_7_Template, 27, 7, "div", 31);
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)); });
606
512
  i0.ɵɵelementEnd();
607
- i0.ɵɵelementStart(8, "main", 32)(9, "div", 33);
608
- i0.ɵɵconditionalCreate(10, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_10_Template, 1, 1);
609
- i0.ɵɵconditionalCreate(11, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_11_Template, 1, 1);
610
- i0.ɵɵconditionalCreate(12, TestingExplorerComponent_ng_template_2_Conditional_1_Conditional_12_Template, 6, 0, "div", 34);
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);
611
517
  i0.ɵɵelementEnd()()();
612
518
  } if (rf & 2) {
613
519
  const ctx_r2 = i0.ɵɵnextContext(2);
614
520
  i0.ɵɵadvance();
615
- i0.ɵɵclassProp("collapsed", ctx_r2.IsSidebarCollapsed);
616
- i0.ɵɵadvance(5);
617
- i0.ɵɵclassProp("fa-chevron-left", !ctx_r2.IsSidebarCollapsed)("fa-chevron-right", ctx_r2.IsSidebarCollapsed);
618
- i0.ɵɵadvance();
619
- i0.ɵɵconditional(!ctx_r2.IsSidebarCollapsed ? 7 : -1);
521
+ i0.ɵɵproperty("Sections", ctx_r2.NavSections)("ActiveId", ctx_r2.ActiveNavId)("ExpandedIds", ctx_r2.ExpandedNavIds);
620
522
  i0.ɵɵadvance(3);
621
- i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "suites" ? 10 : -1);
622
- i0.ɵɵadvance();
623
- i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "tests" ? 11 : -1);
624
- i0.ɵɵadvance();
625
- i0.ɵɵconditional(ctx_r2.FilteredSuites.length === 0 && ctx_r2.FilteredTests.length === 0 ? 12 : -1);
626
- } }
627
- function TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
628
- const _r23 = i0.ɵɵgetCurrentView();
629
- i0.ɵɵelementStart(0, "button", 96);
630
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r23); const node_r22 = i0.ɵɵnextContext().node; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.ToggleSuiteExpand(node_r22, $event)); });
631
- i0.ɵɵelement(1, "i", 10);
632
- i0.ɵɵelementEnd();
633
- } if (rf & 2) {
634
- const node_r22 = i0.ɵɵnextContext().node;
635
- i0.ɵɵadvance();
636
- i0.ɵɵclassProp("fa-chevron-right", !node_r22.Expanded)("fa-chevron-down", node_r22.Expanded);
637
- } }
638
- function TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_7_For_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
639
- i0.ɵɵelementContainer(0);
640
- } }
641
- function TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_7_For_1_Template(rf, ctx) { if (rf & 1) {
642
- i0.ɵɵtemplate(0, TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_7_For_1_ng_container_0_Template, 1, 0, "ng-container", 43);
643
- } if (rf & 2) {
644
- const child_r24 = ctx.$implicit;
645
- const depth_r25 = i0.ɵɵnextContext(2).depth;
646
- i0.ɵɵnextContext();
647
- const suiteTreeTpl_r10 = i0.ɵɵreference(3);
648
- i0.ɵɵproperty("ngTemplateOutlet", suiteTreeTpl_r10)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1, child_r24, depth_r25 + 1));
649
- } }
650
- function TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
651
- i0.ɵɵrepeaterCreate(0, TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_7_For_1_Template, 1, 5, "ng-container", null, _forTrack0);
652
- } if (rf & 2) {
653
- const node_r22 = i0.ɵɵnextContext().node;
654
- i0.ɵɵrepeater(node_r22.Children);
655
- } }
656
- function TestingExplorerComponent_ng_template_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
657
- const _r21 = i0.ɵɵgetCurrentView();
658
- i0.ɵɵelementStart(0, "div", 93);
659
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_ng_template_2_Template_div_click_0_listener() { const node_r22 = i0.ɵɵrestoreView(_r21).node; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SelectSidebarItem({ Type: "suite", ID: node_r22.ID })); });
660
- i0.ɵɵconditionalCreate(1, TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_1_Template, 2, 4, "button", 94);
661
- i0.ɵɵelement(2, "i", 47);
662
- i0.ɵɵelementStart(3, "span", 95);
663
- i0.ɵɵtext(4);
664
- i0.ɵɵelementEnd();
665
- i0.ɵɵelementStart(5, "span", 39);
666
- i0.ɵɵtext(6);
667
- i0.ɵɵelementEnd()();
668
- i0.ɵɵconditionalCreate(7, TestingExplorerComponent_ng_template_2_ng_template_2_Conditional_7_Template, 2, 0);
669
- } if (rf & 2) {
670
- const node_r22 = ctx.node;
671
- const depth_r25 = ctx.depth;
672
- const ctx_r2 = i0.ɵɵnextContext(2);
673
- i0.ɵɵstyleProp("padding-left", 16 + depth_r25 * 14, "px");
674
- i0.ɵɵclassProp("active", ctx_r2.SelectedSidebar.Type === "suite" && ctx_r2.IsSidebarSelected(node_r22.ID));
523
+ i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "suites" ? 4 : -1);
675
524
  i0.ɵɵadvance();
676
- i0.ɵɵconditional(node_r22.Children.length > 0 ? 1 : -1);
677
- i0.ɵɵadvance(3);
678
- i0.ɵɵtextInterpolate(node_r22.Name);
679
- i0.ɵɵadvance(2);
680
- i0.ɵɵtextInterpolate(node_r22.TestCount);
525
+ i0.ɵɵconditional(ctx_r2.DisplayMode === "all" || ctx_r2.DisplayMode === "tests" ? 5 : -1);
681
526
  i0.ɵɵadvance();
682
- i0.ɵɵconditional(node_r22.Expanded && node_r22.Children.length > 0 ? 7 : -1);
527
+ i0.ɵɵconditional(ctx_r2.FilteredSuites.length === 0 && ctx_r2.FilteredTests.length === 0 ? 6 : -1);
683
528
  } }
684
- function TestingExplorerComponent_ng_template_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
685
- const _r26 = i0.ɵɵgetCurrentView();
686
- i0.ɵɵelementStart(0, "div", 97);
687
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_4_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(2); 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()); });
688
533
  i0.ɵɵelementEnd();
689
534
  } }
690
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_15_Template(rf, ctx) { if (rf & 1) {
691
- i0.ɵɵelementStart(0, "div", 106);
692
- i0.ɵɵelement(1, "i", 125);
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);
693
538
  i0.ɵɵelementStart(2, "span");
694
539
  i0.ɵɵtext(3);
695
540
  i0.ɵɵelementEnd()();
@@ -698,29 +543,29 @@ function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_15_Tem
698
543
  i0.ɵɵadvance(3);
699
544
  i0.ɵɵtextInterpolate(ctx_r2.FormErrorMessage);
700
545
  } }
701
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_31_For_9_Template(rf, ctx) { if (rf & 1) {
702
- i0.ɵɵelementStart(0, "option", 117);
546
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_For_9_Template(rf, ctx) { if (rf & 1) {
547
+ i0.ɵɵelementStart(0, "option", 98);
703
548
  i0.ɵɵtext(1);
704
549
  i0.ɵɵelementEnd();
705
550
  } if (rf & 2) {
706
- const tt_r29 = ctx.$implicit;
707
- i0.ɵɵproperty("value", tt_r29.ID);
551
+ const tt_r19 = ctx.$implicit;
552
+ i0.ɵɵproperty("value", tt_r19.ID);
708
553
  i0.ɵɵadvance();
709
- i0.ɵɵtextInterpolate(tt_r29.Name);
554
+ i0.ɵɵtextInterpolate(tt_r19.Name);
710
555
  } }
711
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_31_Template(rf, ctx) { if (rf & 1) {
712
- const _r28 = i0.ɵɵgetCurrentView();
713
- i0.ɵɵelementStart(0, "div", 110)(1, "label", 111);
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);
714
559
  i0.ɵɵtext(2, "Test Type ");
715
- i0.ɵɵelementStart(3, "span", 112);
560
+ i0.ɵɵelementStart(3, "span", 93);
716
561
  i0.ɵɵtext(4, "*");
717
562
  i0.ɵɵelementEnd()();
718
- i0.ɵɵelementStart(5, "select", 116);
719
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_31_Template_select_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormTypeID, $event) || (ctx_r2.FormTypeID = $event); return i0.ɵɵresetView($event); });
720
- i0.ɵɵelementStart(6, "option", 126);
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);
721
566
  i0.ɵɵtext(7, "Select type...");
722
567
  i0.ɵɵelementEnd();
723
- i0.ɵɵrepeaterCreate(8, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_31_For_9_Template, 2, 2, "option", 117, _forTrack0);
568
+ i0.ɵɵrepeaterCreate(8, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_31_For_9_Template, 2, 2, "option", 98, _forTrack0);
724
569
  i0.ɵɵelementEnd()();
725
570
  } if (rf & 2) {
726
571
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -729,27 +574,27 @@ function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_31_Tem
729
574
  i0.ɵɵadvance(3);
730
575
  i0.ɵɵrepeater(ctx_r2.AllTestTypes);
731
576
  } }
732
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_32_For_7_Template(rf, ctx) { if (rf & 1) {
733
- i0.ɵɵelementStart(0, "option", 117);
577
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_For_7_Template(rf, ctx) { if (rf & 1) {
578
+ i0.ɵɵelementStart(0, "option", 98);
734
579
  i0.ɵɵtext(1);
735
580
  i0.ɵɵelementEnd();
736
581
  } if (rf & 2) {
737
- const s_r31 = ctx.$implicit;
738
- i0.ɵɵproperty("value", s_r31.ID);
582
+ const s_r21 = ctx.$implicit;
583
+ i0.ɵɵproperty("value", s_r21.ID);
739
584
  i0.ɵɵadvance();
740
- i0.ɵɵtextInterpolate(s_r31.Name);
585
+ i0.ɵɵtextInterpolate(s_r21.Name);
741
586
  } }
742
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_32_Template(rf, ctx) { if (rf & 1) {
743
- const _r30 = i0.ɵɵgetCurrentView();
744
- i0.ɵɵelementStart(0, "div", 110)(1, "label", 111);
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);
745
590
  i0.ɵɵtext(2, "Parent Suite");
746
591
  i0.ɵɵelementEnd();
747
- i0.ɵɵelementStart(3, "select", 116);
748
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_32_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.FormParentSuiteID, $event) || (ctx_r2.FormParentSuiteID = $event); return i0.ɵɵresetView($event); });
749
- i0.ɵɵelementStart(4, "option", 127);
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);
750
595
  i0.ɵɵtext(5, "None (top-level)");
751
596
  i0.ɵɵelementEnd();
752
- i0.ɵɵrepeaterCreate(6, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_32_For_7_Template, 2, 2, "option", 117, _forTrack0);
597
+ i0.ɵɵrepeaterCreate(6, TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_32_For_7_Template, 2, 2, "option", 98, _forTrack0);
753
598
  i0.ɵɵelementEnd()();
754
599
  } if (rf & 2) {
755
600
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -758,32 +603,32 @@ function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_32_Tem
758
603
  i0.ɵɵadvance(3);
759
604
  i0.ɵɵrepeater(ctx_r2.AllSuites);
760
605
  } }
761
- function TestingExplorerComponent_ng_template_2_Conditional_7_For_38_Template(rf, ctx) { if (rf & 1) {
762
- i0.ɵɵelementStart(0, "option", 117);
606
+ function TestingExplorerComponent_ng_template_2_Conditional_5_For_38_Template(rf, ctx) { if (rf & 1) {
607
+ i0.ɵɵelementStart(0, "option", 98);
763
608
  i0.ɵɵtext(1);
764
609
  i0.ɵɵelementEnd();
765
610
  } if (rf & 2) {
766
- const status_r32 = ctx.$implicit;
767
- i0.ɵɵproperty("value", status_r32);
611
+ const status_r22 = ctx.$implicit;
612
+ i0.ɵɵproperty("value", status_r22);
768
613
  i0.ɵɵadvance();
769
- i0.ɵɵtextInterpolate(status_r32);
614
+ i0.ɵɵtextInterpolate(status_r22);
770
615
  } }
771
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_39_Template(rf, ctx) { if (rf & 1) {
772
- const _r33 = i0.ɵɵgetCurrentView();
773
- i0.ɵɵelementStart(0, "div", 108)(1, "div", 109);
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);
774
619
  i0.ɵɵtext(2, "Estimates");
775
620
  i0.ɵɵelementEnd();
776
- i0.ɵɵelementStart(3, "div", 115)(4, "div", 110)(5, "label", 111);
621
+ i0.ɵɵelementStart(3, "div", 96)(4, "div", 91)(5, "label", 92);
777
622
  i0.ɵɵtext(6, "Duration (seconds)");
778
623
  i0.ɵɵelementEnd();
779
- i0.ɵɵelementStart(7, "input", 128);
780
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_39_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(3); 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); });
781
626
  i0.ɵɵelementEnd()();
782
- i0.ɵɵelementStart(8, "div", 110)(9, "label", 111);
627
+ i0.ɵɵelementStart(8, "div", 91)(9, "label", 92);
783
628
  i0.ɵɵtext(10, "Cost (USD)");
784
629
  i0.ɵɵelementEnd();
785
- i0.ɵɵelementStart(11, "input", 129);
786
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_39_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(3); 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); });
787
632
  i0.ɵɵelementEnd()()()();
788
633
  } if (rf & 2) {
789
634
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -792,78 +637,78 @@ function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_39_Tem
792
637
  i0.ɵɵadvance(4);
793
638
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.FormEstCost);
794
639
  } }
795
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_51_Template(rf, ctx) { if (rf & 1) {
796
- i0.ɵɵelement(0, "i", 123);
640
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_51_Template(rf, ctx) { if (rf & 1) {
641
+ i0.ɵɵelement(0, "i", 104);
797
642
  } }
798
- function TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_52_Template(rf, ctx) { if (rf & 1) {
799
- i0.ɵɵelement(0, "i", 124);
643
+ function TestingExplorerComponent_ng_template_2_Conditional_5_Conditional_52_Template(rf, ctx) { if (rf & 1) {
644
+ i0.ɵɵelement(0, "i", 105);
800
645
  } }
801
- function TestingExplorerComponent_ng_template_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
802
- const _r27 = i0.ɵɵgetCurrentView();
803
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 98)(2, "div", 99);
804
- i0.ɵɵelement(3, "i", 100);
805
- i0.ɵɵelementStart(4, "span", 101);
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);
806
651
  i0.ɵɵtext(5);
807
652
  i0.ɵɵelementEnd()();
808
- i0.ɵɵelementStart(6, "button", 102);
809
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.CloseSlideout()); });
810
- i0.ɵɵelement(7, "i", 103);
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);
811
656
  i0.ɵɵelementEnd()();
812
- i0.ɵɵelementStart(8, "div", 104)(9, "button", 105);
813
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("test")); });
814
- i0.ɵɵelement(10, "i", 40);
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);
815
660
  i0.ɵɵtext(11, " Test ");
816
661
  i0.ɵɵelementEnd();
817
- i0.ɵɵelementStart(12, "button", 105);
818
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SetSlideoutCreateType("suite")); });
819
- i0.ɵɵelement(13, "i", 47);
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);
820
665
  i0.ɵɵtext(14, " Suite ");
821
666
  i0.ɵɵelementEnd()();
822
- i0.ɵɵconditionalCreate(15, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_15_Template, 4, 1, "div", 106);
823
- i0.ɵɵelementStart(16, "div", 107)(17, "div", 108)(18, "div", 109);
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);
824
669
  i0.ɵɵtext(19, "General");
825
670
  i0.ɵɵelementEnd();
826
- i0.ɵɵelementStart(20, "div", 110)(21, "label", 111);
671
+ i0.ɵɵelementStart(20, "div", 91)(21, "label", 92);
827
672
  i0.ɵɵtext(22, "Name ");
828
- i0.ɵɵelementStart(23, "span", 112);
673
+ i0.ɵɵelementStart(23, "span", 93);
829
674
  i0.ɵɵtext(24, "*");
830
675
  i0.ɵɵelementEnd()();
831
- i0.ɵɵelementStart(25, "input", 113);
832
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); 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); });
833
678
  i0.ɵɵelementEnd()();
834
- i0.ɵɵelementStart(26, "div", 110)(27, "label", 111);
679
+ i0.ɵɵelementStart(26, "div", 91)(27, "label", 92);
835
680
  i0.ɵɵtext(28, "Description");
836
681
  i0.ɵɵelementEnd();
837
- i0.ɵɵelementStart(29, "textarea", 114);
838
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_textarea_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); 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); });
839
684
  i0.ɵɵelementEnd()();
840
- i0.ɵɵelementStart(30, "div", 115);
841
- i0.ɵɵconditionalCreate(31, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_31_Template, 10, 1, "div", 110);
842
- i0.ɵɵconditionalCreate(32, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_32_Template, 8, 1, "div", 110);
843
- i0.ɵɵelementStart(33, "div", 110)(34, "label", 111);
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);
844
689
  i0.ɵɵtext(35, "Status");
845
690
  i0.ɵɵelementEnd();
846
- i0.ɵɵelementStart(36, "select", 116);
847
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_select_ngModelChange_36_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.FormStatus, $event) || (ctx_r2.FormStatus = $event); return i0.ɵɵresetView($event); });
848
- i0.ɵɵrepeaterCreate(37, TestingExplorerComponent_ng_template_2_Conditional_7_For_38_Template, 2, 2, "option", 117, 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);
849
694
  i0.ɵɵelementEnd()()()();
850
- i0.ɵɵconditionalCreate(39, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_39_Template, 12, 2, "div", 108);
851
- i0.ɵɵelementStart(40, "div", 108)(41, "div", 109);
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);
852
697
  i0.ɵɵtext(42, "Tags");
853
698
  i0.ɵɵelementEnd();
854
- i0.ɵɵelementStart(43, "div", 110)(44, "input", 118);
855
- i0.ɵɵtwoWayListener("ngModelChange", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_input_ngModelChange_44_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); 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); });
856
701
  i0.ɵɵelementEnd();
857
- i0.ɵɵelementStart(45, "span", 119);
702
+ i0.ɵɵelementStart(45, "span", 100);
858
703
  i0.ɵɵtext(46, "Separate multiple tags with commas");
859
704
  i0.ɵɵelementEnd()()()();
860
- i0.ɵɵelementStart(47, "div", 120)(48, "button", 121);
861
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); 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()); });
862
707
  i0.ɵɵtext(49, "Cancel");
863
708
  i0.ɵɵelementEnd();
864
- i0.ɵɵelementStart(50, "button", 122);
865
- i0.ɵɵlistener("click", function TestingExplorerComponent_ng_template_2_Conditional_7_Template_button_click_50_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.SaveForm()); });
866
- i0.ɵɵconditionalCreate(51, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_51_Template, 1, 0, "i", 123)(52, TestingExplorerComponent_ng_template_2_Conditional_7_Conditional_52_Template, 1, 0, "i", 124);
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);
867
712
  i0.ɵɵtext(53);
868
713
  i0.ɵɵelementEnd()()();
869
714
  } if (rf & 2) {
@@ -901,12 +746,12 @@ function TestingExplorerComponent_ng_template_2_Conditional_7_Template(rf, ctx)
901
746
  i0.ɵɵadvance(2);
902
747
  i0.ɵɵtextInterpolate1(" Create ", ctx_r2.SlideoutCreateType === "test" ? "Test" : "Suite", " ");
903
748
  } }
904
- function TestingExplorerComponent_ng_template_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
905
- const _r34 = i0.ɵɵgetCurrentView();
906
- i0.ɵɵelementStart(0, "mj-slide-panel", 130);
907
- i0.ɵɵlistener("Closed", function TestingExplorerComponent_ng_template_2_Conditional_8_Template_mj_slide_panel_Closed_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnPanelClosed()); });
908
- i0.ɵɵelementStart(1, "app-test-run-dialog", 131);
909
- i0.ɵɵlistener("PanelClose", function TestingExplorerComponent_ng_template_2_Conditional_8_Template_app_test_run_dialog_PanelClose_1_listener() { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(2); 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()); });
910
755
  i0.ɵɵelementEnd()();
911
756
  } if (rf & 2) {
912
757
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -916,27 +761,26 @@ function TestingExplorerComponent_ng_template_2_Conditional_8_Template(rf, ctx)
916
761
  } }
917
762
  function TestingExplorerComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
918
763
  const _r6 = i0.ɵɵgetCurrentView();
919
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_ng_template_2_Conditional_0_Template, 2, 0, "div", 20)(1, TestingExplorerComponent_ng_template_2_Conditional_1_Template, 13, 10, "div", 21);
920
- i0.ɵɵtemplate(2, TestingExplorerComponent_ng_template_2_ng_template_2_Template, 8, 8, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
921
- i0.ɵɵconditionalCreate(4, TestingExplorerComponent_ng_template_2_Conditional_4_Template, 1, 0, "div", 22);
922
- i0.ɵɵelementStart(5, "div", 23)(6, "div", 24);
923
- i0.ɵɵlistener("mousedown", function TestingExplorerComponent_ng_template_2_Template_div_mousedown_6_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnResizeStart($event)); });
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)); });
924
768
  i0.ɵɵelementEnd();
925
- i0.ɵɵconditionalCreate(7, TestingExplorerComponent_ng_template_2_Conditional_7_Template, 54, 18, "div", 25);
769
+ i0.ɵɵconditionalCreate(5, TestingExplorerComponent_ng_template_2_Conditional_5_Template, 54, 18, "div", 23);
926
770
  i0.ɵɵelementEnd();
927
- i0.ɵɵconditionalCreate(8, TestingExplorerComponent_ng_template_2_Conditional_8_Template, 2, 5, "mj-slide-panel", 26);
771
+ i0.ɵɵconditionalCreate(6, TestingExplorerComponent_ng_template_2_Conditional_6_Template, 2, 5, "mj-slide-panel", 24);
928
772
  } if (rf & 2) {
929
773
  const ctx_r2 = i0.ɵɵnextContext();
930
774
  i0.ɵɵconditional(ctx_r2.IsLoading ? 0 : 1);
931
- i0.ɵɵadvance(4);
932
- i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 4 : -1);
775
+ i0.ɵɵadvance(2);
776
+ i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 2 : -1);
933
777
  i0.ɵɵadvance();
934
778
  i0.ɵɵstyleProp("width", ctx_r2.SlideoutWidth, "px");
935
779
  i0.ɵɵclassProp("open", ctx_r2.SlideoutOpen);
936
780
  i0.ɵɵadvance(2);
937
- i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 7 : -1);
781
+ i0.ɵɵconditional(ctx_r2.SlideoutOpen ? 5 : -1);
938
782
  i0.ɵɵadvance();
939
- i0.ɵɵconditional(ctx_r2.testingDialogService.IsPanelOpen ? 8 : -1);
783
+ i0.ɵɵconditional(ctx_r2.testingDialogService.IsPanelOpen ? 6 : -1);
940
784
  } }
941
785
  export class TestingExplorerComponent extends BaseAngularComponent {
942
786
  cdr;
@@ -979,7 +823,6 @@ export class TestingExplorerComponent extends BaseAngularComponent {
979
823
  _sortDirection$ = new BehaviorSubject('asc');
980
824
  // Template-bound state
981
825
  IsLoading = true;
982
- IsSidebarCollapsed = false;
983
826
  SearchTerm = '';
984
827
  StatusFilters = new Set();
985
828
  ViewMode = 'card';
@@ -1028,14 +871,6 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1028
871
  return false;
1029
872
  return true;
1030
873
  }
1031
- get SortFieldLabel() {
1032
- switch (this.SortField) {
1033
- case 'name': return 'Name';
1034
- case 'updated': return 'Updated';
1035
- case 'status': return 'Status';
1036
- default: return 'Name';
1037
- }
1038
- }
1039
874
  constructor(cdr, viewContainerRef, testingDialogService, instrumentationService) {
1040
875
  super();
1041
876
  this.cdr = cdr;
@@ -1118,18 +953,159 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1118
953
  ClearSearch() {
1119
954
  this._searchTerm$.next('');
1120
955
  }
1121
- ToggleSidebar() {
1122
- this.IsSidebarCollapsed = !this.IsSidebarCollapsed;
1123
- this.cdr.markForCheck();
1124
- }
1125
- ToggleSuiteExpand(node, event) {
1126
- event.stopPropagation();
956
+ ToggleSuiteExpand(node) {
1127
957
  node.Expanded = !node.Expanded;
1128
958
  this.cdr.markForCheck();
1129
959
  }
1130
- ToggleSortDirection() {
1131
- const newDir = this.SortDirection === 'asc' ? 'desc' : 'asc';
1132
- 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;
1133
1109
  }
1134
1110
  RunTest(testId) {
1135
1111
  this.testingDialogService.OpenTestPanel(testId);
@@ -1692,12 +1668,12 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1692
1668
  throw new Error('Failed to save test suite. Please check your input and try again.');
1693
1669
  }
1694
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)); };
1695
- 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", ""], ["suiteTreeTpl", ""], [4, "ngTemplateOutlet"], ["Title", "Test Explorer", "Icon", "fa-solid fa-compass", "Subtitle", "Browse tests and test suites"], ["meta", ""], ["Label", "results", 3, "Count"], ["actions", ""], [3, "KeyChange", "Options", "ActiveKey"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "title"], [1, "fa-solid", "fa-arrow-down-short-wide"], [1, "fa-solid"], ["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"], [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..."], [1, "sidebar"], [1, "sidebar-header"], [1, "sidebar-toggle", 3, "click"], [1, "sidebar-content"], [1, "main-content"], [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, "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-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) {
1696
- i0.ɵɵconditionalCreate(0, TestingExplorerComponent_Conditional_0_Template, 1, 1, "ng-container")(1, TestingExplorerComponent_Conditional_1_Template, 22, 13, "mj-page-layout");
1697
- i0.ɵɵtemplate(2, TestingExplorerComponent_ng_template_2_Template, 9, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
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);
1698
1674
  } if (rf & 2) {
1699
1675
  i0.ɵɵconditional(ctx.HideToolbar ? 0 : 1);
1700
- } }, 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.MJPageSearchComponent, i5.MJViewToggleComponent, i5.MJStatBadgeComponent, 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 .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 .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: 900px) {\n .sidebar[_ngcontent-%COMP%] {\n display: none;\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 });
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 });
1701
1677
  }
1702
1678
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TestingExplorerComponent, [{
1703
1679
  type: Component,
@@ -1710,20 +1686,41 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1710
1686
  Title="Test Explorer"
1711
1687
  Icon="fa-solid fa-compass"
1712
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. -->
1713
1693
  <div meta>
1714
- <mj-stat-badge [Count]="FilteredResultCount" Label="results"></mj-stat-badge>
1694
+ <mj-stat-badge
1695
+ [Count]="FilteredResultCount"
1696
+ [Total]="TotalItemCount"
1697
+ Label="results">
1698
+ </mj-stat-badge>
1715
1699
  </div>
1716
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>
1717
1719
  <mj-view-toggle
1718
1720
  [Options]="HeaderViewOptions"
1719
1721
  [ActiveKey]="ViewMode"
1720
1722
  (KeyChange)="SetViewMode($any($event))">
1721
1723
  </mj-view-toggle>
1722
- <button mjButton variant="secondary" size="sm" (click)="ToggleSortDirection()"
1723
- [title]="'Sort by ' + SortFieldLabel + ' (' + (SortDirection === 'asc' ? 'ascending' : 'descending') + ')'">
1724
- <i class="fa-solid fa-arrow-down-short-wide"></i>
1725
- <i class="fa-solid" [class.fa-arrow-up]="SortDirection === 'asc'" [class.fa-arrow-down]="SortDirection === 'desc'"></i>
1726
- </button>
1727
1724
  <button mjButton variant="secondary" size="sm" (click)="OnNewSuite()">
1728
1725
  <i class="fa-solid fa-folder-plus"></i> New Suite
1729
1726
  </button>
@@ -1751,7 +1748,7 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1751
1748
  </mj-view-toggle>
1752
1749
  </div>
1753
1750
  </mj-page-header>
1754
- <mj-page-body [Flex]="true">
1751
+ <mj-page-body [Flex]="true" [Padding]="false">
1755
1752
  <ng-container *ngTemplateOutlet="content"></ng-container>
1756
1753
  </mj-page-body>
1757
1754
  </mj-page-layout>
@@ -1764,74 +1761,17 @@ export class TestingExplorerComponent extends BaseAngularComponent {
1764
1761
  </div>
1765
1762
  } @else {
1766
1763
  <div class="explorer-layout">
1767
- <!-- Left Sidebar -->
1768
- <aside class="sidebar" [class.collapsed]="IsSidebarCollapsed">
1769
- <div class="sidebar-header">
1770
- <h3>Explorer</h3>
1771
- <button class="sidebar-toggle" (click)="ToggleSidebar()">
1772
- <i class="fa-solid" [class.fa-chevron-left]="!IsSidebarCollapsed" [class.fa-chevron-right]="IsSidebarCollapsed"></i>
1773
- </button>
1774
- </div>
1775
-
1776
- @if (!IsSidebarCollapsed) {
1777
- <div class="sidebar-content">
1778
- <!-- Browse Section -->
1779
- <div class="sidebar-section">
1780
- <div class="sidebar-section-title">Browse</div>
1781
- <div
1782
- class="sidebar-item"
1783
- [class.active]="SelectedSidebar.Type === 'all'"
1784
- (click)="SelectSidebarItem({ Type: 'all', ID: null })"
1785
- >
1786
- <i class="fa-solid fa-layer-group"></i>
1787
- <span>All Items</span>
1788
- <span class="sidebar-count">{{ TotalItemCount }}</span>
1789
- </div>
1790
- <div
1791
- class="sidebar-item"
1792
- [class.active]="SelectedSidebar.Type === 'standalone'"
1793
- (click)="SelectSidebarItem({ Type: 'standalone', ID: null })"
1794
- >
1795
- <i class="fa-solid fa-vial"></i>
1796
- <span>Standalone Tests</span>
1797
- <span class="sidebar-count">{{ StandaloneTestCount }}</span>
1798
- </div>
1799
- </div>
1800
-
1801
- <!-- Test Suites Section -->
1802
- <div class="sidebar-section">
1803
- <div class="sidebar-section-title">Test Suites</div>
1804
- @for (node of FilteredSuiteTree; track node.ID) {
1805
- <ng-container
1806
- *ngTemplateOutlet="suiteTreeTpl; context: { node: node, depth: 0 }"
1807
- ></ng-container>
1808
- }
1809
- @if (FilteredSuiteTree.length === 0) {
1810
- <div class="sidebar-empty">No suites found</div>
1811
- }
1812
- </div>
1813
-
1814
- <!-- Test Types Section -->
1815
- <div class="sidebar-section">
1816
- <div class="sidebar-section-title">Test Types</div>
1817
- @for (tt of FilteredTestTypes; track tt.ID) {
1818
- <div
1819
- class="sidebar-item"
1820
- [class.active]="SelectedSidebar.Type === 'testType' && IsSidebarSelected(tt.ID)"
1821
- (click)="SelectSidebarItem({ Type: 'testType', ID: tt.ID })"
1822
- >
1823
- <i class="fa-solid fa-tag"></i>
1824
- <span>{{ tt.Name }}</span>
1825
- <span class="sidebar-count">{{ GetTestCountForType(tt.ID) }}</span>
1826
- </div>
1827
- }
1828
- </div>
1829
- </div>
1830
- }
1831
- </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>
1832
1772
 
1833
1773
  <!-- Main Content -->
1834
- <main class="main-content">
1774
+ <mj-left-nav-content>
1835
1775
  <!-- Content Area -->
1836
1776
  <div class="content-area">
1837
1777
  <!-- Suites Section -->
@@ -2022,36 +1962,10 @@ export class TestingExplorerComponent extends BaseAngularComponent {
2022
1962
  </div>
2023
1963
  }
2024
1964
  </div>
2025
- </main>
1965
+ </mj-left-nav-content>
2026
1966
  </div>
2027
1967
  }
2028
1968
 
2029
- <!-- Template for recursive suite tree rendering -->
2030
- <ng-template #suiteTreeTpl let-node="node" let-depth="depth">
2031
- <div
2032
- class="sidebar-item suite-tree-item"
2033
- [style.paddingLeft.px]="16 + depth * 14"
2034
- [class.active]="SelectedSidebar.Type === 'suite' && IsSidebarSelected(node.ID)"
2035
- (click)="SelectSidebarItem({ Type: 'suite', ID: node.ID })"
2036
- >
2037
- @if (node.Children.length > 0) {
2038
- <button class="tree-toggle" (click)="ToggleSuiteExpand(node, $event)">
2039
- <i class="fa-solid" [class.fa-chevron-right]="!node.Expanded" [class.fa-chevron-down]="node.Expanded"></i>
2040
- </button>
2041
- }
2042
- <i class="fa-solid fa-folder"></i>
2043
- <span class="tree-name">{{ node.Name }}</span>
2044
- <span class="sidebar-count">{{ node.TestCount }}</span>
2045
- </div>
2046
- @if (node.Expanded && node.Children.length > 0) {
2047
- @for (child of node.Children; track child.ID) {
2048
- <ng-container
2049
- *ngTemplateOutlet="suiteTreeTpl; context: { node: child, depth: depth + 1 }"
2050
- ></ng-container>
2051
- }
2052
- }
2053
- </ng-template>
2054
-
2055
1969
  <!-- Slideout Backdrop -->
2056
1970
  @if (SlideoutOpen) {
2057
1971
  <div class="slideout-backdrop" (click)="CloseSlideout()"></div>
@@ -2237,9 +2151,9 @@ export class TestingExplorerComponent extends BaseAngularComponent {
2237
2151
  </mj-slide-panel>
2238
2152
  }
2239
2153
  </ng-template>
2240
- `, 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 /* 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: 900px) {\n .sidebar {\n display: none;\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 "] }]
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 "] }]
2241
2155
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i1.TestingDialogService }, { type: i2.TestingInstrumentationService }], { HideToolbar: [{
2242
2156
  type: Input
2243
2157
  }] }); })();
2244
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingExplorerComponent, { className: "TestingExplorerComponent", filePath: "src/Testing/components/testing-explorer.component.ts", lineNumber: 1552 }); })();
2158
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TestingExplorerComponent, { className: "TestingExplorerComponent", filePath: "src/Testing/components/testing-explorer.component.ts", lineNumber: 1315 }); })();
2245
2159
  //# sourceMappingURL=testing-explorer.component.js.map