@memberjunction/ng-dashboards 5.34.1 → 5.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +96 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +453 -122
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  40. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2084 -2079
  41. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  44. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  45. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  46. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  47. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  48. package/dist/AI/components/models/model-management.component.js +370 -425
  49. package/dist/AI/components/models/model-management.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  51. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  52. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  53. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  55. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  56. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  57. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  59. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  60. package/dist/AI/components/system/system-configuration.component.js +403 -362
  61. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  62. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  63. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/tags/tags-resource.component.js +1423 -1438
  65. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  66. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  67. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  68. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  69. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  70. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  71. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  72. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  73. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  74. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  75. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  76. package/dist/Actions/components/actions-overview.component.js +202 -158
  77. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  78. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  79. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  80. package/dist/Actions/components/execution-monitoring.component.js +191 -142
  81. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  82. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  83. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  84. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  85. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  86. package/dist/Actions/components/explorer/index.d.ts +0 -1
  87. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  88. package/dist/Actions/components/explorer/index.js +0 -1
  89. package/dist/Actions/components/explorer/index.js.map +1 -1
  90. package/dist/Admin/admin-data-schema.component.js +19 -79
  91. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  92. package/dist/Admin/admin-dev-tools-resource.component.js +19 -79
  93. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  94. package/dist/Admin/admin-identity-access.component.js +19 -79
  95. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  96. package/dist/Admin/admin-monitoring.component.js +19 -79
  97. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  98. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  99. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  100. package/dist/Admin/base-admin-container.component.js +26 -17
  101. package/dist/Admin/base-admin-container.component.js.map +1 -1
  102. package/dist/ApplicationRoles/application-roles-resource.component.js +92 -91
  103. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  104. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  105. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  106. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  107. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  108. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  109. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  110. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  111. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  112. package/dist/Communication/communication-logs-resource.component.js +80 -99
  113. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  114. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  115. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  116. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  117. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  118. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  119. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  120. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  121. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  122. package/dist/Communication/communication-providers-resource.component.js +44 -45
  123. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  124. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  125. package/dist/Communication/communication-runs-resource.component.js +60 -58
  126. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  127. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  128. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  129. package/dist/Communication/communication-templates-resource.component.js +139 -162
  130. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  131. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  132. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  133. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  134. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  135. package/dist/Credentials/components/credentials-categories-resource.component.js +238 -266
  136. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  137. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  138. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  139. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  140. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  141. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  142. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  143. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  144. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  145. package/dist/Credentials/components/credentials-types-resource.component.js +290 -305
  146. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  147. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  148. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  149. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +41 -21
  150. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  151. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  152. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  153. package/dist/DatabaseDesigner/components/entity-list.component.js +148 -155
  154. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  155. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  156. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  157. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +25 -1
  158. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  159. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  160. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  161. package/dist/DevTools/app-state-inspector.component.js +46 -72
  162. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  163. package/dist/DevTools/class-registry.component.js +88 -100
  164. package/dist/DevTools/class-registry.component.js.map +1 -1
  165. package/dist/DevTools/event-monitor.component.js +158 -168
  166. package/dist/DevTools/event-monitor.component.js.map +1 -1
  167. package/dist/DevTools/graphql-console.component.js +257 -264
  168. package/dist/DevTools/graphql-console.component.js.map +1 -1
  169. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  170. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  171. package/dist/DevTools/layout-inspector.component.js +46 -64
  172. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  173. package/dist/DevTools/lazy-module-status.component.js +75 -84
  174. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  175. package/dist/DevTools/settings-explorer.component.js +76 -85
  176. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  177. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  178. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  179. package/dist/EntityAdmin/entity-admin-dashboard.component.js +24 -16
  180. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  181. package/dist/Home/home-dashboard.component.d.ts +6 -0
  182. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  183. package/dist/Home/home-dashboard.component.js +521 -485
  184. package/dist/Home/home-dashboard.component.js.map +1 -1
  185. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  186. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  187. package/dist/Integration/components/activity/activity.component.js +307 -318
  188. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  189. package/dist/Integration/components/connections/connections.component.js +654 -648
  190. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  191. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  192. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  193. package/dist/Integration/components/overview/overview.component.js +182 -163
  194. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  195. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  196. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  197. package/dist/Integration/components/pipelines/pipelines.component.js +595 -606
  198. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  199. package/dist/Integration/components/schedules/schedules.component.js +230 -241
  200. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  201. package/dist/Integration/integration.module.d.ts +1 -1
  202. package/dist/Integration/integration.module.d.ts.map +1 -1
  203. package/dist/Integration/integration.module.js +28 -1
  204. package/dist/Integration/integration.module.js.map +1 -1
  205. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  206. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  207. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1138 -1147
  208. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  209. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  210. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  211. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  212. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  213. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +684 -697
  214. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  215. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  216. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  217. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  218. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  219. package/dist/Lists/components/lists-browse-resource.component.d.ts +120 -1
  220. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  221. package/dist/Lists/components/lists-browse-resource.component.js +1239 -610
  222. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  223. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  224. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  225. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  226. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  227. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  228. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  229. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  230. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  231. package/dist/Lists/components/lists-operations-resource.component.js +1460 -272
  232. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  233. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  234. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  235. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  236. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  237. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  238. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  239. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  240. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  241. package/dist/Lists/index.d.ts +1 -0
  242. package/dist/Lists/index.d.ts.map +1 -1
  243. package/dist/Lists/index.js +1 -0
  244. package/dist/Lists/index.js.map +1 -1
  245. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  246. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  247. package/dist/Lists/services/list-set-operations.service.js +236 -10
  248. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  249. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  250. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  251. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  252. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  253. package/dist/MCP/mcp.module.d.ts +1 -1
  254. package/dist/MCP/mcp.module.d.ts.map +1 -1
  255. package/dist/MCP/mcp.module.js +34 -1
  256. package/dist/MCP/mcp.module.js.map +1 -1
  257. package/dist/Permissions/audit-log-resource.component.js +76 -85
  258. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  259. package/dist/Permissions/resource-access-resource.component.js +64 -69
  260. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  261. package/dist/Permissions/user-access-resource.component.js +63 -74
  262. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  264. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  266. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  267. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  268. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  270. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  271. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  272. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  273. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  274. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  275. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  276. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  277. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  278. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  279. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  280. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  281. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  282. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  283. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  284. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  285. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  286. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  287. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  288. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  289. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  290. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  291. package/dist/Scheduling/scheduling-dashboard.component.js +259 -103
  292. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  293. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  294. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  295. package/dist/SystemDiagnostics/system-diagnostics.component.js +1009 -1264
  296. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  297. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  298. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  300. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  301. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  302. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  303. package/dist/Testing/components/testing-analytics.component.js +420 -393
  304. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  305. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  306. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  307. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  308. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  309. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  310. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  311. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  312. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  313. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  314. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  315. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  316. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  317. package/dist/Testing/components/testing-explorer.component.d.ts +38 -6
  318. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  319. package/dist/Testing/components/testing-explorer.component.js +679 -786
  320. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  321. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  322. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  323. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  324. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  325. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  326. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  327. package/dist/Testing/components/testing-review.component.js +310 -274
  328. package/dist/Testing/components/testing-review.component.js.map +1 -1
  329. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  330. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  331. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  332. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  333. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  334. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  335. package/dist/Testing/components/testing-runs.component.js +307 -273
  336. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  337. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  338. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  339. package/dist/Testing/testing-dashboard.component.js +114 -99
  340. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  341. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  342. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  343. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  344. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  345. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  346. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  347. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  348. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  349. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  350. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  351. package/dist/actions-dashboards.module.d.ts +15 -16
  352. package/dist/actions-dashboards.module.d.ts.map +1 -1
  353. package/dist/actions-dashboards.module.js +34 -11
  354. package/dist/actions-dashboards.module.js.map +1 -1
  355. package/dist/ai-dashboards.module.d.ts +45 -48
  356. package/dist/ai-dashboards.module.d.ts.map +1 -1
  357. package/dist/ai-dashboards.module.js +51 -10
  358. package/dist/ai-dashboards.module.js.map +1 -1
  359. package/dist/archiving-dashboards.module.d.ts +2 -1
  360. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  361. package/dist/archiving-dashboards.module.js +12 -2
  362. package/dist/archiving-dashboards.module.js.map +1 -1
  363. package/dist/communication-dashboards.module.d.ts +9 -6
  364. package/dist/communication-dashboards.module.d.ts.map +1 -1
  365. package/dist/communication-dashboards.module.js +37 -7
  366. package/dist/communication-dashboards.module.js.map +1 -1
  367. package/dist/core-dashboards.module.d.ts +1 -1
  368. package/dist/core-dashboards.module.d.ts.map +1 -1
  369. package/dist/core-dashboards.module.js +46 -1
  370. package/dist/core-dashboards.module.js.map +1 -1
  371. package/dist/credentials-dashboards.module.d.ts +1 -1
  372. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  373. package/dist/credentials-dashboards.module.js +28 -1
  374. package/dist/credentials-dashboards.module.js.map +1 -1
  375. package/dist/lists-dashboards.module.d.ts +10 -9
  376. package/dist/lists-dashboards.module.d.ts.map +1 -1
  377. package/dist/lists-dashboards.module.js +40 -2
  378. package/dist/lists-dashboards.module.js.map +1 -1
  379. package/dist/public-api.d.ts +3 -2
  380. package/dist/public-api.d.ts.map +1 -1
  381. package/dist/public-api.js +4 -3
  382. package/dist/public-api.js.map +1 -1
  383. package/dist/scheduling-dashboards.module.d.ts +1 -1
  384. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  385. package/dist/scheduling-dashboards.module.js +31 -1
  386. package/dist/scheduling-dashboards.module.js.map +1 -1
  387. package/dist/testing-dashboards.module.d.ts +8 -7
  388. package/dist/testing-dashboards.module.d.ts.map +1 -1
  389. package/dist/testing-dashboards.module.js +42 -0
  390. package/dist/testing-dashboards.module.js.map +1 -1
  391. package/package.json +53 -52
  392. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  393. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  394. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  395. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  396. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  397. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  398. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  399. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  400. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  401. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  402. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  403. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  404. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  405. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  406. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  407. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"action-explorer.component.js","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/action-explorer.component.ts","../../../../src/Actions/components/explorer/action-explorer.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, combineLatestWith } from 'rxjs/operators';\nimport { CompositeKey, LogError, RunView } from '@memberjunction/core';\nimport { MJActionCategoryEntity, MJActionEntity, MJActionParamEntity, ResourceData } from '@memberjunction/core-entities';\nimport { ActionEngineBase, MJActionEntityExtended } from '@memberjunction/actions-base';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport {\n ActionExplorerStateService,\n ActionViewMode,\n SortConfig,\n ActionFilters\n} from '../../services/action-explorer-state.service';\nimport { ActionTreePanelComponent } from './action-tree-panel.component';\n@RegisterClass(BaseResourceComponent, 'ActionExplorerResource')\n@Component({\n standalone: false,\n selector: 'mj-action-explorer',\n templateUrl: './action-explorer.component.html',\n styleUrls: ['./action-explorer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ActionExplorerStateService]\n})\nexport class ActionExplorerComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n @ViewChild(ActionTreePanelComponent) TreePanel!: ActionTreePanelComponent;\n\n public IsLoading = true;\n public Actions: MJActionEntityExtended[] = [];\n public FilteredActions: MJActionEntityExtended[] = [];\n public Categories: MJActionCategoryEntity[] = [];\n public CategoriesMap = new Map<string, MJActionCategoryEntity>();\n\n public ViewMode: ActionViewMode = 'card';\n public SelectedCategoryId = 'all';\n public NewCategoryParentId: string | null = null;\n\n // Run dialog state\n public IsRunDialogOpen = false;\n public SelectedActionForRun: MJActionEntity | null = null;\n public SelectedActionParams: MJActionParamEntity[] = [];\n\n protected override destroy$ = new Subject<void>();\n\n constructor(\n public StateService: ActionExplorerStateService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.subscribeToState();\n this.applyQueryParams(this.GetQueryParams());\n this.StateService.loadSavedState();\n this.loadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeToState(): void {\n // Subscribe to view mode changes\n this.StateService.ViewMode$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(mode => {\n this.ViewMode = mode;\n this.cdr.markForCheck();\n });\n\n // Subscribe to selected category changes\n this.StateService.SelectedCategoryId$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(id => {\n this.SelectedCategoryId = id;\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n\n // Subscribe to filter and sort changes\n this.StateService.Filters$.pipe(\n combineLatestWith(this.StateService.SortConfig$),\n debounceTime(50),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n }\n\n /**\n * Convert the framework's plain-object params into the StateService's URLSearchParams-based parser.\n */\n private applyQueryParams(params: Record<string, string>): void {\n const urlParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n urlParams.set(key, value);\n }\n }\n this.StateService.parseQueryParams(urlParams);\n }\n\n private async loadData(): Promise<void> {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n // Initialize ActionEngineBase\n await ActionEngineBase.Instance.Config(false);\n\n // Get actions and categories from engine\n this.Actions = ActionEngineBase.Instance.Actions;\n this.Categories = ActionEngineBase.Instance.ActionCategories;\n\n // Build categories map\n this.CategoriesMap.clear();\n this.Categories.forEach(c => this.CategoriesMap.set(c.ID, c));\n\n // Build tree panel if available\n if (this.TreePanel) {\n this.TreePanel.Categories = this.Categories;\n this.TreePanel.Actions = this.Actions;\n this.TreePanel.buildCategoryTree();\n }\n\n // Apply filters\n this.applyFilters();\n\n // Expand path to selected category if needed\n if (this.SelectedCategoryId !== 'all' && this.SelectedCategoryId !== 'uncategorized') {\n const categoryParentMap = new Map<string, string | null>();\n this.Categories.forEach(c => categoryParentMap.set(c.ID, c.ParentID || null));\n this.StateService.expandPathToCategory(this.SelectedCategoryId, categoryParentMap);\n }\n\n } catch (error) {\n LogError('Failed to load action explorer data', undefined, error);\n } finally {\n this.IsLoading = false;\n this.cdr.markForCheck();\n this.NotifyLoadComplete();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.Actions];\n const filters = this.StateService.Filters;\n const sortConfig = this.StateService.SortConfig;\n\n // Apply category filter\n if (this.SelectedCategoryId === 'uncategorized') {\n filtered = filtered.filter(a => !a.CategoryID);\n } else if (this.SelectedCategoryId !== 'all') {\n // Include descendants\n const descendants = this.getDescendantCategoryIds(this.SelectedCategoryId);\n filtered = filtered.filter(a => a.CategoryID && descendants.has(a.CategoryID));\n }\n\n // Apply search filter\n if (filters.searchTerm) {\n const term = filters.searchTerm.toLowerCase();\n filtered = filtered.filter(a =>\n a.Name.toLowerCase().includes(term) ||\n (a.Description || '').toLowerCase().includes(term)\n );\n }\n\n // Apply status filter\n if (filters.statuses.length > 0) {\n filtered = filtered.filter(a => filters.statuses.includes(a.Status));\n }\n\n // Apply type filter\n if (filters.types.length > 0) {\n filtered = filtered.filter(a => filters.types.includes(a.Type));\n }\n\n // Apply sorting\n filtered = this.sortActions(filtered, sortConfig);\n\n this.FilteredActions = filtered;\n }\n\n private getDescendantCategoryIds(categoryId: string): Set<string> {\n const descendants = new Set<string>([categoryId]);\n\n const addDescendants = (parentId: string) => {\n this.Categories.forEach(c => {\n if (UUIDsEqual(c.ParentID, parentId) && !descendants.has(c.ID)) {\n descendants.add(c.ID);\n addDescendants(c.ID);\n }\n });\n };\n\n addDescendants(categoryId);\n return descendants;\n }\n\n private sortActions(actions: MJActionEntityExtended[], config: SortConfig): MJActionEntityExtended[] {\n const sorted = [...actions];\n const direction = config.direction === 'asc' ? 1 : -1;\n\n sorted.sort((a, b) => {\n let comparison = 0;\n\n switch (config.field) {\n case 'name':\n comparison = a.Name.localeCompare(b.Name);\n break;\n case 'updated':\n const dateA = a.__mj_UpdatedAt ? new Date(a.__mj_UpdatedAt).getTime() : 0;\n const dateB = b.__mj_UpdatedAt ? new Date(b.__mj_UpdatedAt).getTime() : 0;\n comparison = dateA - dateB;\n break;\n case 'status':\n comparison = (a.Status || '').localeCompare(b.Status || '');\n break;\n case 'type':\n comparison = (a.Type || '').localeCompare(b.Type || '');\n break;\n case 'category':\n const catA = this.CategoriesMap.get(a.CategoryID || '')?.Name || '';\n const catB = this.CategoriesMap.get(b.CategoryID || '')?.Name || '';\n comparison = catA.localeCompare(catB);\n break;\n }\n\n return comparison * direction;\n });\n\n return sorted;\n }\n\n /**\n * React to back/forward navigation or deep-link activation.\n * Called by the base class when the URL query params change externally.\n */\n protected override OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void {\n this.applyQueryParams(params);\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n public async onRefresh(): Promise<void> {\n await ActionEngineBase.Instance.Config(true); // Force refresh\n await this.loadData();\n }\n\n public onCategorySelect(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public onNewCategory(parentId: string | null): void {\n this.NewCategoryParentId = parentId;\n this.StateService.openNewCategoryPanel();\n }\n\n public onEditCategory(category: MJActionCategoryEntity): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: category.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Action Categories', key);\n }\n\n public onNewAction(): void {\n this.StateService.openNewActionPanel();\n }\n\n public onActionClick(action: MJActionEntityExtended): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: action.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Actions', key);\n }\n\n public onActionEdit(action: MJActionEntityExtended): void {\n this.onActionClick(action);\n }\n\n public async onActionRun(action: MJActionEntityExtended): Promise<void> {\n if (action.Status !== 'Active') {\n return; // Can't run inactive actions\n }\n\n try {\n // Load action params\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJActionParamEntity>({\n EntityName: 'MJ: Action Params',\n ExtraFilter: `ActionID='${action.ID}'`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n this.SelectedActionParams = result.Success ? result.Results || [] : [];\n // MJActionEntityExtended extends MJActionEntity, so this cast is safe\n this.SelectedActionForRun = action as unknown as MJActionEntity;\n this.IsRunDialogOpen = true;\n this.cdr.markForCheck();\n\n } catch (error) {\n LogError('Failed to open action run dialog', undefined, error);\n }\n }\n\n public OnRunDialogClose(): void {\n this.IsRunDialogOpen = false;\n this.SelectedActionForRun = null;\n this.SelectedActionParams = [];\n this.cdr.markForCheck();\n }\n\n public onCategoryClick(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public async onCategoryCreated(category: MJActionCategoryEntity): Promise<void> {\n // Refresh data to include new category\n await this.loadData();\n // Select the new category\n this.StateService.setSelectedCategoryId(category.ID);\n }\n\n public async onActionCreated(): Promise<void> {\n // Refresh data to include new action\n await this.loadData();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Action Explorer';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-folder-tree';\n }\n}\n","<div class=\"action-explorer\">\n <!-- Full-page Loading Overlay -->\n @if (IsLoading) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading actions...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Tree Panel (Left Sidebar) -->\n <mj-action-tree-panel\n [Categories]=\"Categories\"\n [Actions]=\"Actions\"\n (CategorySelected)=\"onCategorySelect($event)\"\n (NewCategoryClick)=\"onNewCategory($event)\"\n (EditCategoryClick)=\"onEditCategory($event)\">\n </mj-action-tree-panel>\n\n <!-- Main Content Area -->\n <div class=\"explorer-main\">\n <!-- Toolbar -->\n <mj-action-toolbar\n [TotalCount]=\"Actions.length\"\n [FilteredCount]=\"FilteredActions.length\"\n (NewActionClick)=\"onNewAction()\"\n (RefreshClick)=\"onRefresh()\">\n </mj-action-toolbar>\n\n <!-- Breadcrumb -->\n <mj-action-breadcrumb\n [SelectedCategoryId]=\"SelectedCategoryId\"\n [Categories]=\"Categories\"\n (CategorySelect)=\"onCategorySelect($event)\">\n </mj-action-breadcrumb>\n\n <!-- Content Area -->\n <div class=\"explorer-content\">\n @if (FilteredActions.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n @if (StateService.hasActiveFilters() || SelectedCategoryId !== 'all') {\n <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n <h3>No actions match your filters</h3>\n <p>Try adjusting your search or filter criteria</p>\n <button mjButton\n variant=\"outline\"\n (click)=\"StateService.clearFilters(); StateService.setSelectedCategoryId('all')\">\n <i class=\"fa-solid fa-times\"></i>\n Clear All Filters\n </button>\n } @else {\n <i class=\"fa-solid fa-bolt\"></i>\n <h3>No actions yet</h3>\n <p>Create your first action to get started</p>\n <button mjButton\n variant=\"primary\"\n (click)=\"onNewAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Action\n </button>\n }\n </div>\n } @else {\n <!-- Card View -->\n @if (ViewMode === 'card') {\n <div class=\"card-grid\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-card\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-card>\n }\n </div>\n }\n\n <!-- List View -->\n @if (ViewMode === 'list') {\n <div class=\"list-view\">\n <div class=\"list-header\">\n <div class=\"header-icon\"></div>\n <div class=\"header-name\">Name</div>\n <div class=\"header-category\">Category</div>\n <div class=\"header-status\">Status</div>\n <div class=\"header-type\">Type</div>\n <div class=\"header-params\">Params</div>\n <div class=\"header-updated\">Updated</div>\n <div class=\"header-actions\"></div>\n </div>\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"false\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n\n <!-- Compact View -->\n @if (ViewMode === 'compact') {\n <div class=\"compact-view\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"true\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Slide-in Panels -->\n <mj-new-category-panel\n [Categories]=\"Categories\"\n [PreselectedParentId]=\"NewCategoryParentId\"\n (CategoryCreated)=\"onCategoryCreated($event)\"\n (Close)=\"NewCategoryParentId = null\">\n </mj-new-category-panel>\n\n <mj-new-action-panel\n [Categories]=\"Categories\"\n (ActionCreated)=\"onActionCreated()\">\n </mj-new-action-panel>\n\n <!-- Action Run Dialog -->\n @if (SelectedActionForRun) {\n <mj-action-test-harness-dialog\n [Action]=\"SelectedActionForRun\"\n [ActionParams]=\"SelectedActionParams\"\n [IsOpen]=\"IsRunDialogOpen\"\n (Close)=\"OnRunDialogClose()\">\n </mj-action-test-harness-dialog>\n }\n</div>\n"]}
1
+ {"version":3,"file":"action-explorer.component.js","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/action-explorer.component.ts","../../../../src/Actions/components/explorer/action-explorer.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged, combineLatestWith } from 'rxjs/operators';\nimport { CompositeKey, LogError, RunView } from '@memberjunction/core';\nimport { MJActionCategoryEntity, MJActionEntity, MJActionParamEntity, ResourceData } from '@memberjunction/core-entities';\nimport { ActionEngineBase, MJActionEntityExtended } from '@memberjunction/actions-base';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { ViewToggleOption } from '@memberjunction/ng-ui-components';\nimport {\n ActionExplorerStateService,\n ActionViewMode,\n SortConfig,\n SortField,\n SortDirection,\n ActionFilters\n} from '../../services/action-explorer-state.service';\nimport { ActionTreePanelComponent } from './action-tree-panel.component';\n\ninterface SortOption {\n field: SortField;\n label: string;\n icon: string;\n}\n@RegisterClass(BaseResourceComponent, 'ActionExplorerResource')\n@Component({\n standalone: false,\n selector: 'mj-action-explorer',\n templateUrl: './action-explorer.component.html',\n styleUrls: ['./action-explorer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ActionExplorerStateService]\n})\nexport class ActionExplorerComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n @ViewChild(ActionTreePanelComponent) TreePanel!: ActionTreePanelComponent;\n\n public IsLoading = true;\n public Actions: MJActionEntityExtended[] = [];\n public FilteredActions: MJActionEntityExtended[] = [];\n public Categories: MJActionCategoryEntity[] = [];\n public CategoriesMap = new Map<string, MJActionCategoryEntity>();\n\n public ViewMode: ActionViewMode = 'card';\n public SortField: SortField = 'name';\n public SortDirection: SortDirection = 'asc';\n public Filters: ActionFilters = {\n searchTerm: '',\n statuses: [],\n types: [],\n approvalStatuses: [],\n hasExecutions: null\n };\n public ShowSortDropdown = false;\n\n public SelectedCategoryId = 'all';\n public NewCategoryParentId: string | null = null;\n\n // Run dialog state\n public IsRunDialogOpen = false;\n public SelectedActionForRun: MJActionEntity | null = null;\n public SelectedActionParams: MJActionParamEntity[] = [];\n\n // ───── Toolbar option arrays + helpers (consolidated from former mj-action-toolbar) ─────\n\n public readonly ViewToggleOptions: ViewToggleOption[] = [\n { key: 'card', icon: 'fa-solid fa-grip', title: 'Card view' },\n { key: 'list', icon: 'fa-solid fa-list', title: 'List view' },\n { key: 'compact', icon: 'fa-solid fa-bars', title: 'Compact view' }\n ];\n\n public readonly SortOptions: SortOption[] = [\n { field: 'name', label: 'Name', icon: 'fa-solid fa-font' },\n { field: 'updated', label: 'Last Updated', icon: 'fa-solid fa-clock' },\n { field: 'status', label: 'Status', icon: 'fa-solid fa-circle-check' },\n { field: 'type', label: 'Type', icon: 'fa-solid fa-tag' },\n { field: 'category', label: 'Category', icon: 'fa-solid fa-folder' }\n ];\n\n public readonly StatusOptions = [\n { value: 'Active', label: 'Active' },\n { value: 'Pending', label: 'Pending' },\n { value: 'Disabled', label: 'Disabled' }\n ];\n\n public readonly TypeOptions = [\n { value: 'Generated', label: 'AI Generated', icon: 'fa-solid fa-robot' },\n { value: 'Custom', label: 'Custom', icon: 'fa-solid fa-code' }\n ];\n\n protected override destroy$ = new Subject<void>();\n private searchInput$ = new Subject<string>();\n\n constructor(\n public StateService: ActionExplorerStateService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.subscribeToState();\n this.setupSearchDebounce();\n this.applyQueryParams(this.GetQueryParams());\n this.StateService.loadSavedState();\n this.loadData();\n }\n\n private setupSearchDebounce(): void {\n this.searchInput$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(term => {\n this.StateService.setSearchTerm(term);\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeToState(): void {\n // Subscribe to view mode changes\n this.StateService.ViewMode$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(mode => {\n this.ViewMode = mode;\n this.cdr.markForCheck();\n });\n\n // Subscribe to selected category changes\n this.StateService.SelectedCategoryId$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(id => {\n this.SelectedCategoryId = id;\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n\n // Subscribe to filter and sort changes\n this.StateService.Filters$.pipe(\n combineLatestWith(this.StateService.SortConfig$),\n debounceTime(50),\n takeUntil(this.destroy$)\n ).subscribe(([filters, sort]) => {\n this.Filters = filters;\n this.SortField = sort.field;\n this.SortDirection = sort.direction;\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n }\n\n /**\n * Convert the framework's plain-object params into the StateService's URLSearchParams-based parser.\n */\n private applyQueryParams(params: Record<string, string>): void {\n const urlParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n urlParams.set(key, value);\n }\n }\n this.StateService.parseQueryParams(urlParams);\n }\n\n private async loadData(): Promise<void> {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n // Initialize ActionEngineBase\n await ActionEngineBase.Instance.Config(false);\n\n // Get actions and categories from engine\n this.Actions = ActionEngineBase.Instance.Actions;\n this.Categories = ActionEngineBase.Instance.ActionCategories;\n\n // Build categories map\n this.CategoriesMap.clear();\n this.Categories.forEach(c => this.CategoriesMap.set(c.ID, c));\n\n // Build tree panel if available\n if (this.TreePanel) {\n this.TreePanel.Categories = this.Categories;\n this.TreePanel.Actions = this.Actions;\n this.TreePanel.buildCategoryTree();\n }\n\n // Apply filters\n this.applyFilters();\n\n // Expand path to selected category if needed\n if (this.SelectedCategoryId !== 'all' && this.SelectedCategoryId !== 'uncategorized') {\n const categoryParentMap = new Map<string, string | null>();\n this.Categories.forEach(c => categoryParentMap.set(c.ID, c.ParentID || null));\n this.StateService.expandPathToCategory(this.SelectedCategoryId, categoryParentMap);\n }\n\n } catch (error) {\n LogError('Failed to load action explorer data', undefined, error);\n } finally {\n this.IsLoading = false;\n this.cdr.markForCheck();\n this.NotifyLoadComplete();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.Actions];\n const filters = this.StateService.Filters;\n const sortConfig = this.StateService.SortConfig;\n\n // Apply category filter\n if (this.SelectedCategoryId === 'uncategorized') {\n filtered = filtered.filter(a => !a.CategoryID);\n } else if (this.SelectedCategoryId !== 'all') {\n // Include descendants\n const descendants = this.getDescendantCategoryIds(this.SelectedCategoryId);\n filtered = filtered.filter(a => a.CategoryID && descendants.has(a.CategoryID));\n }\n\n // Apply search filter\n if (filters.searchTerm) {\n const term = filters.searchTerm.toLowerCase();\n filtered = filtered.filter(a =>\n a.Name.toLowerCase().includes(term) ||\n (a.Description || '').toLowerCase().includes(term)\n );\n }\n\n // Apply status filter\n if (filters.statuses.length > 0) {\n filtered = filtered.filter(a => filters.statuses.includes(a.Status));\n }\n\n // Apply type filter\n if (filters.types.length > 0) {\n filtered = filtered.filter(a => filters.types.includes(a.Type));\n }\n\n // Apply sorting\n filtered = this.sortActions(filtered, sortConfig);\n\n this.FilteredActions = filtered;\n }\n\n private getDescendantCategoryIds(categoryId: string): Set<string> {\n const descendants = new Set<string>([categoryId]);\n\n const addDescendants = (parentId: string) => {\n this.Categories.forEach(c => {\n if (UUIDsEqual(c.ParentID, parentId) && !descendants.has(c.ID)) {\n descendants.add(c.ID);\n addDescendants(c.ID);\n }\n });\n };\n\n addDescendants(categoryId);\n return descendants;\n }\n\n private sortActions(actions: MJActionEntityExtended[], config: SortConfig): MJActionEntityExtended[] {\n const sorted = [...actions];\n const direction = config.direction === 'asc' ? 1 : -1;\n\n sorted.sort((a, b) => {\n let comparison = 0;\n\n switch (config.field) {\n case 'name':\n comparison = a.Name.localeCompare(b.Name);\n break;\n case 'updated':\n const dateA = a.__mj_UpdatedAt ? new Date(a.__mj_UpdatedAt).getTime() : 0;\n const dateB = b.__mj_UpdatedAt ? new Date(b.__mj_UpdatedAt).getTime() : 0;\n comparison = dateA - dateB;\n break;\n case 'status':\n comparison = (a.Status || '').localeCompare(b.Status || '');\n break;\n case 'type':\n comparison = (a.Type || '').localeCompare(b.Type || '');\n break;\n case 'category':\n const catA = this.CategoriesMap.get(a.CategoryID || '')?.Name || '';\n const catB = this.CategoriesMap.get(b.CategoryID || '')?.Name || '';\n comparison = catA.localeCompare(catB);\n break;\n }\n\n return comparison * direction;\n });\n\n return sorted;\n }\n\n /**\n * React to back/forward navigation or deep-link activation.\n * Called by the base class when the URL query params change externally.\n */\n protected override OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void {\n this.applyQueryParams(params);\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n public async onRefresh(): Promise<void> {\n await ActionEngineBase.Instance.Config(true); // Force refresh\n await this.loadData();\n }\n\n public onCategorySelect(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public onNewCategory(parentId: string | null): void {\n this.NewCategoryParentId = parentId;\n this.StateService.openNewCategoryPanel();\n }\n\n public onEditCategory(category: MJActionCategoryEntity): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: category.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Action Categories', key);\n }\n\n public onNewAction(): void {\n this.StateService.openNewActionPanel();\n }\n\n public onActionClick(action: MJActionEntityExtended): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: action.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Actions', key);\n }\n\n public onActionEdit(action: MJActionEntityExtended): void {\n this.onActionClick(action);\n }\n\n public async onActionRun(action: MJActionEntityExtended): Promise<void> {\n if (action.Status !== 'Active') {\n return; // Can't run inactive actions\n }\n\n try {\n // Load action params\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJActionParamEntity>({\n EntityName: 'MJ: Action Params',\n ExtraFilter: `ActionID='${action.ID}'`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n this.SelectedActionParams = result.Success ? result.Results || [] : [];\n // MJActionEntityExtended extends MJActionEntity, so this cast is safe\n this.SelectedActionForRun = action as unknown as MJActionEntity;\n this.IsRunDialogOpen = true;\n this.cdr.markForCheck();\n\n } catch (error) {\n LogError('Failed to open action run dialog', undefined, error);\n }\n }\n\n public OnRunDialogClose(): void {\n this.IsRunDialogOpen = false;\n this.SelectedActionForRun = null;\n this.SelectedActionParams = [];\n this.cdr.markForCheck();\n }\n\n public onCategoryClick(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public async onCategoryCreated(category: MJActionCategoryEntity): Promise<void> {\n // Refresh data to include new category\n await this.loadData();\n // Select the new category\n this.StateService.setSelectedCategoryId(category.ID);\n }\n\n public async onActionCreated(): Promise<void> {\n // Refresh data to include new action\n await this.loadData();\n }\n\n // ───── Toolbar handlers (consolidated from former mj-action-toolbar) ─────\n\n public onSearchInput(term: string): void {\n this.searchInput$.next(term);\n }\n\n public clearSearch(): void {\n this.StateService.setSearchTerm('');\n }\n\n public setViewMode(mode: ActionViewMode): void {\n this.StateService.setViewMode(mode);\n }\n\n public setSortField(field: SortField): void {\n this.StateService.setSortField(field);\n this.ShowSortDropdown = false;\n }\n\n public toggleStatus(status: string): void {\n const current = [...this.Filters.statuses];\n const i = current.indexOf(status);\n if (i >= 0) current.splice(i, 1);\n else current.push(status);\n this.StateService.setStatusFilter(current);\n }\n\n public toggleType(type: string): void {\n const current = [...this.Filters.types];\n const i = current.indexOf(type);\n if (i >= 0) current.splice(i, 1);\n else current.push(type);\n this.StateService.setTypeFilter(current);\n }\n\n public isStatusSelected(status: string): boolean {\n return this.Filters.statuses.includes(status);\n }\n\n public isTypeSelected(type: string): boolean {\n return this.Filters.types.includes(type);\n }\n\n public clearFilters(): void {\n this.StateService.clearFilters();\n }\n\n public hasActiveFilters(): boolean {\n return this.StateService.hasActiveFilters();\n }\n\n /** Active filter count for the popover badge — counts only Status + Type\n * (searchTerm has its own search input, not part of the popover). */\n public get StatusTypeFilterCount(): number {\n return this.Filters.statuses.length + this.Filters.types.length;\n }\n\n public toggleSortDropdown(): void {\n this.ShowSortDropdown = !this.ShowSortDropdown;\n }\n\n public getSortLabel(): string {\n const option = this.SortOptions.find(o => o.field === this.SortField);\n return option?.label || 'Sort';\n }\n\n public getSortIcon(): string {\n return this.SortDirection === 'asc' ? 'fa-solid fa-arrow-up-short-wide' : 'fa-solid fa-arrow-down-wide-short';\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Action Explorer';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-folder-tree';\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Action Explorer\"\n Icon=\"fa-solid fa-folder-tree\"\n Subtitle=\"Browse, organize, and run all configured actions\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredActions.length\"\n [Total]=\"Actions.length\"\n Label=\"actions\">\n </mj-stat-badge>\n </div>\n <div actions>\n <!-- Filters popover (shared trigger + popover chrome; multi-select checkbox content stays bespoke) -->\n <mj-filter-popover\n [ActiveCount]=\"StatusTypeFilterCount\"\n [ShowClearAll]=\"StatusTypeFilterCount > 0\"\n (ClearAllRequested)=\"clearFilters()\">\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <span>Status</span>\n @if (Filters.statuses.length > 0) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"StateService.setStatusFilter([])\">Clear</button>\n }\n </div>\n <div class=\"filter-options\">\n @for (status of StatusOptions; track status.value) {\n <label class=\"filter-option\" [class.selected]=\"isStatusSelected(status.value)\">\n <input type=\"checkbox\"\n [checked]=\"isStatusSelected(status.value)\"\n (change)=\"toggleStatus(status.value)\">\n <span class=\"status-dot\" [attr.data-status]=\"status.value\"></span>\n {{ status.label }}\n </label>\n }\n </div>\n </div>\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <span>Type</span>\n @if (Filters.types.length > 0) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"StateService.setTypeFilter([])\">Clear</button>\n }\n </div>\n <div class=\"filter-options\">\n @for (type of TypeOptions; track type.value) {\n <label class=\"filter-option\" [class.selected]=\"isTypeSelected(type.value)\">\n <input type=\"checkbox\"\n [checked]=\"isTypeSelected(type.value)\"\n (change)=\"toggleType(type.value)\">\n <i [class]=\"type.icon\"></i>\n {{ type.label }}\n </label>\n }\n </div>\n </div>\n </mj-filter-popover>\n\n <!-- Sort Dropdown (bespoke — no shared sort component yet) -->\n <div class=\"dropdown-container\" (clickOutside)=\"ShowSortDropdown = false\">\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"toggleSortDropdown()\">\n <i [class]=\"getSortIcon()\"></i> {{ getSortLabel() }}\n <i [class]=\"ShowSortDropdown ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </button>\n @if (ShowSortDropdown) {\n <div class=\"dropdown-menu sort-menu\">\n @for (option of SortOptions; track option.field) {\n <button class=\"sort-option\"\n [class.selected]=\"SortField === option.field\"\n (click)=\"setSortField(option.field)\">\n <i [class]=\"option.icon\"></i>\n {{ option.label }}\n @if (SortField === option.field) {\n <i [class]=\"SortDirection === 'asc' ? 'fa-solid fa-arrow-up' : 'fa-solid fa-arrow-down'\" class=\"direction-icon\"></i>\n }\n </button>\n }\n </div>\n }\n </div>\n\n <mj-view-toggle\n [Options]=\"ViewToggleOptions\"\n [ActiveKey]=\"ViewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n\n <mj-refresh-button (Clicked)=\"onRefresh()\"></mj-refresh-button>\n\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onNewAction()\">\n <i class=\"fa-solid fa-plus\"></i> New Action\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search actions...\"\n [Value]=\"Filters.searchTerm\"\n (ValueChange)=\"onSearchInput($event)\">\n </mj-page-search>\n @if (hasActiveFilters()) {\n <div class=\"active-filters\">\n @for (status of Filters.statuses; track status) {\n <span class=\"status-chip removable\" (click)=\"toggleStatus(status)\">\n Status: {{ status }} <i class=\"fa-solid fa-times\"></i>\n </span>\n }\n @for (type of Filters.types; track type) {\n <span class=\"status-chip removable\" (click)=\"toggleType(type)\">\n Type: {{ type === 'Generated' ? 'AI Generated' : type }} <i class=\"fa-solid fa-times\"></i>\n </span>\n }\n </div>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\">\n<div class=\"action-explorer\">\n <!-- Full-page Loading Overlay -->\n @if (IsLoading) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading actions...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Tree Panel (Left Sidebar) -->\n <mj-action-tree-panel\n [Categories]=\"Categories\"\n [Actions]=\"Actions\"\n (CategorySelected)=\"onCategorySelect($event)\"\n (NewCategoryClick)=\"onNewCategory($event)\"\n (EditCategoryClick)=\"onEditCategory($event)\">\n </mj-action-tree-panel>\n\n <!-- Main Content Area -->\n <div class=\"explorer-main\">\n <!-- Breadcrumb -->\n <mj-action-breadcrumb\n [SelectedCategoryId]=\"SelectedCategoryId\"\n [Categories]=\"Categories\"\n (CategorySelect)=\"onCategorySelect($event)\">\n </mj-action-breadcrumb>\n\n <!-- Content Area -->\n <div class=\"explorer-content\">\n @if (FilteredActions.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n @if (StateService.hasActiveFilters() || SelectedCategoryId !== 'all') {\n <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n <h3>No actions match your filters</h3>\n <p>Try adjusting your search or filter criteria</p>\n <button mjButton\n variant=\"outline\"\n (click)=\"StateService.clearFilters(); StateService.setSelectedCategoryId('all')\">\n <i class=\"fa-solid fa-times\"></i>\n Clear All Filters\n </button>\n } @else {\n <i class=\"fa-solid fa-bolt\"></i>\n <h3>No actions yet</h3>\n <p>Create your first action to get started</p>\n <button mjButton\n variant=\"primary\"\n (click)=\"onNewAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Action\n </button>\n }\n </div>\n } @else {\n <!-- Card View -->\n @if (ViewMode === 'card') {\n <div class=\"card-grid\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-card\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-card>\n }\n </div>\n }\n\n <!-- List View -->\n @if (ViewMode === 'list') {\n <div class=\"list-view\">\n <div class=\"list-header\">\n <div class=\"header-icon\"></div>\n <div class=\"header-name\">Name</div>\n <div class=\"header-category\">Category</div>\n <div class=\"header-status\">Status</div>\n <div class=\"header-type\">Type</div>\n <div class=\"header-params\">Params</div>\n <div class=\"header-updated\">Updated</div>\n <div class=\"header-actions\"></div>\n </div>\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"false\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n\n <!-- Compact View -->\n @if (ViewMode === 'compact') {\n <div class=\"compact-view\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"true\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Slide-in Panels -->\n <mj-new-category-panel\n [Categories]=\"Categories\"\n [PreselectedParentId]=\"NewCategoryParentId\"\n (CategoryCreated)=\"onCategoryCreated($event)\"\n (Close)=\"NewCategoryParentId = null\">\n </mj-new-category-panel>\n\n <mj-new-action-panel\n [Categories]=\"Categories\"\n (ActionCreated)=\"onActionCreated()\">\n </mj-new-action-panel>\n\n <!-- Action Run Dialog -->\n @if (SelectedActionForRun) {\n <mj-action-test-harness-dialog\n [Action]=\"SelectedActionForRun\"\n [ActionParams]=\"SelectedActionParams\"\n [IsOpen]=\"IsRunDialogOpen\"\n (Close)=\"OnRunDialogClose()\">\n </mj-action-test-harness-dialog>\n }\n</div>\n </mj-page-body>\n</mj-page-layout>\n"]}
@@ -1,6 +1,5 @@
1
1
  export * from './action-explorer.component';
2
2
  export * from './action-tree-panel.component';
3
- export * from './action-toolbar.component';
4
3
  export * from './action-breadcrumb.component';
5
4
  export * from './action-card.component';
6
5
  export * from './action-list-item.component';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC"}
@@ -1,7 +1,6 @@
1
1
  // Action Explorer Components
2
2
  export * from './action-explorer.component';
3
3
  export * from './action-tree-panel.component';
4
- export * from './action-toolbar.component';
5
4
  export * from './action-breadcrumb.component';
6
5
  export * from './action-card.component';
7
6
  export * from './action-list-item.component';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC","sourcesContent":["// Action Explorer Components\nexport * from './action-explorer.component';\nexport * from './action-tree-panel.component';\nexport * from './action-toolbar.component';\nexport * from './action-breadcrumb.component';\nexport * from './action-card.component';\nexport * from './action-list-item.component';\nexport * from './new-category-panel.component';\nexport * from './new-action-panel.component';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC","sourcesContent":["// Action Explorer Components\nexport * from './action-explorer.component';\nexport * from './action-tree-panel.component';\nexport * from './action-breadcrumb.component';\nexport * from './action-card.component';\nexport * from './action-list-item.component';\nexport * from './new-category-panel.component';\nexport * from './new-action-panel.component';\n"]}
@@ -9,55 +9,7 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
9
9
  import { RegisterClass } from '@memberjunction/global';
10
10
  import { BaseAdminContainerComponent } from './base-admin-container.component';
11
11
  import * as i0 from "@angular/core";
12
- const _forTrack0 = ($index, $item) => $item.id;
13
- function AdminDataSchemaComponent_For_12_Conditional_5_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "div", 17);
15
- i0.ɵɵtext(1);
16
- i0.ɵɵelementEnd();
17
- } if (rf & 2) {
18
- const section_r2 = i0.ɵɵnextContext().$implicit;
19
- i0.ɵɵadvance();
20
- i0.ɵɵtextInterpolate(section_r2.description);
21
- } }
22
- function AdminDataSchemaComponent_For_12_Template(rf, ctx) { if (rf & 1) {
23
- const _r1 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "button", 13);
25
- i0.ɵɵlistener("click", function AdminDataSchemaComponent_For_12_Template_button_click_0_listener() { const section_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSectionClick(section_r2)); });
26
- i0.ɵɵelement(1, "i", 14);
27
- i0.ɵɵelementStart(2, "div", 15)(3, "div", 16);
28
- i0.ɵɵtext(4);
29
- i0.ɵɵelementEnd();
30
- i0.ɵɵconditionalCreate(5, AdminDataSchemaComponent_For_12_Conditional_5_Template, 2, 1, "div", 17);
31
- i0.ɵɵelementEnd()();
32
- } if (rf & 2) {
33
- const section_r2 = ctx.$implicit;
34
- const ctx_r2 = i0.ɵɵnextContext();
35
- i0.ɵɵclassProp("admin-container__nav-item--active", ctx_r2.ActiveSection === section_r2.id);
36
- i0.ɵɵadvance();
37
- i0.ɵɵclassMap(section_r2.icon);
38
- i0.ɵɵadvance(3);
39
- i0.ɵɵtextInterpolate(section_r2.label);
40
- i0.ɵɵadvance();
41
- i0.ɵɵconditional(section_r2.description ? 5 : -1);
42
- } }
43
- function AdminDataSchemaComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
44
- i0.ɵɵelementStart(0, "div", 10);
45
- i0.ɵɵelement(1, "i", 18);
46
- i0.ɵɵelementStart(2, "span");
47
- i0.ɵɵtext(3);
48
- i0.ɵɵelementEnd()();
49
- } if (rf & 2) {
50
- const ctx_r2 = i0.ɵɵnextContext();
51
- i0.ɵɵadvance(3);
52
- i0.ɵɵtextInterpolate(ctx_r2.LoadError);
53
- } }
54
- function AdminDataSchemaComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵelementStart(0, "div", 11);
56
- i0.ɵɵelement(1, "i", 19);
57
- i0.ɵɵelementStart(2, "span");
58
- i0.ɵɵtext(3, "Loading\u2026");
59
- i0.ɵɵelementEnd()();
60
- } }
12
+ import * as i1 from "@memberjunction/ng-ui-components";
61
13
  /**
62
14
  * Admin → Data & Schema. ERD viewer, query browser, and the database
63
15
  * designer wizard. Order matters here: ERD first (overview), then Query
@@ -91,38 +43,26 @@ let AdminDataSchemaComponent = class AdminDataSchemaComponent extends BaseAdminC
91
43
  }
92
44
  ];
93
45
  static ɵfac = /*@__PURE__*/ (() => { let ɵAdminDataSchemaComponent_BaseFactory; return function AdminDataSchemaComponent_Factory(__ngFactoryType__) { return (ɵAdminDataSchemaComponent_BaseFactory || (ɵAdminDataSchemaComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AdminDataSchemaComponent)))(__ngFactoryType__ || AdminDataSchemaComponent); }; })();
94
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDataSchemaComponent, selectors: [["mj-admin-data-schema"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 7, consts: [["contentHost", ""], [1, "admin-container"], [1, "admin-container__header"], [1, "admin-container__header-icon"], [1, "admin-container__header-title"], [1, "admin-container__header-sub"], [1, "admin-container__body"], [1, "admin-container__nav"], ["type", "button", 1, "admin-container__nav-item", 3, "admin-container__nav-item--active"], [1, "admin-container__content"], [1, "admin-container__error"], [1, "admin-container__loading"], [1, "admin-container__host"], ["type", "button", 1, "admin-container__nav-item", 3, "click"], [1, "admin-container__nav-icon"], [1, "admin-container__nav-text"], [1, "admin-container__nav-label"], [1, "admin-container__nav-desc"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "fa-solid", "fa-spinner", "fa-spin"]], template: function AdminDataSchemaComponent_Template(rf, ctx) { if (rf & 1) {
95
- i0.ɵɵelementStart(0, "div", 1)(1, "header", 2)(2, "div", 3);
96
- i0.ɵɵelement(3, "i");
46
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDataSchemaComponent, selectors: [["mj-admin-data-schema"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], [3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminDataSchemaComponent_Template(rf, ctx) { if (rf & 1) {
47
+ const _r1 = i0.ɵɵgetCurrentView();
48
+ i0.ɵɵelementStart(0, "mj-page-layout");
49
+ i0.ɵɵelement(1, "mj-page-header", 1);
50
+ i0.ɵɵelementStart(2, "mj-page-body", 2)(3, "mj-left-nav", 3);
51
+ i0.ɵɵlistener("ItemClicked", function AdminDataSchemaComponent_Template_mj_left_nav_ItemClicked_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnNavItemClicked($event)); });
97
52
  i0.ɵɵelementEnd();
98
- i0.ɵɵelementStart(4, "div")(5, "h3", 4);
99
- i0.ɵɵtext(6);
100
- i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(7, "div", 5);
102
- i0.ɵɵtext(8);
53
+ i0.ɵɵelementStart(4, "mj-left-nav-content", 4);
54
+ i0.ɵɵelementContainer(5, null, 0);
103
55
  i0.ɵɵelementEnd()()();
104
- i0.ɵɵelementStart(9, "div", 6)(10, "aside", 7);
105
- i0.ɵɵrepeaterCreate(11, AdminDataSchemaComponent_For_12_Template, 6, 6, "button", 8, _forTrack0);
106
- i0.ɵɵelementEnd();
107
- i0.ɵɵelementStart(13, "main", 9);
108
- i0.ɵɵconditionalCreate(14, AdminDataSchemaComponent_Conditional_14_Template, 4, 1, "div", 10)(15, AdminDataSchemaComponent_Conditional_15_Template, 4, 0, "div", 11);
109
- i0.ɵɵelementStart(16, "div", 12);
110
- i0.ɵɵelementContainer(17, null, 0);
111
- i0.ɵɵelementEnd()()()();
112
56
  } if (rf & 2) {
113
- i0.ɵɵadvance(3);
114
- i0.ɵɵclassMap(ctx.ContainerIcon);
115
- i0.ɵɵadvance(3);
116
- i0.ɵɵtextInterpolate(ctx.ContainerTitle);
117
- i0.ɵɵadvance(2);
118
- i0.ɵɵtextInterpolate(ctx.ContainerSubtitle);
119
- i0.ɵɵadvance(3);
120
- i0.ɵɵrepeater(ctx.Sections);
121
- i0.ɵɵadvance(3);
122
- i0.ɵɵconditional(ctx.LoadError ? 14 : ctx.IsLoading ? 15 : -1);
123
- i0.ɵɵadvance(2);
124
- i0.ɵɵclassProp("admin-container__host--hidden", ctx.LoadError || ctx.IsLoading);
125
- } }, styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n.admin-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n\n\n.admin-container__header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n}\n.admin-container__header-icon[_ngcontent-%COMP%] {\n width: 36px; height: 36px;\n border-radius: 9px;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: white;\n display: flex; align-items: center; justify-content: center;\n font-size: 15px;\n flex-shrink: 0;\n}\n.admin-container__header-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.admin-container__header-sub[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n\n\n.admin-container__body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.admin-container__nav[_ngcontent-%COMP%] {\n width: 240px;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n flex-shrink: 0;\n padding: 8px;\n}\n.admin-container__nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.12s;\n margin-bottom: 2px;\n font-family: inherit;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n text-align: left;\n width: 100%;\n}\n.admin-container__nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.admin-container__nav-item--active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.admin-container__nav-item--active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n}\n.admin-container__nav-icon[_ngcontent-%COMP%] {\n width: 18px;\n text-align: center;\n font-size: 13px;\n margin-top: 1px;\n flex-shrink: 0;\n color: inherit;\n}\n.admin-container__nav-text[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.admin-container__nav-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.2;\n}\n.admin-container__nav-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.3;\n}\n.admin-container__nav-item--active[_ngcontent-%COMP%] .admin-container__nav-desc[_ngcontent-%COMP%] {\n color: color-mix(in srgb, var(--mj-brand-primary) 70%, var(--mj-text-muted));\n}\n\n\n\n.admin-container__content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n overflow: hidden;\n}\n\n\n\n.admin-container__host[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.admin-container__host--hidden[_ngcontent-%COMP%] { display: none; }\n.admin-container__host[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n\n\n.admin-container__empty[_ngcontent-%COMP%], \n.admin-container__error[_ngcontent-%COMP%], \n.admin-container__loading[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--mj-text-muted);\n font-size: 13px;\n padding: 32px;\n text-align: center;\n}\n.admin-container__error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n.admin-container__error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 20px; }\n.admin-container__loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 16px; color: var(--mj-brand-primary); }\n\n@media (max-width: 700px) {\n .admin-container__body[_ngcontent-%COMP%] { flex-direction: column; }\n .admin-container__nav[_ngcontent-%COMP%] {\n width: 100%;\n height: auto;\n max-height: 220px;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n .admin-container__nav-item[_ngcontent-%COMP%] { flex: 1 1 calc(50% - 8px); margin-bottom: 0; }\n .admin-container__nav-desc[_ngcontent-%COMP%] { display: none; }\n .admin-container__header[_ngcontent-%COMP%] { padding: 12px 14px; gap: 10px; }\n}"] });
57
+ i0.ɵɵadvance();
58
+ i0.ɵɵproperty("Title", ctx.ContainerTitle)("Icon", ctx.ContainerIcon)("Subtitle", ctx.ContainerSubtitle);
59
+ i0.ɵɵadvance();
60
+ i0.ɵɵproperty("Flex", true)("Padding", false);
61
+ i0.ɵɵadvance();
62
+ i0.ɵɵproperty("Sections", ctx.NavSections)("ActiveId", ctx.ActiveSection);
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵproperty("Loading", ctx.IsLoading)("Error", ctx.LoadError);
65
+ } }, dependencies: [i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJLeftNavComponent, i1.MJLeftNavContentComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n\n\n\n\n\n@media (max-width: 700px) {\n [_nghost-%COMP%] mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}"] });
126
66
  };
127
67
  AdminDataSchemaComponent = __decorate([
128
68
  RegisterClass(BaseResourceComponent, 'AdminDataSchema')
@@ -130,7 +70,7 @@ AdminDataSchemaComponent = __decorate([
130
70
  export { AdminDataSchemaComponent };
131
71
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminDataSchemaComponent, [{
132
72
  type: Component,
133
- args: [{ standalone: false, selector: 'mj-admin-data-schema', template: "<div class=\"admin-container\">\n <header class=\"admin-container__header\">\n <div class=\"admin-container__header-icon\"><i [class]=\"ContainerIcon\"></i></div>\n <div>\n <h3 class=\"admin-container__header-title\">{{ ContainerTitle }}</h3>\n <div class=\"admin-container__header-sub\">{{ ContainerSubtitle }}</div>\n </div>\n </header>\n\n <div class=\"admin-container__body\">\n <aside class=\"admin-container__nav\">\n @for (section of Sections; track section.id) {\n <button type=\"button\"\n class=\"admin-container__nav-item\"\n [class.admin-container__nav-item--active]=\"ActiveSection === section.id\"\n (click)=\"OnSectionClick(section)\">\n <i class=\"admin-container__nav-icon\" [class]=\"section.icon\"></i>\n <div class=\"admin-container__nav-text\">\n <div class=\"admin-container__nav-label\">{{ section.label }}</div>\n @if (section.description) {\n <div class=\"admin-container__nav-desc\">{{ section.description }}</div>\n }\n </div>\n </button>\n }\n </aside>\n\n <main class=\"admin-container__content\">\n @if (LoadError) {\n <div class=\"admin-container__error\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ LoadError }}</span>\n </div>\n } @else if (IsLoading) {\n <div class=\"admin-container__loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading\u2026</span>\n </div>\n }\n <div class=\"admin-container__host\" [class.admin-container__host--hidden]=\"LoadError || IsLoading\">\n <ng-container #contentHost></ng-container>\n </div>\n </main>\n </div>\n</div>\n", styles: [":host { display: block; height: 100%; }\n\n.admin-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n/* Header */\n.admin-container__header {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n}\n.admin-container__header-icon {\n width: 36px; height: 36px;\n border-radius: 9px;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: white;\n display: flex; align-items: center; justify-content: center;\n font-size: 15px;\n flex-shrink: 0;\n}\n.admin-container__header-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.admin-container__header-sub {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n/* Layout: sidebar + content */\n.admin-container__body {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.admin-container__nav {\n width: 240px;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n flex-shrink: 0;\n padding: 8px;\n}\n.admin-container__nav-item {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.12s;\n margin-bottom: 2px;\n font-family: inherit;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n text-align: left;\n width: 100%;\n}\n.admin-container__nav-item:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.admin-container__nav-item--active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.admin-container__nav-item--active:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n}\n.admin-container__nav-icon {\n width: 18px;\n text-align: center;\n font-size: 13px;\n margin-top: 1px;\n flex-shrink: 0;\n color: inherit;\n}\n.admin-container__nav-text { flex: 1; min-width: 0; }\n.admin-container__nav-label {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.2;\n}\n.admin-container__nav-desc {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.3;\n}\n.admin-container__nav-item--active .admin-container__nav-desc {\n color: color-mix(in srgb, var(--mj-brand-primary) 70%, var(--mj-text-muted));\n}\n\n/* Content area */\n.admin-container__content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n overflow: hidden;\n}\n\n/* Dynamic host */\n.admin-container__host {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.admin-container__host--hidden { display: none; }\n.admin-container__host > * {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n/* Empty + error + loading states */\n.admin-container__empty,\n.admin-container__error,\n.admin-container__loading {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--mj-text-muted);\n font-size: 13px;\n padding: 32px;\n text-align: center;\n}\n.admin-container__error {\n color: var(--mj-status-error);\n}\n.admin-container__error i { font-size: 20px; }\n.admin-container__loading i { font-size: 16px; color: var(--mj-brand-primary); }\n\n@media (max-width: 700px) {\n .admin-container__body { flex-direction: column; }\n .admin-container__nav {\n width: 100%;\n height: auto;\n max-height: 220px;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n .admin-container__nav-item { flex: 1 1 calc(50% - 8px); margin-bottom: 0; }\n .admin-container__nav-desc { display: none; }\n .admin-container__header { padding: 12px 14px; gap: 10px; }\n}\n"] }]
73
+ args: [{ standalone: false, selector: 'mj-admin-data-schema', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
134
74
  }], null, null); })();
135
75
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AdminDataSchemaComponent, { className: "AdminDataSchemaComponent", filePath: "src/Admin/admin-data-schema.component.ts", lineNumber: 18 }); })();
136
76
  //# sourceMappingURL=admin-data-schema.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-data-schema.component.js","sourceRoot":"","sources":["../../src/Admin/admin-data-schema.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;;ICiBjE,+BAAuC;IAAA,YAAyB;IAAA,iBAAM;;;IAA/B,cAAyB;IAAzB,4CAAyB;;;;IAR5E,kCAG0C;IAAlC,kNAAS,iCAAuB,KAAC;IACrC,wBAAgE;IAE5D,AADJ,+BAAuC,cACK;IAAA,YAAmB;IAAA,iBAAM;IACjE,kGAA2B;IAInC,AADI,iBAAM,EACD;;;;IATD,2FAAwE;IAEvC,cAAsB;IAAtB,8BAAsB;IAEf,eAAmB;IAAnB,sCAAmB;IAC3D,cAEC;IAFD,iDAEC;;;IAQT,+BAAoC;IAChC,wBAAgD;IAChD,4BAAM;IAAA,YAAe;IACzB,AADyB,iBAAO,EAC1B;;;IADI,eAAe;IAAf,sCAAe;;;IAGzB,+BAAsC;IAClC,wBAA2C;IAC3C,4BAAM;IAAA,6BAAQ;IAClB,AADkB,iBAAO,EACnB;;ADhCtB;;;;GAIG;AAQI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,2BAA2B;IACrD,cAAc,GAAG,eAAe,CAAC;IACjC,aAAa,GAAG,sBAAsB,CAAC;IACvC,iBAAiB,GAAG,oDAAoD,CAAC;IAEzE,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE;SACtD;QACD;YACI,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACpE;QACD;YACI,EAAE,EAAE,mBAAmB;YACvB,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,iCAAiC;YACvC,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;KACJ,CAAC;6QA3BO,wBAAwB,yBAAxB,wBAAwB;6DAAxB,wBAAwB;YCf7B,AADJ,AADJ,8BAA6B,gBACe,aACM;YAAA,oBAA+B;YAAA,iBAAM;YAE3E,AADJ,2BAAK,YACyC;YAAA,YAAoB;YAAA,iBAAK;YACnE,8BAAyC;YAAA,YAAuB;YAExE,AADI,AADoE,iBAAM,EACpE,EACD;YAGL,AADJ,8BAAmC,gBACK;YAChC,gGAaC;YACL,iBAAQ;YAER,gCAAuC;YAMjC,AALF,6FAAiB,uEAKO;YAMxB,gCAAkG;YAC9F,kCAA0C;YAI1D,AADI,AADI,AADI,iBAAM,EACH,EACL,EACJ;;YA1C+C,eAAuB;YAAvB,gCAAuB;YAEtB,eAAoB;YAApB,wCAAoB;YACrB,eAAuB;YAAvB,2CAAuB;YAMhE,eAaC;YAbD,2BAaC;YAID,eAUC;YAVD,8DAUC;YACkC,eAA8D;YAA9D,+EAA8D;;;ADtBhG,wBAAwB;IAPpC,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;GAO3C,wBAAwB,CA4BpC;;iFA5BY,wBAAwB;cANpC,SAAS;6BACM,KAAK,YACP,sBAAsB;;kFAIvB,wBAAwB","sourcesContent":["import { Component } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { AdminSection, BaseAdminContainerComponent } from './base-admin-container.component';\n\n/**\n * Admin → Data & Schema. ERD viewer, query browser, and the database\n * designer wizard. Order matters here: ERD first (overview), then Query\n * Browser (read), then Database Designer (write).\n */\n@RegisterClass(BaseResourceComponent, 'AdminDataSchema')\n@Component({\n standalone: false,\n selector: 'mj-admin-data-schema',\n templateUrl: './admin-container.component.html',\n styleUrls: ['./admin-container.component.css']\n})\nexport class AdminDataSchemaComponent extends BaseAdminContainerComponent {\n public readonly ContainerTitle = 'Data & Schema';\n public readonly ContainerIcon = 'fa-solid fa-database';\n public readonly ContainerSubtitle = 'Schema visualization, queries, and database design';\n\n public readonly Sections: AdminSection[] = [\n {\n id: 'erd',\n label: 'ERD',\n icon: 'fa-solid fa-diagram-project',\n description: 'Entity-relationship diagram',\n source: { kind: 'dashboard', dashboardName: 'ERD' }\n },\n {\n id: 'query-browser',\n label: 'Query Browser',\n icon: 'fa-solid fa-magnifying-glass',\n description: 'Browse and run stored queries',\n source: { kind: 'resource', driverClass: 'QueryBrowserResource' }\n },\n {\n id: 'database-designer',\n label: 'Database Designer',\n icon: 'fa-solid fa-wand-magic-sparkles',\n description: 'Create entities and fields',\n source: { kind: 'resource', driverClass: 'DatabaseDesignerDashboard' }\n }\n ];\n}\n","<div class=\"admin-container\">\n <header class=\"admin-container__header\">\n <div class=\"admin-container__header-icon\"><i [class]=\"ContainerIcon\"></i></div>\n <div>\n <h3 class=\"admin-container__header-title\">{{ ContainerTitle }}</h3>\n <div class=\"admin-container__header-sub\">{{ ContainerSubtitle }}</div>\n </div>\n </header>\n\n <div class=\"admin-container__body\">\n <aside class=\"admin-container__nav\">\n @for (section of Sections; track section.id) {\n <button type=\"button\"\n class=\"admin-container__nav-item\"\n [class.admin-container__nav-item--active]=\"ActiveSection === section.id\"\n (click)=\"OnSectionClick(section)\">\n <i class=\"admin-container__nav-icon\" [class]=\"section.icon\"></i>\n <div class=\"admin-container__nav-text\">\n <div class=\"admin-container__nav-label\">{{ section.label }}</div>\n @if (section.description) {\n <div class=\"admin-container__nav-desc\">{{ section.description }}</div>\n }\n </div>\n </button>\n }\n </aside>\n\n <main class=\"admin-container__content\">\n @if (LoadError) {\n <div class=\"admin-container__error\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ LoadError }}</span>\n </div>\n } @else if (IsLoading) {\n <div class=\"admin-container__loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading…</span>\n </div>\n }\n <div class=\"admin-container__host\" [class.admin-container__host--hidden]=\"LoadError || IsLoading\">\n <ng-container #contentHost></ng-container>\n </div>\n </main>\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"admin-data-schema.component.js","sourceRoot":"","sources":["../../src/Admin/admin-data-schema.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;;;GAIG;AAQI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,2BAA2B;IACrD,cAAc,GAAG,eAAe,CAAC;IACjC,aAAa,GAAG,sBAAsB,CAAC;IACvC,iBAAiB,GAAG,oDAAoD,CAAC;IAEzE,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE;SACtD;QACD;YACI,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACpE;QACD;YACI,EAAE,EAAE,mBAAmB;YACvB,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,iCAAiC;YACvC,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;KACJ,CAAC;6QA3BO,wBAAwB,yBAAxB,wBAAwB;6DAAxB,wBAAwB;;YCjBrC,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,qBAIb;YAAzC,kKAAe,4BAAwB,KAAC;YAC5C,iBAAc;YACd,8CAA+D;YAC3D,iCAA0C;YAGtD,AADI,AADI,iBAAsB,EACX,EACF;;YAfT,cAAwB;YAExB,AADA,AADA,0CAAwB,2BACF,mCACQ;YAGpB,cAAa;YAAC,AAAd,2BAAa,kBAAkB;YAErC,cAAwB;YACxB,AADA,0CAAwB,+BACE;YAGT,cAAqB;YAAC,AAAtB,uCAAqB,wBAAoB;;;ADIzD,wBAAwB;IAPpC,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;GAO3C,wBAAwB,CA4BpC;;iFA5BY,wBAAwB;cANpC,SAAS;6BACM,KAAK,YACP,sBAAsB;;kFAIvB,wBAAwB","sourcesContent":["import { Component } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { AdminSection, BaseAdminContainerComponent } from './base-admin-container.component';\n\n/**\n * Admin → Data & Schema. ERD viewer, query browser, and the database\n * designer wizard. Order matters here: ERD first (overview), then Query\n * Browser (read), then Database Designer (write).\n */\n@RegisterClass(BaseResourceComponent, 'AdminDataSchema')\n@Component({\n standalone: false,\n selector: 'mj-admin-data-schema',\n templateUrl: './admin-container.component.html',\n styleUrls: ['./admin-container.component.css']\n})\nexport class AdminDataSchemaComponent extends BaseAdminContainerComponent {\n public readonly ContainerTitle = 'Data & Schema';\n public readonly ContainerIcon = 'fa-solid fa-database';\n public readonly ContainerSubtitle = 'Schema visualization, queries, and database design';\n\n public readonly Sections: AdminSection[] = [\n {\n id: 'erd',\n label: 'ERD',\n icon: 'fa-solid fa-diagram-project',\n description: 'Entity-relationship diagram',\n source: { kind: 'dashboard', dashboardName: 'ERD' }\n },\n {\n id: 'query-browser',\n label: 'Query Browser',\n icon: 'fa-solid fa-magnifying-glass',\n description: 'Browse and run stored queries',\n source: { kind: 'resource', driverClass: 'QueryBrowserResource' }\n },\n {\n id: 'database-designer',\n label: 'Database Designer',\n icon: 'fa-solid fa-wand-magic-sparkles',\n description: 'Create entities and fields',\n source: { kind: 'resource', driverClass: 'DatabaseDesignerDashboard' }\n }\n ];\n}\n","<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n"]}
@@ -9,55 +9,7 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
9
9
  import { RegisterClass } from '@memberjunction/global';
10
10
  import { BaseAdminContainerComponent } from './base-admin-container.component';
11
11
  import * as i0 from "@angular/core";
12
- const _forTrack0 = ($index, $item) => $item.id;
13
- function AdminDevToolsResourceComponent_For_12_Conditional_5_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "div", 17);
15
- i0.ɵɵtext(1);
16
- i0.ɵɵelementEnd();
17
- } if (rf & 2) {
18
- const section_r2 = i0.ɵɵnextContext().$implicit;
19
- i0.ɵɵadvance();
20
- i0.ɵɵtextInterpolate(section_r2.description);
21
- } }
22
- function AdminDevToolsResourceComponent_For_12_Template(rf, ctx) { if (rf & 1) {
23
- const _r1 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "button", 13);
25
- i0.ɵɵlistener("click", function AdminDevToolsResourceComponent_For_12_Template_button_click_0_listener() { const section_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnSectionClick(section_r2)); });
26
- i0.ɵɵelement(1, "i", 14);
27
- i0.ɵɵelementStart(2, "div", 15)(3, "div", 16);
28
- i0.ɵɵtext(4);
29
- i0.ɵɵelementEnd();
30
- i0.ɵɵconditionalCreate(5, AdminDevToolsResourceComponent_For_12_Conditional_5_Template, 2, 1, "div", 17);
31
- i0.ɵɵelementEnd()();
32
- } if (rf & 2) {
33
- const section_r2 = ctx.$implicit;
34
- const ctx_r2 = i0.ɵɵnextContext();
35
- i0.ɵɵclassProp("admin-container__nav-item--active", ctx_r2.ActiveSection === section_r2.id);
36
- i0.ɵɵadvance();
37
- i0.ɵɵclassMap(section_r2.icon);
38
- i0.ɵɵadvance(3);
39
- i0.ɵɵtextInterpolate(section_r2.label);
40
- i0.ɵɵadvance();
41
- i0.ɵɵconditional(section_r2.description ? 5 : -1);
42
- } }
43
- function AdminDevToolsResourceComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
44
- i0.ɵɵelementStart(0, "div", 10);
45
- i0.ɵɵelement(1, "i", 18);
46
- i0.ɵɵelementStart(2, "span");
47
- i0.ɵɵtext(3);
48
- i0.ɵɵelementEnd()();
49
- } if (rf & 2) {
50
- const ctx_r2 = i0.ɵɵnextContext();
51
- i0.ɵɵadvance(3);
52
- i0.ɵɵtextInterpolate(ctx_r2.LoadError);
53
- } }
54
- function AdminDevToolsResourceComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
55
- i0.ɵɵelementStart(0, "div", 11);
56
- i0.ɵɵelement(1, "i", 19);
57
- i0.ɵɵelementStart(2, "span");
58
- i0.ɵɵtext(3, "Loading\u2026");
59
- i0.ɵɵelementEnd()();
60
- } }
12
+ import * as i1 from "@memberjunction/ng-ui-components";
61
13
  /**
62
14
  * Admin → Developer Tools. Diagnostic and inspection sub-tools for developers.
63
15
  */
@@ -117,38 +69,26 @@ let AdminDevToolsResourceComponent = class AdminDevToolsResourceComponent extend
117
69
  }
118
70
  ];
119
71
  static ɵfac = /*@__PURE__*/ (() => { let ɵAdminDevToolsResourceComponent_BaseFactory; return function AdminDevToolsResourceComponent_Factory(__ngFactoryType__) { return (ɵAdminDevToolsResourceComponent_BaseFactory || (ɵAdminDevToolsResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AdminDevToolsResourceComponent)))(__ngFactoryType__ || AdminDevToolsResourceComponent); }; })();
120
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDevToolsResourceComponent, selectors: [["mj-admin-dev-tools-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 7, consts: [["contentHost", ""], [1, "admin-container"], [1, "admin-container__header"], [1, "admin-container__header-icon"], [1, "admin-container__header-title"], [1, "admin-container__header-sub"], [1, "admin-container__body"], [1, "admin-container__nav"], ["type", "button", 1, "admin-container__nav-item", 3, "admin-container__nav-item--active"], [1, "admin-container__content"], [1, "admin-container__error"], [1, "admin-container__loading"], [1, "admin-container__host"], ["type", "button", 1, "admin-container__nav-item", 3, "click"], [1, "admin-container__nav-icon"], [1, "admin-container__nav-text"], [1, "admin-container__nav-label"], [1, "admin-container__nav-desc"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "fa-solid", "fa-spinner", "fa-spin"]], template: function AdminDevToolsResourceComponent_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelementStart(0, "div", 1)(1, "header", 2)(2, "div", 3);
122
- i0.ɵɵelement(3, "i");
72
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDevToolsResourceComponent, selectors: [["mj-admin-dev-tools-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], [3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminDevToolsResourceComponent_Template(rf, ctx) { if (rf & 1) {
73
+ const _r1 = i0.ɵɵgetCurrentView();
74
+ i0.ɵɵelementStart(0, "mj-page-layout");
75
+ i0.ɵɵelement(1, "mj-page-header", 1);
76
+ i0.ɵɵelementStart(2, "mj-page-body", 2)(3, "mj-left-nav", 3);
77
+ i0.ɵɵlistener("ItemClicked", function AdminDevToolsResourceComponent_Template_mj_left_nav_ItemClicked_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnNavItemClicked($event)); });
123
78
  i0.ɵɵelementEnd();
124
- i0.ɵɵelementStart(4, "div")(5, "h3", 4);
125
- i0.ɵɵtext(6);
126
- i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(7, "div", 5);
128
- i0.ɵɵtext(8);
79
+ i0.ɵɵelementStart(4, "mj-left-nav-content", 4);
80
+ i0.ɵɵelementContainer(5, null, 0);
129
81
  i0.ɵɵelementEnd()()();
130
- i0.ɵɵelementStart(9, "div", 6)(10, "aside", 7);
131
- i0.ɵɵrepeaterCreate(11, AdminDevToolsResourceComponent_For_12_Template, 6, 6, "button", 8, _forTrack0);
132
- i0.ɵɵelementEnd();
133
- i0.ɵɵelementStart(13, "main", 9);
134
- i0.ɵɵconditionalCreate(14, AdminDevToolsResourceComponent_Conditional_14_Template, 4, 1, "div", 10)(15, AdminDevToolsResourceComponent_Conditional_15_Template, 4, 0, "div", 11);
135
- i0.ɵɵelementStart(16, "div", 12);
136
- i0.ɵɵelementContainer(17, null, 0);
137
- i0.ɵɵelementEnd()()()();
138
82
  } if (rf & 2) {
139
- i0.ɵɵadvance(3);
140
- i0.ɵɵclassMap(ctx.ContainerIcon);
141
- i0.ɵɵadvance(3);
142
- i0.ɵɵtextInterpolate(ctx.ContainerTitle);
143
- i0.ɵɵadvance(2);
144
- i0.ɵɵtextInterpolate(ctx.ContainerSubtitle);
145
- i0.ɵɵadvance(3);
146
- i0.ɵɵrepeater(ctx.Sections);
147
- i0.ɵɵadvance(3);
148
- i0.ɵɵconditional(ctx.LoadError ? 14 : ctx.IsLoading ? 15 : -1);
149
- i0.ɵɵadvance(2);
150
- i0.ɵɵclassProp("admin-container__host--hidden", ctx.LoadError || ctx.IsLoading);
151
- } }, styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n.admin-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n\n\n.admin-container__header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n}\n.admin-container__header-icon[_ngcontent-%COMP%] {\n width: 36px; height: 36px;\n border-radius: 9px;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: white;\n display: flex; align-items: center; justify-content: center;\n font-size: 15px;\n flex-shrink: 0;\n}\n.admin-container__header-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.admin-container__header-sub[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n\n\n.admin-container__body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.admin-container__nav[_ngcontent-%COMP%] {\n width: 240px;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n flex-shrink: 0;\n padding: 8px;\n}\n.admin-container__nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.12s;\n margin-bottom: 2px;\n font-family: inherit;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n text-align: left;\n width: 100%;\n}\n.admin-container__nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.admin-container__nav-item--active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.admin-container__nav-item--active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n}\n.admin-container__nav-icon[_ngcontent-%COMP%] {\n width: 18px;\n text-align: center;\n font-size: 13px;\n margin-top: 1px;\n flex-shrink: 0;\n color: inherit;\n}\n.admin-container__nav-text[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.admin-container__nav-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.2;\n}\n.admin-container__nav-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.3;\n}\n.admin-container__nav-item--active[_ngcontent-%COMP%] .admin-container__nav-desc[_ngcontent-%COMP%] {\n color: color-mix(in srgb, var(--mj-brand-primary) 70%, var(--mj-text-muted));\n}\n\n\n\n.admin-container__content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n overflow: hidden;\n}\n\n\n\n.admin-container__host[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.admin-container__host--hidden[_ngcontent-%COMP%] { display: none; }\n.admin-container__host[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n\n\n.admin-container__empty[_ngcontent-%COMP%], \n.admin-container__error[_ngcontent-%COMP%], \n.admin-container__loading[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--mj-text-muted);\n font-size: 13px;\n padding: 32px;\n text-align: center;\n}\n.admin-container__error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n.admin-container__error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 20px; }\n.admin-container__loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 16px; color: var(--mj-brand-primary); }\n\n@media (max-width: 700px) {\n .admin-container__body[_ngcontent-%COMP%] { flex-direction: column; }\n .admin-container__nav[_ngcontent-%COMP%] {\n width: 100%;\n height: auto;\n max-height: 220px;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n .admin-container__nav-item[_ngcontent-%COMP%] { flex: 1 1 calc(50% - 8px); margin-bottom: 0; }\n .admin-container__nav-desc[_ngcontent-%COMP%] { display: none; }\n .admin-container__header[_ngcontent-%COMP%] { padding: 12px 14px; gap: 10px; }\n}"] });
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵproperty("Title", ctx.ContainerTitle)("Icon", ctx.ContainerIcon)("Subtitle", ctx.ContainerSubtitle);
85
+ i0.ɵɵadvance();
86
+ i0.ɵɵproperty("Flex", true)("Padding", false);
87
+ i0.ɵɵadvance();
88
+ i0.ɵɵproperty("Sections", ctx.NavSections)("ActiveId", ctx.ActiveSection);
89
+ i0.ɵɵadvance();
90
+ i0.ɵɵproperty("Loading", ctx.IsLoading)("Error", ctx.LoadError);
91
+ } }, dependencies: [i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJLeftNavComponent, i1.MJLeftNavContentComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n\n\n\n\n\n\n@media (max-width: 700px) {\n [_nghost-%COMP%] mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}"] });
152
92
  };
153
93
  AdminDevToolsResourceComponent = __decorate([
154
94
  RegisterClass(BaseResourceComponent, 'AdminDeveloperTools')
@@ -156,7 +96,7 @@ AdminDevToolsResourceComponent = __decorate([
156
96
  export { AdminDevToolsResourceComponent };
157
97
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminDevToolsResourceComponent, [{
158
98
  type: Component,
159
- args: [{ standalone: false, selector: 'mj-admin-dev-tools-resource', template: "<div class=\"admin-container\">\n <header class=\"admin-container__header\">\n <div class=\"admin-container__header-icon\"><i [class]=\"ContainerIcon\"></i></div>\n <div>\n <h3 class=\"admin-container__header-title\">{{ ContainerTitle }}</h3>\n <div class=\"admin-container__header-sub\">{{ ContainerSubtitle }}</div>\n </div>\n </header>\n\n <div class=\"admin-container__body\">\n <aside class=\"admin-container__nav\">\n @for (section of Sections; track section.id) {\n <button type=\"button\"\n class=\"admin-container__nav-item\"\n [class.admin-container__nav-item--active]=\"ActiveSection === section.id\"\n (click)=\"OnSectionClick(section)\">\n <i class=\"admin-container__nav-icon\" [class]=\"section.icon\"></i>\n <div class=\"admin-container__nav-text\">\n <div class=\"admin-container__nav-label\">{{ section.label }}</div>\n @if (section.description) {\n <div class=\"admin-container__nav-desc\">{{ section.description }}</div>\n }\n </div>\n </button>\n }\n </aside>\n\n <main class=\"admin-container__content\">\n @if (LoadError) {\n <div class=\"admin-container__error\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>{{ LoadError }}</span>\n </div>\n } @else if (IsLoading) {\n <div class=\"admin-container__loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading\u2026</span>\n </div>\n }\n <div class=\"admin-container__host\" [class.admin-container__host--hidden]=\"LoadError || IsLoading\">\n <ng-container #contentHost></ng-container>\n </div>\n </main>\n </div>\n</div>\n", styles: [":host { display: block; height: 100%; }\n\n.admin-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n background: var(--mj-bg-page);\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n/* Header */\n.admin-container__header {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 14px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n}\n.admin-container__header-icon {\n width: 36px; height: 36px;\n border-radius: 9px;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: white;\n display: flex; align-items: center; justify-content: center;\n font-size: 15px;\n flex-shrink: 0;\n}\n.admin-container__header-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.admin-container__header-sub {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n/* Layout: sidebar + content */\n.admin-container__body {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.admin-container__nav {\n width: 240px;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n flex-shrink: 0;\n padding: 8px;\n}\n.admin-container__nav-item {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.12s;\n margin-bottom: 2px;\n font-family: inherit;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n text-align: left;\n width: 100%;\n}\n.admin-container__nav-item:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.admin-container__nav-item--active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.admin-container__nav-item--active:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n}\n.admin-container__nav-icon {\n width: 18px;\n text-align: center;\n font-size: 13px;\n margin-top: 1px;\n flex-shrink: 0;\n color: inherit;\n}\n.admin-container__nav-text { flex: 1; min-width: 0; }\n.admin-container__nav-label {\n font-size: 13px;\n font-weight: 500;\n line-height: 1.2;\n}\n.admin-container__nav-desc {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.3;\n}\n.admin-container__nav-item--active .admin-container__nav-desc {\n color: color-mix(in srgb, var(--mj-brand-primary) 70%, var(--mj-text-muted));\n}\n\n/* Content area */\n.admin-container__content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n background: var(--mj-bg-page);\n overflow: hidden;\n}\n\n/* Dynamic host */\n.admin-container__host {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.admin-container__host--hidden { display: none; }\n.admin-container__host > * {\n flex: 1;\n min-height: 0;\n display: block;\n}\n\n/* Empty + error + loading states */\n.admin-container__empty,\n.admin-container__error,\n.admin-container__loading {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n color: var(--mj-text-muted);\n font-size: 13px;\n padding: 32px;\n text-align: center;\n}\n.admin-container__error {\n color: var(--mj-status-error);\n}\n.admin-container__error i { font-size: 20px; }\n.admin-container__loading i { font-size: 16px; color: var(--mj-brand-primary); }\n\n@media (max-width: 700px) {\n .admin-container__body { flex-direction: column; }\n .admin-container__nav {\n width: 100%;\n height: auto;\n max-height: 220px;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n }\n .admin-container__nav-item { flex: 1 1 calc(50% - 8px); margin-bottom: 0; }\n .admin-container__nav-desc { display: none; }\n .admin-container__header { padding: 12px 14px; gap: 10px; }\n}\n"] }]
99
+ args: [{ standalone: false, selector: 'mj-admin-dev-tools-resource', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
160
100
  }], null, null); })();
161
101
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AdminDevToolsResourceComponent, { className: "AdminDevToolsResourceComponent", filePath: "src/Admin/admin-dev-tools-resource.component.ts", lineNumber: 16 }); })();
162
102
  //# sourceMappingURL=admin-dev-tools-resource.component.js.map