@memberjunction/ng-dashboards 3.4.0 → 4.0.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 (573) hide show
  1. package/dist/AI/ai-dashboard.component.d.ts +62 -0
  2. package/dist/AI/ai-dashboard.component.d.ts.map +1 -0
  3. package/dist/AI/ai-dashboard.component.js +338 -0
  4. package/dist/AI/ai-dashboard.component.js.map +1 -0
  5. package/dist/AI/components/agents/agent-configuration.component.d.ts +12 -5
  6. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  7. package/dist/AI/components/agents/agent-configuration.component.js +103 -44
  8. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  9. package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
  10. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  11. package/dist/AI/components/agents/agent-editor.component.js +149 -211
  12. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  13. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
  14. package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
  15. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  16. package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
  17. package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
  18. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  19. package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
  20. package/dist/AI/components/charts/time-series-chart.component.js +6 -7
  21. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  22. package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
  23. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  24. package/dist/AI/components/execution-monitoring.component.js +33 -37
  25. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  26. package/dist/AI/components/models/model-management-v2.component.d.ts +96 -0
  27. package/dist/AI/components/models/model-management-v2.component.d.ts.map +1 -0
  28. package/dist/AI/components/models/model-management-v2.component.js +981 -0
  29. package/dist/AI/components/models/model-management-v2.component.js.map +1 -0
  30. package/dist/AI/components/models/model-management.component.d.ts +3 -6
  31. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  32. package/dist/AI/components/models/model-management.component.js +34 -27
  33. package/dist/AI/components/models/model-management.component.js.map +1 -1
  34. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  35. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
  36. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  37. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
  38. package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
  39. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  40. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +97 -0
  41. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -0
  42. package/dist/AI/components/prompts/prompt-management-v2.component.js +811 -0
  43. package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -0
  44. package/dist/AI/components/prompts/prompt-management.component.d.ts +3 -6
  45. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/prompts/prompt-management.component.js +34 -32
  47. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  49. package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
  50. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  51. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
  52. package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
  53. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  54. package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
  55. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.js +26 -27
  57. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  58. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  59. package/dist/AI/components/widgets/kpi-card.component.js +52 -42
  60. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  61. package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
  62. package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
  63. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  64. package/dist/APIKeys/api-applications-panel.component.d.ts +0 -2
  65. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  66. package/dist/APIKeys/api-applications-panel.component.js +193 -189
  67. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  68. package/dist/APIKeys/api-key-create-dialog.component.d.ts +0 -2
  69. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  70. package/dist/APIKeys/api-key-create-dialog.component.js +175 -180
  71. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  72. package/dist/APIKeys/api-key-edit-panel.component.d.ts +0 -2
  73. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  74. package/dist/APIKeys/api-key-edit-panel.component.js +231 -225
  75. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  76. package/dist/APIKeys/api-key-list.component.d.ts +0 -2
  77. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  78. package/dist/APIKeys/api-key-list.component.js +113 -114
  79. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  80. package/dist/APIKeys/api-keys-resource.component.d.ts +0 -2
  81. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  82. package/dist/APIKeys/api-keys-resource.component.js +294 -302
  83. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  84. package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
  85. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  86. package/dist/APIKeys/api-scopes-panel.component.js +151 -155
  87. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  88. package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
  89. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  90. package/dist/APIKeys/api-usage-panel.component.js +237 -234
  91. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  92. package/dist/Actions/actions-management-dashboard.component.d.ts +52 -0
  93. package/dist/Actions/actions-management-dashboard.component.d.ts.map +1 -0
  94. package/dist/Actions/actions-management-dashboard.component.js +308 -0
  95. package/dist/Actions/actions-management-dashboard.component.js.map +1 -0
  96. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  97. package/dist/Actions/components/actions-list-view.component.js +15 -14
  98. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  99. package/dist/Actions/components/actions-overview.component.d.ts +3 -6
  100. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  101. package/dist/Actions/components/actions-overview.component.js +17 -19
  102. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  103. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  104. package/dist/Actions/components/categories-list-view.component.js +6 -6
  105. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  106. package/dist/Actions/components/code-management.component.d.ts +0 -4
  107. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  108. package/dist/Actions/components/code-management.component.js +3 -9
  109. package/dist/Actions/components/code-management.component.js.map +1 -1
  110. package/dist/Actions/components/entity-integration.component.d.ts +0 -4
  111. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  112. package/dist/Actions/components/entity-integration.component.js +3 -9
  113. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  114. package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
  115. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  116. package/dist/Actions/components/execution-monitoring.component.js +13 -16
  117. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  118. package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
  119. package/dist/Actions/components/executions-list-view.component.js +3 -3
  120. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  121. package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -1
  122. package/dist/Actions/components/explorer/action-breadcrumb.component.js +6 -6
  123. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  124. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  125. package/dist/Actions/components/explorer/action-card.component.js +11 -10
  126. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  127. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -4
  128. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  129. package/dist/Actions/components/explorer/action-explorer.component.js +10 -14
  130. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  131. package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -1
  132. package/dist/Actions/components/explorer/action-list-item.component.js +8 -8
  133. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  134. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -1
  135. package/dist/Actions/components/explorer/action-toolbar.component.js +15 -14
  136. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  137. package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -1
  138. package/dist/Actions/components/explorer/action-tree-panel.component.js +11 -10
  139. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  140. package/dist/Actions/components/explorer/index.d.ts +0 -1
  141. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  142. package/dist/Actions/components/explorer/index.js +0 -4
  143. package/dist/Actions/components/explorer/index.js.map +1 -1
  144. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  145. package/dist/Actions/components/explorer/new-action-panel.component.js +10 -10
  146. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  147. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  148. package/dist/Actions/components/explorer/new-category-panel.component.js +8 -8
  149. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  150. package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
  151. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  152. package/dist/Actions/components/scheduled-actions.component.js +3 -9
  153. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  154. package/dist/Actions/components/security-permissions.component.d.ts +0 -4
  155. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  156. package/dist/Actions/components/security-permissions.component.js +3 -9
  157. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  158. package/dist/Actions/index.d.ts +0 -7
  159. package/dist/Actions/index.d.ts.map +1 -1
  160. package/dist/Actions/index.js +0 -8
  161. package/dist/Actions/index.js.map +1 -1
  162. package/dist/Communication/communication-dashboard.component.d.ts +0 -1
  163. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  164. package/dist/Communication/communication-dashboard.component.js +38 -51
  165. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  166. package/dist/Communication/communication-logs-resource.component.d.ts +0 -4
  167. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  168. package/dist/Communication/communication-logs-resource.component.js +112 -108
  169. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  170. package/dist/Communication/communication-monitor-resource.component.d.ts +0 -4
  171. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  172. package/dist/Communication/communication-monitor-resource.component.js +210 -201
  173. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  174. package/dist/Communication/communication-providers-resource.component.d.ts +0 -4
  175. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  176. package/dist/Communication/communication-providers-resource.component.js +136 -124
  177. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  178. package/dist/Communication/communication-runs-resource.component.d.ts +0 -4
  179. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  180. package/dist/Communication/communication-runs-resource.component.js +91 -88
  181. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  182. package/dist/Communication/communication-templates-resource.component.d.ts +0 -4
  183. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  184. package/dist/Communication/communication-templates-resource.component.js +139 -122
  185. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  186. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +0 -4
  187. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  188. package/dist/ComponentStudio/component-studio-dashboard.component.js +21 -20
  189. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  190. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  191. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +11 -12
  192. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  193. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  194. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
  195. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  196. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  197. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
  198. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  199. package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -1
  200. package/dist/ComponentStudio/components/browser/component-browser.component.js +23 -21
  201. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  202. package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -1
  203. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +10 -10
  204. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  205. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  206. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +13 -13
  207. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  208. package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -1
  209. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +7 -7
  210. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  211. package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -1
  212. package/dist/ComponentStudio/components/editors/spec-editor.component.js +5 -5
  213. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  214. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -1
  215. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +4 -4
  216. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  217. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  218. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +9 -9
  219. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  220. package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
  221. package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
  222. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  223. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  224. package/dist/ComponentStudio/components/workspace/component-preview.component.js +10 -9
  225. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  226. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  227. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +4 -4
  228. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  229. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts +44 -0
  230. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts.map +1 -0
  231. package/dist/Credentials/components/credential-category-edit-panel.component.js +456 -0
  232. package/dist/Credentials/components/credential-category-edit-panel.component.js.map +1 -0
  233. package/dist/Credentials/components/credential-edit-panel.component.d.ts +70 -0
  234. package/dist/Credentials/components/credential-edit-panel.component.d.ts.map +1 -0
  235. package/dist/Credentials/components/credential-edit-panel.component.js +694 -0
  236. package/dist/Credentials/components/credential-edit-panel.component.js.map +1 -0
  237. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts +56 -0
  238. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts.map +1 -0
  239. package/dist/Credentials/components/credential-type-edit-panel.component.js +563 -0
  240. package/dist/Credentials/components/credential-type-edit-panel.component.js.map +1 -0
  241. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
  242. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  243. package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
  244. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  245. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +0 -1
  246. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  247. package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
  248. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  249. package/dist/Credentials/components/credentials-list-resource.component.d.ts +0 -1
  250. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  251. package/dist/Credentials/components/credentials-list-resource.component.js +251 -240
  252. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  253. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
  254. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  255. package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
  256. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  257. package/dist/Credentials/components/credentials-types-resource.component.d.ts +0 -1
  258. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  259. package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
  260. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  261. package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
  262. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  263. package/dist/Credentials/credentials-dashboard.component.js +31 -44
  264. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  265. package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
  266. package/dist/Credentials/pipes/group-by.pipe.js +2 -1
  267. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  268. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
  269. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  270. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
  271. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  272. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  273. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
  274. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  275. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
  276. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
  277. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  278. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  279. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
  280. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  281. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +245 -0
  282. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +1 -0
  283. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +1143 -0
  284. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +1 -0
  285. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  286. package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
  287. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  288. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +0 -4
  289. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  290. package/dist/DataExplorer/data-explorer-dashboard.component.js +49 -54
  291. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  292. package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
  293. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  294. package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
  295. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  296. package/dist/DataExplorer/index.d.ts +2 -2
  297. package/dist/DataExplorer/index.d.ts.map +1 -1
  298. package/dist/DataExplorer/index.js +2 -2
  299. package/dist/DataExplorer/index.js.map +1 -1
  300. package/dist/EntityAdmin/components/entity-details.component.d.ts +50 -0
  301. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -0
  302. package/dist/EntityAdmin/components/entity-details.component.js +680 -0
  303. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -0
  304. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +31 -0
  305. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +1 -0
  306. package/dist/EntityAdmin/components/entity-filter-panel.component.js +160 -0
  307. package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +1 -0
  308. package/dist/EntityAdmin/components/erd-composite.component.d.ts +73 -0
  309. package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +1 -0
  310. package/dist/EntityAdmin/components/erd-composite.component.js +271 -0
  311. package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -0
  312. package/dist/EntityAdmin/components/erd-diagram.component.d.ts +47 -0
  313. package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +1 -0
  314. package/dist/EntityAdmin/components/erd-diagram.component.js +618 -0
  315. package/dist/EntityAdmin/components/erd-diagram.component.js.map +1 -0
  316. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
  317. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  318. package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
  319. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  320. package/dist/Home/home-application.d.ts +0 -5
  321. package/dist/Home/home-application.d.ts.map +1 -1
  322. package/dist/Home/home-application.js +0 -9
  323. package/dist/Home/home-application.js.map +1 -1
  324. package/dist/Home/home-dashboard.component.d.ts +0 -4
  325. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  326. package/dist/Home/home-dashboard.component.js +141 -139
  327. package/dist/Home/home-dashboard.component.js.map +1 -1
  328. package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
  329. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  330. package/dist/Lists/components/lists-browse-resource.component.js +761 -685
  331. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  332. package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
  333. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  334. package/dist/Lists/components/lists-categories-resource.component.js +340 -316
  335. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  336. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -1
  337. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  338. package/dist/Lists/components/lists-my-lists-resource.component.js +530 -482
  339. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  340. package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
  341. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  342. package/dist/Lists/components/lists-operations-resource.component.js +508 -455
  343. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  344. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  345. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
  346. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  347. package/dist/Lists/index.d.ts +0 -1
  348. package/dist/Lists/index.d.ts.map +1 -1
  349. package/dist/Lists/index.js +0 -11
  350. package/dist/Lists/index.js.map +1 -1
  351. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +0 -4
  352. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  353. package/dist/MCP/components/mcp-connection-dialog.component.js +33 -39
  354. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  355. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +0 -4
  356. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -1
  357. package/dist/MCP/components/mcp-log-detail-panel.component.js +42 -44
  358. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  359. package/dist/MCP/components/mcp-server-dialog.component.d.ts +3 -4
  360. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  361. package/dist/MCP/components/mcp-server-dialog.component.js +186 -77
  362. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  363. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +0 -4
  364. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
  365. package/dist/MCP/components/mcp-test-tool-dialog.component.js +187 -187
  366. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  367. package/dist/MCP/index.d.ts +5 -5
  368. package/dist/MCP/index.d.ts.map +1 -1
  369. package/dist/MCP/index.js +5 -5
  370. package/dist/MCP/index.js.map +1 -1
  371. package/dist/MCP/mcp-dashboard.component.d.ts +65 -7
  372. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  373. package/dist/MCP/mcp-dashboard.component.js +976 -697
  374. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  375. package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
  376. package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
  377. package/dist/MCP/mcp-filter-panel.component.js +288 -0
  378. package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
  379. package/dist/MCP/mcp-resource.component.d.ts +11 -5
  380. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  381. package/dist/MCP/mcp-resource.component.js +8 -9
  382. package/dist/MCP/mcp-resource.component.js.map +1 -1
  383. package/dist/MCP/mcp.module.d.ts +16 -19
  384. package/dist/MCP/mcp.module.d.ts.map +1 -1
  385. package/dist/MCP/mcp.module.js +17 -26
  386. package/dist/MCP/mcp.module.js.map +1 -1
  387. package/dist/MCP/services/mcp-tools.service.d.ts +10 -4
  388. package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -1
  389. package/dist/MCP/services/mcp-tools.service.js +5 -6
  390. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  391. package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
  392. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  393. package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
  394. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  395. package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -1
  396. package/dist/Scheduling/components/job-slideout.component.js +117 -116
  397. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  398. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +0 -4
  399. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  400. package/dist/Scheduling/components/scheduling-activity-resource.component.js +3 -9
  401. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  402. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  403. package/dist/Scheduling/components/scheduling-activity.component.js +134 -134
  404. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  405. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +20 -0
  406. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +1 -0
  407. package/dist/Scheduling/components/scheduling-health-resource.component.js +55 -0
  408. package/dist/Scheduling/components/scheduling-health-resource.component.js.map +1 -0
  409. package/dist/Scheduling/components/scheduling-health.component.d.ts +30 -0
  410. package/dist/Scheduling/components/scheduling-health.component.d.ts.map +1 -0
  411. package/dist/Scheduling/components/scheduling-health.component.js +315 -0
  412. package/dist/Scheduling/components/scheduling-health.component.js.map +1 -0
  413. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +20 -0
  414. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +1 -0
  415. package/dist/Scheduling/components/scheduling-history-resource.component.js +55 -0
  416. package/dist/Scheduling/components/scheduling-history-resource.component.js.map +1 -0
  417. package/dist/Scheduling/components/scheduling-history.component.d.ts +48 -0
  418. package/dist/Scheduling/components/scheduling-history.component.d.ts.map +1 -0
  419. package/dist/Scheduling/components/scheduling-history.component.js +377 -0
  420. package/dist/Scheduling/components/scheduling-history.component.js.map +1 -0
  421. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +0 -4
  422. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  423. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -9
  424. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  425. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  426. package/dist/Scheduling/components/scheduling-jobs.component.js +102 -97
  427. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  428. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +20 -0
  429. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +1 -0
  430. package/dist/Scheduling/components/scheduling-monitor-resource.component.js +55 -0
  431. package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +1 -0
  432. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts +37 -0
  433. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts.map +1 -0
  434. package/dist/Scheduling/components/scheduling-monitoring.component.js +488 -0
  435. package/dist/Scheduling/components/scheduling-monitoring.component.js.map +1 -0
  436. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +0 -4
  437. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  438. package/dist/Scheduling/components/scheduling-overview-resource.component.js +3 -9
  439. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  440. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  441. package/dist/Scheduling/components/scheduling-overview.component.js +127 -122
  442. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  443. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts +20 -0
  444. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +1 -0
  445. package/dist/Scheduling/components/scheduling-types-resource.component.js +55 -0
  446. package/dist/Scheduling/components/scheduling-types-resource.component.js.map +1 -0
  447. package/dist/Scheduling/components/scheduling-types.component.d.ts +22 -0
  448. package/dist/Scheduling/components/scheduling-types.component.d.ts.map +1 -0
  449. package/dist/Scheduling/components/scheduling-types.component.js +165 -0
  450. package/dist/Scheduling/components/scheduling-types.component.js.map +1 -0
  451. package/dist/Scheduling/scheduling-dashboard.component.d.ts +0 -1
  452. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  453. package/dist/Scheduling/scheduling-dashboard.component.js +35 -43
  454. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  455. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
  456. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  457. package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
  458. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  459. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  460. package/dist/Testing/components/testing-analytics-resource.component.js +3 -3
  461. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  462. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  463. package/dist/Testing/components/testing-analytics.component.js +30 -30
  464. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  465. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  466. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +3 -3
  467. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  468. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  469. package/dist/Testing/components/testing-dashboard-tab.component.js +7 -7
  470. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  471. package/dist/Testing/components/testing-execution-resource.component.d.ts +20 -0
  472. package/dist/Testing/components/testing-execution-resource.component.d.ts.map +1 -0
  473. package/dist/Testing/components/testing-execution-resource.component.js +55 -0
  474. package/dist/Testing/components/testing-execution-resource.component.js.map +1 -0
  475. package/dist/Testing/components/testing-execution.component.d.ts +71 -0
  476. package/dist/Testing/components/testing-execution.component.d.ts.map +1 -0
  477. package/dist/Testing/components/testing-execution.component.js +845 -0
  478. package/dist/Testing/components/testing-execution.component.js.map +1 -0
  479. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  480. package/dist/Testing/components/testing-explorer-resource.component.js +3 -3
  481. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  482. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  483. package/dist/Testing/components/testing-explorer.component.js +42 -35
  484. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  485. package/dist/Testing/components/testing-feedback-resource.component.d.ts +20 -0
  486. package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +1 -0
  487. package/dist/Testing/components/testing-feedback-resource.component.js +55 -0
  488. package/dist/Testing/components/testing-feedback-resource.component.js.map +1 -0
  489. package/dist/Testing/components/testing-feedback.component.d.ts +111 -0
  490. package/dist/Testing/components/testing-feedback.component.d.ts.map +1 -0
  491. package/dist/Testing/components/testing-feedback.component.js +1486 -0
  492. package/dist/Testing/components/testing-feedback.component.js.map +1 -0
  493. package/dist/Testing/components/testing-overview-resource.component.d.ts +20 -0
  494. package/dist/Testing/components/testing-overview-resource.component.d.ts.map +1 -0
  495. package/dist/Testing/components/testing-overview-resource.component.js +55 -0
  496. package/dist/Testing/components/testing-overview-resource.component.js.map +1 -0
  497. package/dist/Testing/components/testing-overview.component.d.ts +30 -0
  498. package/dist/Testing/components/testing-overview.component.d.ts.map +1 -0
  499. package/dist/Testing/components/testing-overview.component.js +361 -0
  500. package/dist/Testing/components/testing-overview.component.js.map +1 -0
  501. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  502. package/dist/Testing/components/testing-review-resource.component.js +3 -3
  503. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  504. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  505. package/dist/Testing/components/testing-review.component.js +16 -16
  506. package/dist/Testing/components/testing-review.component.js.map +1 -1
  507. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  508. package/dist/Testing/components/testing-runs-resource.component.js +3 -3
  509. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  510. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  511. package/dist/Testing/components/testing-runs.component.js +15 -15
  512. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  513. package/dist/Testing/components/testing-version-comparison.component.d.ts +62 -0
  514. package/dist/Testing/components/testing-version-comparison.component.d.ts.map +1 -0
  515. package/dist/Testing/components/testing-version-comparison.component.js +815 -0
  516. package/dist/Testing/components/testing-version-comparison.component.js.map +1 -0
  517. package/dist/Testing/components/testing-version-resource.component.d.ts +20 -0
  518. package/dist/Testing/components/testing-version-resource.component.d.ts.map +1 -0
  519. package/dist/Testing/components/testing-version-resource.component.js +55 -0
  520. package/dist/Testing/components/testing-version-resource.component.js.map +1 -0
  521. package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
  522. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
  523. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  524. package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
  525. package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
  526. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  527. package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
  528. package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
  529. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  530. package/dist/Testing/testing-dashboard.component.d.ts +0 -1
  531. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  532. package/dist/Testing/testing-dashboard.component.js +9 -8
  533. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  534. package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
  535. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
  536. package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
  537. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
  538. package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
  539. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
  540. package/dist/VersionHistory/components/graph-resource.component.js +521 -0
  541. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
  542. package/dist/VersionHistory/components/index.d.ts +5 -0
  543. package/dist/VersionHistory/components/index.d.ts.map +1 -0
  544. package/dist/VersionHistory/components/index.js +5 -0
  545. package/dist/VersionHistory/components/index.js.map +1 -0
  546. package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
  547. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
  548. package/dist/VersionHistory/components/labels-resource.component.js +968 -0
  549. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
  550. package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
  551. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
  552. package/dist/VersionHistory/components/restore-resource.component.js +472 -0
  553. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
  554. package/dist/VersionHistory/index.d.ts +2 -0
  555. package/dist/VersionHistory/index.d.ts.map +1 -0
  556. package/dist/VersionHistory/index.js +2 -0
  557. package/dist/VersionHistory/index.js.map +1 -0
  558. package/dist/generic/base-dashboard.d.ts +65 -0
  559. package/dist/generic/base-dashboard.d.ts.map +1 -0
  560. package/dist/generic/base-dashboard.js +74 -0
  561. package/dist/generic/base-dashboard.js.map +1 -0
  562. package/dist/module.d.ts +42 -36
  563. package/dist/module.d.ts.map +1 -1
  564. package/dist/module.js +41 -7
  565. package/dist/module.js.map +1 -1
  566. package/dist/public-api.d.ts +20 -19
  567. package/dist/public-api.d.ts.map +1 -1
  568. package/dist/public-api.js +22 -120
  569. package/dist/public-api.js.map +1 -1
  570. package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
  571. package/dist/shared/pipes/highlight-search.pipe.js +2 -1
  572. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  573. package/package.json +64 -62
@@ -11,33 +11,33 @@ import { RunView, Metadata } from '@memberjunction/core';
11
11
  import { MJNotificationService } from '@memberjunction/ng-notifications';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@memberjunction/ng-shared";
14
- import * as i2 from "@angular/common";
15
- import * as i3 from "@memberjunction/ng-shared-generic";
16
- import * as i4 from "@memberjunction/ng-credentials";
14
+ import * as i2 from "@memberjunction/ng-shared-generic";
15
+ import * as i3 from "@memberjunction/ng-credentials";
16
+ import * as i4 from "@angular/common";
17
17
  const _c0 = ["categoryEditPanel"];
18
- function CredentialsCategoriesResourceComponent_mj_loading_1_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelement(0, "mj-loading", 5);
18
+ function CredentialsCategoriesResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelement(0, "mj-loading", 2);
20
20
  } }
21
- function CredentialsCategoriesResourceComponent_ng_container_2_button_13_Template(rf, ctx) { if (rf & 1) {
21
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
22
22
  const _r3 = i0.ɵɵgetCurrentView();
23
- i0.ɵɵelementStart(0, "button", 34);
24
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_button_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.createNewCategory()); });
25
- i0.ɵɵelement(1, "i", 35);
23
+ i0.ɵɵelementStart(0, "button", 32);
24
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.createNewCategory()); });
25
+ i0.ɵɵelement(1, "i", 33);
26
26
  i0.ɵɵelementStart(2, "span");
27
27
  i0.ɵɵtext(3, "New Category");
28
28
  i0.ɵɵelementEnd()();
29
29
  } }
30
- function CredentialsCategoriesResourceComponent_ng_container_2_button_19_Template(rf, ctx) { if (rf & 1) {
30
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
31
31
  const _r5 = i0.ɵɵgetCurrentView();
32
- i0.ɵɵelementStart(0, "button", 36);
33
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_button_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.clearSearch()); });
34
- i0.ɵɵelement(1, "i", 37);
32
+ i0.ɵɵelementStart(0, "button", 34);
33
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_18_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.clearSearch()); });
34
+ i0.ɵɵelement(1, "i", 35);
35
35
  i0.ɵɵelementEnd();
36
36
  } }
37
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_2_Template(rf, ctx) { if (rf & 1) {
37
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
38
38
  const _r8 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "button", 54);
40
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r8); const node_r7 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.toggleExpand(node_r7, $event)); });
39
+ i0.ɵɵelementStart(0, "button", 51);
40
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r8); const node_r7 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.toggleExpand(node_r7, $event)); });
41
41
  i0.ɵɵelement(1, "i");
42
42
  i0.ɵɵelementEnd();
43
43
  } if (rf & 2) {
@@ -45,11 +45,11 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_butt
45
45
  i0.ɵɵadvance();
46
46
  i0.ɵɵclassMap(node_r7.expanded ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-right");
47
47
  } }
48
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span_3_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelement(0, "span", 55);
48
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelement(0, "span", 40);
50
50
  } }
51
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_div_9_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementStart(0, "div", 56);
51
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementStart(0, "div", 44);
53
53
  i0.ɵɵtext(1);
54
54
  i0.ɵɵpipe(2, "slice");
55
55
  i0.ɵɵelementEnd();
@@ -58,9 +58,9 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_div_
58
58
  i0.ɵɵadvance();
59
59
  i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind3(2, 2, node_r7.category.Description, 0, 50), "", node_r7.category.Description.length > 50 ? "..." : "", " ");
60
60
  } }
61
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span_11_Template(rf, ctx) { if (rf & 1) {
62
- i0.ɵɵelementStart(0, "span", 57);
63
- i0.ɵɵelement(1, "i", 12);
61
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "span", 46);
63
+ i0.ɵɵelement(1, "i", 10);
64
64
  i0.ɵɵtext(2);
65
65
  i0.ɵɵelementEnd();
66
66
  } if (rf & 2) {
@@ -68,9 +68,9 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span
68
68
  i0.ɵɵadvance(2);
69
69
  i0.ɵɵtextInterpolate1(" ", node_r7.typeCount, " ");
70
70
  } }
71
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span_12_Template(rf, ctx) { if (rf & 1) {
72
- i0.ɵɵelementStart(0, "span", 58);
73
- i0.ɵɵelement(1, "i", 59);
71
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵelementStart(0, "span", 47);
73
+ i0.ɵɵelement(1, "i", 52);
74
74
  i0.ɵɵtext(2);
75
75
  i0.ɵɵelementEnd();
76
76
  } if (rf & 2) {
@@ -78,118 +78,123 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span
78
78
  i0.ɵɵadvance(2);
79
79
  i0.ɵɵtextInterpolate1(" ", node_r7.children.length, " ");
80
80
  } }
81
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_14_Template(rf, ctx) { if (rf & 1) {
81
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
82
82
  const _r9 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "button", 60);
84
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_14_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r9); const node_r7 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.editCategory(node_r7, $event)); });
85
- i0.ɵɵelement(1, "i", 61);
83
+ i0.ɵɵelementStart(0, "button", 53);
84
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_14_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r9); const node_r7 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.editCategory(node_r7, $event)); });
85
+ i0.ɵɵelement(1, "i", 54);
86
86
  i0.ɵɵelementEnd();
87
87
  } }
88
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_15_Template(rf, ctx) { if (rf & 1) {
88
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
89
89
  const _r10 = i0.ɵɵgetCurrentView();
90
- i0.ɵɵelementStart(0, "button", 62);
91
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_15_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r10); const node_r7 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.deleteCategory(node_r7, $event)); });
92
- i0.ɵɵelement(1, "i", 63);
90
+ i0.ɵɵelementStart(0, "button", 55);
91
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_15_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r10); const node_r7 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.deleteCategory(node_r7, $event)); });
92
+ i0.ɵɵelement(1, "i", 56);
93
93
  i0.ɵɵelementEnd();
94
94
  } }
95
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_Template(rf, ctx) { if (rf & 1) {
95
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Template(rf, ctx) { if (rf & 1) {
96
96
  const _r6 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "div", 40);
98
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_Template_div_click_0_listener() { const node_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.selectNode(node_r7)); });
99
- i0.ɵɵelementStart(1, "div", 41);
100
- i0.ɵɵtemplate(2, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_2_Template, 2, 2, "button", 42)(3, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span_3_Template, 1, 0, "span", 43);
101
- i0.ɵɵelementStart(4, "div", 44);
97
+ i0.ɵɵelementStart(0, "div", 37);
98
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Template_div_click_0_listener() { const node_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.selectNode(node_r7)); });
99
+ i0.ɵɵelementStart(1, "div", 38);
100
+ i0.ɵɵconditionalCreate(2, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_2_Template, 2, 2, "button", 39);
101
+ i0.ɵɵconditionalCreate(3, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_3_Template, 1, 0, "span", 40);
102
+ i0.ɵɵelementStart(4, "div", 41);
102
103
  i0.ɵɵelement(5, "i");
103
104
  i0.ɵɵelementEnd();
104
- i0.ɵɵelementStart(6, "div", 45)(7, "div", 46);
105
+ i0.ɵɵelementStart(6, "div", 42)(7, "div", 43);
105
106
  i0.ɵɵtext(8);
106
107
  i0.ɵɵelementEnd();
107
- i0.ɵɵtemplate(9, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_div_9_Template, 3, 6, "div", 47);
108
+ i0.ɵɵconditionalCreate(9, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_9_Template, 3, 6, "div", 44);
108
109
  i0.ɵɵelementEnd();
109
- i0.ɵɵelementStart(10, "div", 48);
110
- i0.ɵɵtemplate(11, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span_11_Template, 3, 1, "span", 49)(12, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_span_12_Template, 3, 1, "span", 50);
110
+ i0.ɵɵelementStart(10, "div", 45);
111
+ i0.ɵɵconditionalCreate(11, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_11_Template, 3, 1, "span", 46);
112
+ i0.ɵɵconditionalCreate(12, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_12_Template, 3, 1, "span", 47);
111
113
  i0.ɵɵelementEnd();
112
- i0.ɵɵelementStart(13, "div", 51);
113
- i0.ɵɵtemplate(14, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_14_Template, 2, 0, "button", 52)(15, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_button_15_Template, 2, 0, "button", 53);
114
+ i0.ɵɵelementStart(13, "div", 48);
115
+ i0.ɵɵconditionalCreate(14, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_14_Template, 2, 0, "button", 49);
116
+ i0.ɵɵconditionalCreate(15, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Conditional_15_Template, 2, 0, "button", 50);
114
117
  i0.ɵɵelementEnd()()();
115
118
  } if (rf & 2) {
116
119
  const node_r7 = ctx.$implicit;
117
- const i_r11 = ctx.index;
120
+ const ɵ$index_72_r11 = ctx.$index;
118
121
  const ctx_r3 = i0.ɵɵnextContext(3);
119
122
  i0.ɵɵstyleProp("padding-left", 12 + node_r7.level * 20, "px");
120
123
  i0.ɵɵclassProp("selected", (ctx_r3.selectedNode == null ? null : ctx_r3.selectedNode.category == null ? null : ctx_r3.selectedNode.category.ID) === node_r7.category.ID);
121
124
  i0.ɵɵadvance(2);
122
- i0.ɵɵproperty("ngIf", node_r7.children.length > 0);
125
+ i0.ɵɵconditional(node_r7.children.length > 0 ? 2 : -1);
123
126
  i0.ɵɵadvance();
124
- i0.ɵɵproperty("ngIf", node_r7.children.length === 0);
127
+ i0.ɵɵconditional(node_r7.children.length === 0 ? 3 : -1);
125
128
  i0.ɵɵadvance();
126
- i0.ɵɵstyleProp("background-color", ctx_r3.getCategoryColor(i_r11) + "15")("color", ctx_r3.getCategoryColor(i_r11));
129
+ i0.ɵɵstyleProp("background-color", ctx_r3.getCategoryColor(ɵ$index_72_r11) + "15")("color", ctx_r3.getCategoryColor(ɵ$index_72_r11));
127
130
  i0.ɵɵadvance();
128
131
  i0.ɵɵclassMap(node_r7.category.IconClass || "fa-solid fa-folder");
129
132
  i0.ɵɵadvance(3);
130
133
  i0.ɵɵtextInterpolate(node_r7.category.Name);
131
134
  i0.ɵɵadvance();
132
- i0.ɵɵproperty("ngIf", node_r7.category.Description);
135
+ i0.ɵɵconditional(node_r7.category.Description ? 9 : -1);
133
136
  i0.ɵɵadvance(2);
134
- i0.ɵɵproperty("ngIf", node_r7.typeCount > 0);
137
+ i0.ɵɵconditional(node_r7.typeCount > 0 ? 11 : -1);
135
138
  i0.ɵɵadvance();
136
- i0.ɵɵproperty("ngIf", node_r7.children.length > 0);
139
+ i0.ɵɵconditional(node_r7.children.length > 0 ? 12 : -1);
137
140
  i0.ɵɵadvance(2);
138
- i0.ɵɵproperty("ngIf", ctx_r3.UserCanUpdate);
141
+ i0.ɵɵconditional(ctx_r3.UserCanUpdate ? 14 : -1);
139
142
  i0.ɵɵadvance();
140
- i0.ɵɵproperty("ngIf", ctx_r3.UserCanDelete && node_r7.children.length === 0 && node_r7.typeCount === 0);
143
+ i0.ɵɵconditional(ctx_r3.UserCanDelete && node_r7.children.length === 0 && node_r7.typeCount === 0 ? 15 : -1);
141
144
  } }
142
- function CredentialsCategoriesResourceComponent_ng_container_2_div_29_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelementStart(0, "div", 38);
144
- i0.ɵɵtemplate(1, CredentialsCategoriesResourceComponent_ng_container_2_div_29_div_1_Template, 16, 18, "div", 39);
145
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
146
+ i0.ɵɵelementStart(0, "div", 28);
147
+ i0.ɵɵrepeaterCreate(1, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_For_2_Template, 16, 18, "div", 36, i0.ɵɵrepeaterTrackByIdentity);
145
148
  i0.ɵɵelementEnd();
146
149
  } if (rf & 2) {
147
150
  const ctx_r3 = i0.ɵɵnextContext(2);
148
151
  i0.ɵɵadvance();
149
- i0.ɵɵproperty("ngForOf", ctx_r3.getFlattenedNodes());
152
+ i0.ɵɵrepeater(ctx_r3.getFlattenedNodes());
150
153
  } }
151
- function CredentialsCategoriesResourceComponent_ng_container_2_div_30_p_5_Template(rf, ctx) { if (rf & 1) {
154
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_5_Template(rf, ctx) { if (rf & 1) {
152
155
  const _r12 = i0.ɵɵgetCurrentView();
153
156
  i0.ɵɵelementStart(0, "p");
154
157
  i0.ɵɵtext(1, " No categories match your search. ");
155
- i0.ɵɵelementStart(2, "button", 67);
156
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_30_p_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r12); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.clearSearch()); });
158
+ i0.ɵɵelementStart(2, "button", 59);
159
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r12); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.clearSearch()); });
157
160
  i0.ɵɵtext(3, "Clear search");
158
161
  i0.ɵɵelementEnd()();
159
162
  } }
160
- function CredentialsCategoriesResourceComponent_ng_container_2_div_30_p_6_Template(rf, ctx) { if (rf & 1) {
163
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_6_Template(rf, ctx) { if (rf & 1) {
161
164
  i0.ɵɵelementStart(0, "p");
162
165
  i0.ɵɵtext(1, " Get started by creating your first category. ");
163
166
  i0.ɵɵelementEnd();
164
167
  } }
165
- function CredentialsCategoriesResourceComponent_ng_container_2_div_30_button_7_Template(rf, ctx) { if (rf & 1) {
168
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_7_Template(rf, ctx) { if (rf & 1) {
166
169
  const _r13 = i0.ɵɵgetCurrentView();
167
- i0.ɵɵelementStart(0, "button", 34);
168
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_30_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.createNewCategory()); });
169
- i0.ɵɵelement(1, "i", 35);
170
+ i0.ɵɵelementStart(0, "button", 32);
171
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.createNewCategory()); });
172
+ i0.ɵɵelement(1, "i", 33);
170
173
  i0.ɵɵtext(2, " Create Category ");
171
174
  i0.ɵɵelementEnd();
172
175
  } }
173
- function CredentialsCategoriesResourceComponent_ng_container_2_div_30_Template(rf, ctx) { if (rf & 1) {
174
- i0.ɵɵelementStart(0, "div", 64)(1, "div", 65);
175
- i0.ɵɵelement(2, "i", 66);
176
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
177
+ i0.ɵɵelementStart(0, "div", 29)(1, "div", 57);
178
+ i0.ɵɵelement(2, "i", 58);
176
179
  i0.ɵɵelementEnd();
177
180
  i0.ɵɵelementStart(3, "h3");
178
181
  i0.ɵɵtext(4, "No Categories");
179
182
  i0.ɵɵelementEnd();
180
- i0.ɵɵtemplate(5, CredentialsCategoriesResourceComponent_ng_container_2_div_30_p_5_Template, 4, 0, "p", 3)(6, CredentialsCategoriesResourceComponent_ng_container_2_div_30_p_6_Template, 2, 0, "p", 3)(7, CredentialsCategoriesResourceComponent_ng_container_2_div_30_button_7_Template, 3, 0, "button", 14);
183
+ i0.ɵɵconditionalCreate(5, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_5_Template, 4, 0, "p");
184
+ i0.ɵɵconditionalCreate(6, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_6_Template, 2, 0, "p");
185
+ i0.ɵɵconditionalCreate(7, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Conditional_7_Template, 3, 0, "button", 12);
181
186
  i0.ɵɵelementEnd();
182
187
  } if (rf & 2) {
183
188
  const ctx_r3 = i0.ɵɵnextContext(2);
184
189
  i0.ɵɵadvance(5);
185
- i0.ɵɵproperty("ngIf", ctx_r3.searchText);
190
+ i0.ɵɵconditional(ctx_r3.searchText ? 5 : -1);
186
191
  i0.ɵɵadvance();
187
- i0.ɵɵproperty("ngIf", !ctx_r3.searchText);
192
+ i0.ɵɵconditional(!ctx_r3.searchText ? 6 : -1);
188
193
  i0.ɵɵadvance();
189
- i0.ɵɵproperty("ngIf", ctx_r3.UserCanCreate && !ctx_r3.searchText);
194
+ i0.ɵɵconditional(ctx_r3.UserCanCreate && !ctx_r3.searchText ? 7 : -1);
190
195
  } }
191
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_span_7_Template(rf, ctx) { if (rf & 1) {
192
- i0.ɵɵelementStart(0, "span", 85);
196
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_7_Template(rf, ctx) { if (rf & 1) {
197
+ i0.ɵɵelementStart(0, "span", 63);
193
198
  i0.ɵɵtext(1);
194
199
  i0.ɵɵelementEnd();
195
200
  } if (rf & 2) {
@@ -197,19 +202,19 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_31_span_7_Tem
197
202
  i0.ɵɵadvance();
198
203
  i0.ɵɵtextInterpolate1(" Level ", ctx_r3.selectedNode.level + 1, " ");
199
204
  } }
200
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_button_9_Template(rf, ctx) { if (rf & 1) {
205
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_9_Template(rf, ctx) { if (rf & 1) {
201
206
  const _r15 = i0.ɵɵgetCurrentView();
202
- i0.ɵɵelementStart(0, "button", 60);
203
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_31_button_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.editCategory(ctx_r3.selectedNode)); });
204
- i0.ɵɵelement(1, "i", 61);
207
+ i0.ɵɵelementStart(0, "button", 53);
208
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.editCategory(ctx_r3.selectedNode)); });
209
+ i0.ɵɵelement(1, "i", 54);
205
210
  i0.ɵɵelementEnd();
206
211
  } }
207
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_24_Template(rf, ctx) { if (rf & 1) {
208
- i0.ɵɵelementStart(0, "div", 86)(1, "h3");
209
- i0.ɵɵelement(2, "i", 87);
212
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_24_Template(rf, ctx) { if (rf & 1) {
213
+ i0.ɵɵelementStart(0, "div", 71)(1, "h3");
214
+ i0.ɵɵelement(2, "i", 76);
210
215
  i0.ɵɵtext(3, " Description ");
211
216
  i0.ɵɵelementEnd();
212
- i0.ɵɵelementStart(4, "p", 88);
217
+ i0.ɵɵelementStart(4, "p", 77);
213
218
  i0.ɵɵtext(5);
214
219
  i0.ɵɵelementEnd()();
215
220
  } if (rf & 2) {
@@ -217,8 +222,8 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_24_Tem
217
222
  i0.ɵɵadvance(5);
218
223
  i0.ɵɵtextInterpolate(ctx_r3.selectedNode.category.Description);
219
224
  } }
220
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_div_5_div_6_Template(rf, ctx) { if (rf & 1) {
221
- i0.ɵɵelementStart(0, "div", 97);
225
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_25_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
226
+ i0.ɵɵelementStart(0, "div", 83);
222
227
  i0.ɵɵtext(1);
223
228
  i0.ɵɵpipe(2, "slice");
224
229
  i0.ɵɵelementEnd();
@@ -227,14 +232,14 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_div
227
232
  i0.ɵɵadvance();
228
233
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, type_r16.Description, 0, 60));
229
234
  } }
230
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_div_5_Template(rf, ctx) { if (rf & 1) {
231
- i0.ɵɵelementStart(0, "div", 92)(1, "div", 93);
235
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_25_For_6_Template(rf, ctx) { if (rf & 1) {
236
+ i0.ɵɵelementStart(0, "div", 79)(1, "div", 80);
232
237
  i0.ɵɵelement(2, "i");
233
238
  i0.ɵɵelementEnd();
234
- i0.ɵɵelementStart(3, "div", 94)(4, "div", 95);
239
+ i0.ɵɵelementStart(3, "div", 81)(4, "div", 82);
235
240
  i0.ɵɵtext(5);
236
241
  i0.ɵɵelementEnd();
237
- i0.ɵɵtemplate(6, CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_div_5_div_6_Template, 3, 5, "div", 96);
242
+ i0.ɵɵconditionalCreate(6, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_25_For_6_Conditional_6_Template, 3, 5, "div", 83);
238
243
  i0.ɵɵelementEnd()();
239
244
  } if (rf & 2) {
240
245
  const type_r16 = ctx.$implicit;
@@ -243,23 +248,23 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_div
243
248
  i0.ɵɵadvance(3);
244
249
  i0.ɵɵtextInterpolate(type_r16.Name);
245
250
  i0.ɵɵadvance();
246
- i0.ɵɵproperty("ngIf", type_r16.Description);
251
+ i0.ɵɵconditional(type_r16.Description ? 6 : -1);
247
252
  } }
248
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_Template(rf, ctx) { if (rf & 1) {
249
- i0.ɵɵelementStart(0, "div", 89)(1, "h3");
250
- i0.ɵɵelement(2, "i", 12);
253
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_25_Template(rf, ctx) { if (rf & 1) {
254
+ i0.ɵɵelementStart(0, "div", 72)(1, "h3");
255
+ i0.ɵɵelement(2, "i", 10);
251
256
  i0.ɵɵtext(3, " Credential Types ");
252
257
  i0.ɵɵelementEnd();
253
- i0.ɵɵelementStart(4, "div", 90);
254
- i0.ɵɵtemplate(5, CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_div_5_Template, 7, 4, "div", 91);
258
+ i0.ɵɵelementStart(4, "div", 78);
259
+ i0.ɵɵrepeaterCreate(5, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_25_For_6_Template, 7, 4, "div", 79, i0.ɵɵrepeaterTrackByIdentity);
255
260
  i0.ɵɵelementEnd()();
256
261
  } if (rf & 2) {
257
262
  const ctx_r3 = i0.ɵɵnextContext(3);
258
263
  i0.ɵɵadvance(5);
259
- i0.ɵɵproperty("ngForOf", ctx_r3.getTypesForCategory(ctx_r3.selectedNode.category.Name));
264
+ i0.ɵɵrepeater(ctx_r3.getTypesForCategory(ctx_r3.selectedNode.category.Name));
260
265
  } }
261
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_div_5_span_4_Template(rf, ctx) { if (rf & 1) {
262
- i0.ɵɵelementStart(0, "span", 103);
266
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_26_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
267
+ i0.ɵɵelementStart(0, "span", 87);
263
268
  i0.ɵɵtext(1);
264
269
  i0.ɵɵelementEnd();
265
270
  } if (rf & 2) {
@@ -267,15 +272,15 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_div
267
272
  i0.ɵɵadvance();
268
273
  i0.ɵɵtextInterpolate1("", child_r18.typeCount, " types");
269
274
  } }
270
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_div_5_Template(rf, ctx) { if (rf & 1) {
275
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_26_For_6_Template(rf, ctx) { if (rf & 1) {
271
276
  const _r17 = i0.ɵɵgetCurrentView();
272
- i0.ɵɵelementStart(0, "div", 101);
273
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_div_5_Template_div_click_0_listener() { const child_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r3 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r3.selectNode(child_r18)); });
277
+ i0.ɵɵelementStart(0, "div", 86);
278
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_26_For_6_Template_div_click_0_listener() { const child_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r3 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r3.selectNode(child_r18)); });
274
279
  i0.ɵɵelement(1, "i");
275
280
  i0.ɵɵelementStart(2, "span");
276
281
  i0.ɵɵtext(3);
277
282
  i0.ɵɵelementEnd();
278
- i0.ɵɵtemplate(4, CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_div_5_span_4_Template, 2, 1, "span", 102);
283
+ i0.ɵɵconditionalCreate(4, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_26_For_6_Conditional_4_Template, 2, 1, "span", 87);
279
284
  i0.ɵɵelementEnd();
280
285
  } if (rf & 2) {
281
286
  const child_r18 = ctx.$implicit;
@@ -284,63 +289,65 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_div
284
289
  i0.ɵɵadvance(2);
285
290
  i0.ɵɵtextInterpolate(child_r18.category.Name);
286
291
  i0.ɵɵadvance();
287
- i0.ɵɵproperty("ngIf", child_r18.typeCount > 0);
292
+ i0.ɵɵconditional(child_r18.typeCount > 0 ? 4 : -1);
288
293
  } }
289
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_Template(rf, ctx) { if (rf & 1) {
290
- i0.ɵɵelementStart(0, "div", 98)(1, "h3");
291
- i0.ɵɵelement(2, "i", 11);
294
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_26_Template(rf, ctx) { if (rf & 1) {
295
+ i0.ɵɵelementStart(0, "div", 73)(1, "h3");
296
+ i0.ɵɵelement(2, "i", 9);
292
297
  i0.ɵɵtext(3, " Subcategories ");
293
298
  i0.ɵɵelementEnd();
294
- i0.ɵɵelementStart(4, "div", 99);
295
- i0.ɵɵtemplate(5, CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_div_5_Template, 5, 4, "div", 100);
299
+ i0.ɵɵelementStart(4, "div", 84);
300
+ i0.ɵɵrepeaterCreate(5, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_26_For_6_Template, 5, 4, "div", 85, i0.ɵɵrepeaterTrackByIdentity);
296
301
  i0.ɵɵelementEnd()();
297
302
  } if (rf & 2) {
298
303
  const ctx_r3 = i0.ɵɵnextContext(3);
299
304
  i0.ɵɵadvance(5);
300
- i0.ɵɵproperty("ngForOf", ctx_r3.selectedNode.children);
305
+ i0.ɵɵrepeater(ctx_r3.selectedNode.children);
301
306
  } }
302
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_button_28_Template(rf, ctx) { if (rf & 1) {
307
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_28_Template(rf, ctx) { if (rf & 1) {
303
308
  const _r19 = i0.ɵɵgetCurrentView();
304
- i0.ɵɵelementStart(0, "button", 104);
305
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_31_button_28_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.viewTypesForCategory(ctx_r3.selectedNode.category.Name)); });
306
- i0.ɵɵelement(1, "i", 12);
309
+ i0.ɵɵelementStart(0, "button", 88);
310
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_28_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.viewTypesForCategory(ctx_r3.selectedNode.category.Name)); });
311
+ i0.ɵɵelement(1, "i", 10);
307
312
  i0.ɵɵtext(2, " View Types ");
308
313
  i0.ɵɵelementEnd();
309
314
  } }
310
- function CredentialsCategoriesResourceComponent_ng_container_2_div_31_Template(rf, ctx) { if (rf & 1) {
315
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
311
316
  const _r14 = i0.ɵɵgetCurrentView();
312
- i0.ɵɵelementStart(0, "div", 68)(1, "div", 69)(2, "div", 70);
317
+ i0.ɵɵelementStart(0, "div", 30)(1, "div", 60)(2, "div", 61);
313
318
  i0.ɵɵelement(3, "i");
314
319
  i0.ɵɵelementEnd();
315
- i0.ɵɵelementStart(4, "div", 71)(5, "h2");
320
+ i0.ɵɵelementStart(4, "div", 62)(5, "h2");
316
321
  i0.ɵɵtext(6);
317
322
  i0.ɵɵelementEnd();
318
- i0.ɵɵtemplate(7, CredentialsCategoriesResourceComponent_ng_container_2_div_31_span_7_Template, 2, 1, "span", 72);
323
+ i0.ɵɵconditionalCreate(7, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_7_Template, 2, 1, "span", 63);
319
324
  i0.ɵɵelementEnd();
320
- i0.ɵɵelementStart(8, "div", 73);
321
- i0.ɵɵtemplate(9, CredentialsCategoriesResourceComponent_ng_container_2_div_31_button_9_Template, 2, 0, "button", 52);
322
- i0.ɵɵelementStart(10, "button", 74);
323
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_31_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r14); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.selectedNode = null); });
324
- i0.ɵɵelement(11, "i", 37);
325
+ i0.ɵɵelementStart(8, "div", 64);
326
+ i0.ɵɵconditionalCreate(9, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_9_Template, 2, 0, "button", 49);
327
+ i0.ɵɵelementStart(10, "button", 65);
328
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r14); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.selectedNode = null); });
329
+ i0.ɵɵelement(11, "i", 35);
325
330
  i0.ɵɵelementEnd()()();
326
- i0.ɵɵelementStart(12, "div", 75)(13, "div", 76)(14, "div", 77)(15, "div", 78);
331
+ i0.ɵɵelementStart(12, "div", 66)(13, "div", 67)(14, "div", 68)(15, "div", 69);
327
332
  i0.ɵɵtext(16);
328
333
  i0.ɵɵelementEnd();
329
- i0.ɵɵelementStart(17, "div", 79);
334
+ i0.ɵɵelementStart(17, "div", 70);
330
335
  i0.ɵɵtext(18, "Credential Types");
331
336
  i0.ɵɵelementEnd()();
332
- i0.ɵɵelementStart(19, "div", 77)(20, "div", 78);
337
+ i0.ɵɵelementStart(19, "div", 68)(20, "div", 69);
333
338
  i0.ɵɵtext(21);
334
339
  i0.ɵɵelementEnd();
335
- i0.ɵɵelementStart(22, "div", 79);
340
+ i0.ɵɵelementStart(22, "div", 70);
336
341
  i0.ɵɵtext(23, "Subcategories");
337
342
  i0.ɵɵelementEnd()()();
338
- i0.ɵɵtemplate(24, CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_24_Template, 6, 1, "div", 80)(25, CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_25_Template, 6, 1, "div", 81)(26, CredentialsCategoriesResourceComponent_ng_container_2_div_31_div_26_Template, 6, 1, "div", 82);
339
- i0.ɵɵelementStart(27, "div", 83);
340
- i0.ɵɵtemplate(28, CredentialsCategoriesResourceComponent_ng_container_2_div_31_button_28_Template, 3, 0, "button", 84);
341
- i0.ɵɵelementStart(29, "button", 34);
342
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_div_31_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r14); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.createCredentialWithCategory(ctx_r3.selectedNode.category.ID)); });
343
- i0.ɵɵelement(30, "i", 35);
343
+ i0.ɵɵconditionalCreate(24, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_24_Template, 6, 1, "div", 71);
344
+ i0.ɵɵconditionalCreate(25, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_25_Template, 7, 0, "div", 72);
345
+ i0.ɵɵconditionalCreate(26, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_26_Template, 7, 0, "div", 73);
346
+ i0.ɵɵelementStart(27, "div", 74);
347
+ i0.ɵɵconditionalCreate(28, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Conditional_28_Template, 3, 0, "button", 75);
348
+ i0.ɵɵelementStart(29, "button", 32);
349
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r14); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.createCredentialWithCategory(ctx_r3.selectedNode.category.ID)); });
350
+ i0.ɵɵelement(30, "i", 33);
344
351
  i0.ɵɵtext(31, " Create Credential ");
345
352
  i0.ɵɵelementEnd()()()();
346
353
  } if (rf & 2) {
@@ -352,25 +359,25 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_31_Template(r
352
359
  i0.ɵɵadvance(3);
353
360
  i0.ɵɵtextInterpolate(ctx_r3.selectedNode.category.Name);
354
361
  i0.ɵɵadvance();
355
- i0.ɵɵproperty("ngIf", ctx_r3.selectedNode.level > 0);
362
+ i0.ɵɵconditional(ctx_r3.selectedNode.level > 0 ? 7 : -1);
356
363
  i0.ɵɵadvance(2);
357
- i0.ɵɵproperty("ngIf", ctx_r3.UserCanUpdate);
364
+ i0.ɵɵconditional(ctx_r3.UserCanUpdate ? 9 : -1);
358
365
  i0.ɵɵadvance(7);
359
366
  i0.ɵɵtextInterpolate(ctx_r3.selectedNode.typeCount);
360
367
  i0.ɵɵadvance(5);
361
368
  i0.ɵɵtextInterpolate(ctx_r3.selectedNode.children.length);
362
369
  i0.ɵɵadvance(3);
363
- i0.ɵɵproperty("ngIf", ctx_r3.selectedNode.category.Description);
370
+ i0.ɵɵconditional(ctx_r3.selectedNode.category.Description ? 24 : -1);
364
371
  i0.ɵɵadvance();
365
- i0.ɵɵproperty("ngIf", ctx_r3.selectedNode.typeCount > 0);
372
+ i0.ɵɵconditional(ctx_r3.selectedNode.typeCount > 0 ? 25 : -1);
366
373
  i0.ɵɵadvance();
367
- i0.ɵɵproperty("ngIf", ctx_r3.selectedNode.children.length > 0);
374
+ i0.ɵɵconditional(ctx_r3.selectedNode.children.length > 0 ? 26 : -1);
368
375
  i0.ɵɵadvance(2);
369
- i0.ɵɵproperty("ngIf", ctx_r3.selectedNode.typeCount > 0);
376
+ i0.ɵɵconditional(ctx_r3.selectedNode.typeCount > 0 ? 28 : -1);
370
377
  } }
371
- function CredentialsCategoriesResourceComponent_ng_container_2_div_32_Template(rf, ctx) { if (rf & 1) {
372
- i0.ɵɵelementStart(0, "div", 105)(1, "div", 106);
373
- i0.ɵɵelement(2, "i", 107);
378
+ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
379
+ i0.ɵɵelementStart(0, "div", 31)(1, "div", 89);
380
+ i0.ɵɵelement(2, "i", 90);
374
381
  i0.ɵɵelementEnd();
375
382
  i0.ɵɵelementStart(3, "h3");
376
383
  i0.ɵɵtext(4, "Select a Category");
@@ -379,72 +386,69 @@ function CredentialsCategoriesResourceComponent_ng_container_2_div_32_Template(r
379
386
  i0.ɵɵtext(6, "Click on a category to view its details and credential types");
380
387
  i0.ɵɵelementEnd()();
381
388
  } }
382
- function CredentialsCategoriesResourceComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
389
+ function CredentialsCategoriesResourceComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
383
390
  const _r2 = i0.ɵɵgetCurrentView();
384
- i0.ɵɵelementContainerStart(0);
385
- i0.ɵɵelementStart(1, "div", 6)(2, "div", 7)(3, "h2", 8);
386
- i0.ɵɵtext(4, "Categories");
391
+ i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "h2", 6);
392
+ i0.ɵɵtext(3, "Categories");
387
393
  i0.ɵɵelementEnd();
388
- i0.ɵɵelementStart(5, "div", 9)(6, "span", 10);
389
- i0.ɵɵelement(7, "i", 11);
390
- i0.ɵɵtext(8);
394
+ i0.ɵɵelementStart(4, "div", 7)(5, "span", 8);
395
+ i0.ɵɵelement(6, "i", 9);
396
+ i0.ɵɵtext(7);
391
397
  i0.ɵɵelementEnd();
392
- i0.ɵɵelementStart(9, "span", 10);
393
- i0.ɵɵelement(10, "i", 12);
394
- i0.ɵɵtext(11);
398
+ i0.ɵɵelementStart(8, "span", 8);
399
+ i0.ɵɵelement(9, "i", 10);
400
+ i0.ɵɵtext(10);
395
401
  i0.ɵɵelementEnd()()();
396
- i0.ɵɵelementStart(12, "div", 13);
397
- i0.ɵɵtemplate(13, CredentialsCategoriesResourceComponent_ng_container_2_button_13_Template, 4, 0, "button", 14);
402
+ i0.ɵɵelementStart(11, "div", 11);
403
+ i0.ɵɵconditionalCreate(12, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_12_Template, 4, 0, "button", 12);
398
404
  i0.ɵɵelementEnd()();
399
- i0.ɵɵelementStart(14, "div", 15)(15, "div", 16)(16, "div", 17);
400
- i0.ɵɵelement(17, "i", 18);
401
- i0.ɵɵelementStart(18, "input", 19);
402
- i0.ɵɵlistener("input", function CredentialsCategoriesResourceComponent_ng_container_2_Template_input_input_18_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onSearchChange($event.target.value)); });
405
+ i0.ɵɵelementStart(13, "div", 13)(14, "div", 14)(15, "div", 15);
406
+ i0.ɵɵelement(16, "i", 16);
407
+ i0.ɵɵelementStart(17, "input", 17);
408
+ i0.ɵɵlistener("input", function CredentialsCategoriesResourceComponent_Conditional_2_Template_input_input_17_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onSearchChange($event.target.value)); });
403
409
  i0.ɵɵelementEnd();
404
- i0.ɵɵtemplate(19, CredentialsCategoriesResourceComponent_ng_container_2_button_19_Template, 2, 0, "button", 20);
410
+ i0.ɵɵconditionalCreate(18, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_18_Template, 2, 0, "button", 18);
405
411
  i0.ɵɵelementEnd()();
406
- i0.ɵɵelementStart(20, "div", 21)(21, "button", 22);
407
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.expandAll()); });
408
- i0.ɵɵelement(22, "i", 23);
412
+ i0.ɵɵelementStart(19, "div", 19)(20, "button", 20);
413
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.expandAll()); });
414
+ i0.ɵɵelement(21, "i", 21);
409
415
  i0.ɵɵelementEnd();
410
- i0.ɵɵelementStart(23, "button", 24);
411
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.collapseAll()); });
412
- i0.ɵɵelement(24, "i", 25);
416
+ i0.ɵɵelementStart(22, "button", 22);
417
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.collapseAll()); });
418
+ i0.ɵɵelement(23, "i", 23);
413
419
  i0.ɵɵelementEnd();
414
- i0.ɵɵelementStart(25, "button", 26);
415
- i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_ng_container_2_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.refresh()); });
416
- i0.ɵɵelement(26, "i", 27);
420
+ i0.ɵɵelementStart(24, "button", 24);
421
+ i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.refresh()); });
422
+ i0.ɵɵelement(25, "i", 25);
417
423
  i0.ɵɵelementEnd()()();
418
- i0.ɵɵelementStart(27, "div", 28)(28, "div", 29);
419
- i0.ɵɵtemplate(29, CredentialsCategoriesResourceComponent_ng_container_2_div_29_Template, 2, 1, "div", 30)(30, CredentialsCategoriesResourceComponent_ng_container_2_div_30_Template, 8, 3, "div", 31);
424
+ i0.ɵɵelementStart(26, "div", 26)(27, "div", 27);
425
+ i0.ɵɵconditionalCreate(28, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_Template, 3, 0, "div", 28);
426
+ i0.ɵɵconditionalCreate(29, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Template, 8, 3, "div", 29);
420
427
  i0.ɵɵelementEnd();
421
- i0.ɵɵtemplate(31, CredentialsCategoriesResourceComponent_ng_container_2_div_31_Template, 32, 15, "div", 32)(32, CredentialsCategoriesResourceComponent_ng_container_2_div_32_Template, 7, 0, "div", 33);
428
+ i0.ɵɵconditionalCreate(30, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_30_Template, 32, 15, "div", 30);
429
+ i0.ɵɵconditionalCreate(31, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_31_Template, 7, 0, "div", 31);
422
430
  i0.ɵɵelementEnd();
423
- i0.ɵɵelementContainerEnd();
424
431
  } if (rf & 2) {
425
432
  const ctx_r3 = i0.ɵɵnextContext();
426
- i0.ɵɵadvance(8);
433
+ i0.ɵɵadvance(7);
427
434
  i0.ɵɵtextInterpolate1(" ", ctx_r3.categories.length, " categories ");
428
435
  i0.ɵɵadvance(3);
429
436
  i0.ɵɵtextInterpolate1(" ", ctx_r3.getTotalTypeCount(), " types ");
430
437
  i0.ɵɵadvance(2);
431
- i0.ɵɵproperty("ngIf", ctx_r3.UserCanCreate);
438
+ i0.ɵɵconditional(ctx_r3.UserCanCreate ? 12 : -1);
432
439
  i0.ɵɵadvance(5);
433
440
  i0.ɵɵproperty("value", ctx_r3.searchText);
434
441
  i0.ɵɵadvance();
435
- i0.ɵɵproperty("ngIf", ctx_r3.searchText);
442
+ i0.ɵɵconditional(ctx_r3.searchText ? 18 : -1);
436
443
  i0.ɵɵadvance(10);
437
- i0.ɵɵproperty("ngIf", ctx_r3.categoryTree.length > 0);
444
+ i0.ɵɵconditional(ctx_r3.categoryTree.length > 0 ? 28 : -1);
438
445
  i0.ɵɵadvance();
439
- i0.ɵɵproperty("ngIf", ctx_r3.categoryTree.length === 0);
446
+ i0.ɵɵconditional(ctx_r3.categoryTree.length === 0 ? 29 : -1);
440
447
  i0.ɵɵadvance();
441
- i0.ɵɵproperty("ngIf", ctx_r3.selectedNode);
448
+ i0.ɵɵconditional(ctx_r3.selectedNode ? 30 : -1);
442
449
  i0.ɵɵadvance();
443
- i0.ɵɵproperty("ngIf", !ctx_r3.selectedNode && ctx_r3.categoryTree.length > 0);
450
+ i0.ɵɵconditional(!ctx_r3.selectedNode && ctx_r3.categoryTree.length > 0 ? 31 : -1);
444
451
  } }
445
- export function LoadCredentialsCategoriesResource() {
446
- // Prevents tree-shaking
447
- }
448
452
  let CredentialsCategoriesResourceComponent = class CredentialsCategoriesResourceComponent extends BaseResourceComponent {
449
453
  cdr;
450
454
  navigationService;
@@ -786,20 +790,21 @@ let CredentialsCategoriesResourceComponent = class CredentialsCategoriesResource
786
790
  } if (rf & 2) {
787
791
  let _t;
788
792
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.categoryEditPanel = _t.first);
789
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 2, consts: [["categoryEditPanel", ""], [1, "categories-container"], ["text", "Loading categories...", 4, "ngIf"], [4, "ngIf"], [3, "saved", "deleted"], ["text", "Loading categories..."], [1, "categories-header"], [1, "header-info"], [1, "categories-title"], [1, "header-stats"], [1, "stat-item"], [1, "fa-solid", "fa-folder-tree"], [1, "fa-solid", "fa-shapes"], [1, "header-actions"], ["class", "btn-primary", 3, "click", 4, "ngIf"], [1, "toolbar"], [1, "toolbar-left"], [1, "search-container"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search categories...", 3, "input", "value"], ["class", "search-clear", 3, "click", 4, "ngIf"], [1, "toolbar-right"], ["title", "Expand All", 1, "btn-text", 3, "click"], [1, "fa-solid", "fa-expand"], ["title", "Collapse All", 1, "btn-text", 3, "click"], [1, "fa-solid", "fa-compress"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "categories-layout"], [1, "tree-panel"], ["class", "tree-container", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], ["class", "detail-panel", 4, "ngIf"], ["class", "no-selection", 4, "ngIf"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [1, "tree-container"], ["class", "tree-node", 3, "selected", "padding-left", "click", 4, "ngFor", "ngForOf"], [1, "tree-node", 3, "click"], [1, "node-content"], ["class", "expand-btn", 3, "click", 4, "ngIf"], ["class", "expand-placeholder", 4, "ngIf"], [1, "node-icon"], [1, "node-info"], [1, "node-name"], ["class", "node-description", 4, "ngIf"], [1, "node-badges"], ["class", "badge types", 4, "ngIf"], ["class", "badge children", 4, "ngIf"], [1, "node-actions"], ["class", "action-btn", "title", "Edit", 3, "click", 4, "ngIf"], ["class", "action-btn danger", "title", "Delete", 3, "click", 4, "ngIf"], [1, "expand-btn", 3, "click"], [1, "expand-placeholder"], [1, "node-description"], [1, "badge", "types"], [1, "badge", "children"], [1, "fa-solid", "fa-folder"], ["title", "Edit", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["title", "Delete", 1, "action-btn", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "empty-state"], [1, "empty-icon"], [1, "fa-solid", "fa-folder-open"], [1, "btn-link", 3, "click"], [1, "detail-panel"], [1, "detail-header"], [1, "detail-icon"], [1, "detail-title"], ["class", "level-badge", 4, "ngIf"], [1, "detail-actions"], [1, "close-btn", 3, "click"], [1, "detail-body"], [1, "detail-stats"], [1, "detail-stat"], [1, "stat-value"], [1, "stat-label"], ["class", "description-section", 4, "ngIf"], ["class", "types-section", 4, "ngIf"], ["class", "subcategories-section", 4, "ngIf"], [1, "detail-quick-actions"], ["class", "btn-secondary", 3, "click", 4, "ngIf"], [1, "level-badge"], [1, "description-section"], [1, "fa-solid", "fa-align-left"], [1, "description"], [1, "types-section"], [1, "type-list"], ["class", "type-item", 4, "ngFor", "ngForOf"], [1, "type-item"], [1, "type-icon"], [1, "type-info"], [1, "type-name"], ["class", "type-desc", 4, "ngIf"], [1, "type-desc"], [1, "subcategories-section"], [1, "subcategory-list"], ["class", "subcategory-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "subcategory-item", 3, "click"], ["class", "sub-type-count", 4, "ngIf"], [1, "sub-type-count"], [1, "btn-secondary", 3, "click"], [1, "no-selection"], [1, "no-selection-icon"], [1, "fa-solid", "fa-hand-pointer"]], template: function CredentialsCategoriesResourceComponent_Template(rf, ctx) { if (rf & 1) {
793
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 2, consts: [["categoryEditPanel", ""], [1, "categories-container"], ["text", "Loading categories..."], [3, "saved", "deleted"], [1, "categories-header"], [1, "header-info"], [1, "categories-title"], [1, "header-stats"], [1, "stat-item"], [1, "fa-solid", "fa-folder-tree"], [1, "fa-solid", "fa-shapes"], [1, "header-actions"], [1, "btn-primary"], [1, "toolbar"], [1, "toolbar-left"], [1, "search-container"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search categories...", 3, "input", "value"], [1, "search-clear"], [1, "toolbar-right"], ["title", "Expand All", 1, "btn-text", 3, "click"], [1, "fa-solid", "fa-expand"], ["title", "Collapse All", 1, "btn-text", 3, "click"], [1, "fa-solid", "fa-compress"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "categories-layout"], [1, "tree-panel"], [1, "tree-container"], [1, "empty-state"], [1, "detail-panel"], [1, "no-selection"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [1, "tree-node", 3, "selected", "padding-left"], [1, "tree-node", 3, "click"], [1, "node-content"], [1, "expand-btn"], [1, "expand-placeholder"], [1, "node-icon"], [1, "node-info"], [1, "node-name"], [1, "node-description"], [1, "node-badges"], [1, "badge", "types"], [1, "badge", "children"], [1, "node-actions"], ["title", "Edit", 1, "action-btn"], ["title", "Delete", 1, "action-btn", "danger"], [1, "expand-btn", 3, "click"], [1, "fa-solid", "fa-folder"], ["title", "Edit", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["title", "Delete", 1, "action-btn", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "empty-icon"], [1, "fa-solid", "fa-folder-open"], [1, "btn-link", 3, "click"], [1, "detail-header"], [1, "detail-icon"], [1, "detail-title"], [1, "level-badge"], [1, "detail-actions"], [1, "close-btn", 3, "click"], [1, "detail-body"], [1, "detail-stats"], [1, "detail-stat"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "types-section"], [1, "subcategories-section"], [1, "detail-quick-actions"], [1, "btn-secondary"], [1, "fa-solid", "fa-align-left"], [1, "description"], [1, "type-list"], [1, "type-item"], [1, "type-icon"], [1, "type-info"], [1, "type-name"], [1, "type-desc"], [1, "subcategory-list"], [1, "subcategory-item"], [1, "subcategory-item", 3, "click"], [1, "sub-type-count"], [1, "btn-secondary", 3, "click"], [1, "no-selection-icon"], [1, "fa-solid", "fa-hand-pointer"]], template: function CredentialsCategoriesResourceComponent_Template(rf, ctx) { if (rf & 1) {
790
794
  const _r1 = i0.ɵɵgetCurrentView();
791
795
  i0.ɵɵelementStart(0, "div", 1);
792
- i0.ɵɵtemplate(1, CredentialsCategoriesResourceComponent_mj_loading_1_Template, 1, 0, "mj-loading", 2)(2, CredentialsCategoriesResourceComponent_ng_container_2_Template, 33, 9, "ng-container", 3);
796
+ i0.ɵɵconditionalCreate(1, CredentialsCategoriesResourceComponent_Conditional_1_Template, 1, 0, "mj-loading", 2);
797
+ i0.ɵɵconditionalCreate(2, CredentialsCategoriesResourceComponent_Conditional_2_Template, 32, 9);
793
798
  i0.ɵɵelementEnd();
794
- i0.ɵɵelementStart(3, "mj-credential-category-edit-panel", 4, 0);
799
+ i0.ɵɵelementStart(3, "mj-credential-category-edit-panel", 3, 0);
795
800
  i0.ɵɵlistener("saved", function CredentialsCategoriesResourceComponent_Template_mj_credential_category_edit_panel_saved_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onCategorySaved($event)); })("deleted", function CredentialsCategoriesResourceComponent_Template_mj_credential_category_edit_panel_deleted_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onCategoryDeleted($event)); });
796
801
  i0.ɵɵelementEnd();
797
802
  } if (rf & 2) {
798
803
  i0.ɵɵadvance();
799
- i0.ɵɵproperty("ngIf", ctx.isLoading);
804
+ i0.ɵɵconditional(ctx.isLoading ? 1 : -1);
800
805
  i0.ɵɵadvance();
801
- i0.ɵɵproperty("ngIf", !ctx.isLoading);
802
- } }, dependencies: [i2.NgForOf, i2.NgIf, i3.LoadingComponent, i4.CredentialCategoryEditPanelComponent, i2.SlicePipe], styles: [".categories-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n\n\n.categories-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.categories-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n.btn-primary[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n.search-container[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n max-width: 320px;\n}\n\n.search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--text-secondary, #9ca3af);\n}\n\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n transition: all 0.2s ease;\n}\n\n.search-clear[_ngcontent-%COMP%]:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n\n\n.btn-text[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n\n\n.categories-layout[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n\n\n.tree-panel[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container[_ngcontent-%COMP%] {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n\n\n.tree-node[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.tree-node.selected[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.08) 0%, rgba(99, 102, 241, 0.04) 100%);\n border-left: 3px solid var(--accent-color, #6366f1);\n}\n\n.node-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n\n\n.expand-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--text-secondary, #9ca3af);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--button-hover, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n.expand-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder[_ngcontent-%COMP%] {\n width: 24px;\n flex-shrink: 0;\n}\n\n\n\n.node-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.node-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.node-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n line-height: 1.3;\n}\n\n.node-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.node-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types[_ngcontent-%COMP%] {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.badge.children[_ngcontent-%COMP%] {\n background: var(--badge-background, #f3f4f6);\n color: var(--text-secondary, #6b7280);\n}\n\n.badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.node-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover .node-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--accent-color, #6366f1);\n color: white;\n}\n\n.action-btn.danger[_ngcontent-%COMP%]:hover {\n background: #ef4444;\n color: white;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 10px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n\n\n.detail-body[_ngcontent-%COMP%] {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n\n\n.detail-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat[_ngcontent-%COMP%] {\n background: var(--stat-background, #f9fafb);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--accent-color, #6366f1);\n line-height: 1;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--text-secondary, #6b7280);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary, #374151);\n line-height: 1.6;\n margin: 0;\n}\n\n\n\n.types-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.type-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(99, 102, 241, 0.1);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.type-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.subcategories-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.subcategory-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.subcategory-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--accent-color, #6366f1);\n}\n\n.subcategory-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.sub-type-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n\n\n.detail-quick-actions[_ngcontent-%COMP%] {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%], \n.detail-quick-actions[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #e5e7eb);\n}\n\n\n\n.no-selection[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--text-secondary, #9ca3af);\n}\n\n.no-selection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.no-selection[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0 0 20px 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n\n\n@media (max-width: 1024px) {\n .categories-layout[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .detail-panel[_ngcontent-%COMP%], \n .no-selection[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .categories-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left[_ngcontent-%COMP%], \n .toolbar-right[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .search-container[_ngcontent-%COMP%] {\n max-width: none;\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: flex-end;\n }\n}"], changeDetection: 0 });
806
+ i0.ɵɵconditional(!ctx.isLoading ? 2 : -1);
807
+ } }, dependencies: [i2.LoadingComponent, i3.CredentialCategoryEditPanelComponent, i4.SlicePipe], styles: [".categories-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n\n\n.categories-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.categories-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n.btn-primary[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n.search-container[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n max-width: 320px;\n}\n\n.search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--text-secondary, #9ca3af);\n}\n\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n transition: all 0.2s ease;\n}\n\n.search-clear[_ngcontent-%COMP%]:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n\n\n.btn-text[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n\n\n.categories-layout[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n\n\n.tree-panel[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container[_ngcontent-%COMP%] {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n\n\n.tree-node[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.tree-node.selected[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.08) 0%, rgba(99, 102, 241, 0.04) 100%);\n border-left: 3px solid var(--accent-color, #6366f1);\n}\n\n.node-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n\n\n.expand-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--text-secondary, #9ca3af);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--button-hover, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n.expand-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder[_ngcontent-%COMP%] {\n width: 24px;\n flex-shrink: 0;\n}\n\n\n\n.node-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.node-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.node-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n line-height: 1.3;\n}\n\n.node-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.node-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types[_ngcontent-%COMP%] {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.badge.children[_ngcontent-%COMP%] {\n background: var(--badge-background, #f3f4f6);\n color: var(--text-secondary, #6b7280);\n}\n\n.badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.node-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover .node-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--accent-color, #6366f1);\n color: white;\n}\n\n.action-btn.danger[_ngcontent-%COMP%]:hover {\n background: #ef4444;\n color: white;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 10px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n\n\n.detail-body[_ngcontent-%COMP%] {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n\n\n.detail-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat[_ngcontent-%COMP%] {\n background: var(--stat-background, #f9fafb);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--accent-color, #6366f1);\n line-height: 1;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--text-secondary, #6b7280);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-primary, #374151);\n line-height: 1.6;\n margin: 0;\n}\n\n\n\n.types-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.type-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(99, 102, 241, 0.1);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.type-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.subcategories-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.subcategory-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.subcategory-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--accent-color, #6366f1);\n}\n\n.subcategory-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.sub-type-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n\n\n.detail-quick-actions[_ngcontent-%COMP%] {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%], \n.detail-quick-actions[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #e5e7eb);\n}\n\n\n\n.no-selection[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--text-secondary, #9ca3af);\n}\n\n.no-selection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.no-selection[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0 0 20px 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n\n\n@media (max-width: 1024px) {\n .categories-layout[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .detail-panel[_ngcontent-%COMP%], \n .no-selection[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .categories-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left[_ngcontent-%COMP%], \n .toolbar-right[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .search-container[_ngcontent-%COMP%] {\n max-width: none;\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: flex-end;\n }\n}"], changeDetection: 0 });
803
808
  };
804
809
  CredentialsCategoriesResourceComponent = __decorate([
805
810
  RegisterClass(BaseResourceComponent, 'CredentialsCategoriesResource')
@@ -807,10 +812,10 @@ CredentialsCategoriesResourceComponent = __decorate([
807
812
  export { CredentialsCategoriesResourceComponent };
808
813
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsCategoriesResourceComponent, [{
809
814
  type: Component,
810
- args: [{ selector: 'mj-credentials-categories-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"categories-container\">\n <mj-loading *ngIf=\"isLoading\" text=\"Loading categories...\"></mj-loading>\n\n <ng-container *ngIf=\"!isLoading\">\n <!-- Header -->\n <div class=\"categories-header\">\n <div class=\"header-info\">\n <h2 class=\"categories-title\">Categories</h2>\n <div class=\"header-stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n {{categories.length}} categories\n </span>\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{getTotalTypeCount()}} types\n </span>\n </div>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-primary\" *ngIf=\"UserCanCreate\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Category</span>\n </button>\n </div>\n </div>\n\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <div class=\"toolbar-left\">\n <div class=\"search-container\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search categories...\"\n [value]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n />\n <button class=\"search-clear\" *ngIf=\"searchText\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"toolbar-right\">\n <button class=\"btn-text\" (click)=\"expandAll()\" title=\"Expand All\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n <button class=\"btn-text\" (click)=\"collapseAll()\" title=\"Collapse All\">\n <i class=\"fa-solid fa-compress\"></i>\n </button>\n <button class=\"btn-icon\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"categories-layout\">\n <!-- Tree Container -->\n <div class=\"tree-panel\">\n <div class=\"tree-container\" *ngIf=\"categoryTree.length > 0\">\n <div\n class=\"tree-node\"\n *ngFor=\"let node of getFlattenedNodes(); let i = index\"\n [class.selected]=\"selectedNode?.category?.ID === node.category.ID\"\n [style.padding-left.px]=\"12 + (node.level * 20)\"\n (click)=\"selectNode(node)\"\n >\n <div class=\"node-content\">\n <button\n class=\"expand-btn\"\n *ngIf=\"node.children.length > 0\"\n (click)=\"toggleExpand(node, $event)\"\n >\n <i [class]=\"node.expanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n </button>\n <span class=\"expand-placeholder\" *ngIf=\"node.children.length === 0\"></span>\n\n <div class=\"node-icon\" [style.backgroundColor]=\"getCategoryColor(i) + '15'\" [style.color]=\"getCategoryColor(i)\">\n <i [class]=\"node.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n\n <div class=\"node-info\">\n <div class=\"node-name\">{{node.category.Name}}</div>\n <div class=\"node-description\" *ngIf=\"node.category.Description\">\n {{node.category.Description | slice:0:50}}{{node.category.Description.length > 50 ? '...' : ''}}\n </div>\n </div>\n\n <div class=\"node-badges\">\n <span class=\"badge types\" *ngIf=\"node.typeCount > 0\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{node.typeCount}}\n </span>\n <span class=\"badge children\" *ngIf=\"node.children.length > 0\">\n <i class=\"fa-solid fa-folder\"></i>\n {{node.children.length}}\n </span>\n </div>\n\n <div class=\"node-actions\">\n <button\n class=\"action-btn\"\n *ngIf=\"UserCanUpdate\"\n (click)=\"editCategory(node, $event)\"\n title=\"Edit\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button\n class=\"action-btn danger\"\n *ngIf=\"UserCanDelete && node.children.length === 0 && node.typeCount === 0\"\n (click)=\"deleteCategory(node, $event)\"\n title=\"Delete\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"empty-state\" *ngIf=\"categoryTree.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-folder-open\"></i>\n </div>\n <h3>No Categories</h3>\n <p *ngIf=\"searchText\">\n No categories match your search.\n <button class=\"btn-link\" (click)=\"clearSearch()\">Clear search</button>\n </p>\n <p *ngIf=\"!searchText\">\n Get started by creating your first category.\n </p>\n <button class=\"btn-primary\" *ngIf=\"UserCanCreate && !searchText\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Category\n </button>\n </div>\n </div>\n\n <!-- Detail Panel -->\n <div class=\"detail-panel\" *ngIf=\"selectedNode\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(0) + '15'\" [style.color]=\"getCategoryColor(0)\">\n <i [class]=\"selectedNode.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedNode.category.Name}}</h2>\n <span class=\"level-badge\" *ngIf=\"selectedNode.level > 0\">\n Level {{selectedNode.level + 1}}\n </span>\n </div>\n <div class=\"detail-actions\">\n <button class=\"action-btn\" *ngIf=\"UserCanUpdate\" (click)=\"editCategory(selectedNode)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button class=\"close-btn\" (click)=\"selectedNode = null\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"detail-body\">\n <!-- Stats -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.typeCount}}</div>\n <div class=\"stat-label\">Credential Types</div>\n </div>\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.children.length}}</div>\n <div class=\"stat-label\">Subcategories</div>\n </div>\n </div>\n\n <!-- Description -->\n <div class=\"description-section\" *ngIf=\"selectedNode.category.Description\">\n <h3>\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h3>\n <p class=\"description\">{{selectedNode.category.Description}}</p>\n </div>\n\n <!-- Types in Category -->\n <div class=\"types-section\" *ngIf=\"selectedNode.typeCount > 0\">\n <h3>\n <i class=\"fa-solid fa-shapes\"></i>\n Credential Types\n </h3>\n <div class=\"type-list\">\n <div class=\"type-item\" *ngFor=\"let type of getTypesForCategory(selectedNode.category.Name)\">\n <div class=\"type-icon\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n <div class=\"type-desc\" *ngIf=\"type.Description\">{{type.Description | slice:0:60}}</div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Subcategories -->\n <div class=\"subcategories-section\" *ngIf=\"selectedNode.children.length > 0\">\n <h3>\n <i class=\"fa-solid fa-folder-tree\"></i>\n Subcategories\n </h3>\n <div class=\"subcategory-list\">\n <div class=\"subcategory-item\" *ngFor=\"let child of selectedNode.children\" (click)=\"selectNode(child)\">\n <i [class]=\"child.category.IconClass || 'fa-solid fa-folder'\"></i>\n <span>{{child.category.Name}}</span>\n <span class=\"sub-type-count\" *ngIf=\"child.typeCount > 0\">{{child.typeCount}} types</span>\n </div>\n </div>\n </div>\n\n <!-- Quick Actions -->\n <div class=\"detail-quick-actions\">\n <button\n class=\"btn-secondary\"\n *ngIf=\"selectedNode.typeCount > 0\"\n (click)=\"viewTypesForCategory(selectedNode.category.Name)\"\n >\n <i class=\"fa-solid fa-shapes\"></i>\n View Types\n </button>\n <button\n class=\"btn-primary\"\n (click)=\"createCredentialWithCategory(selectedNode.category.ID)\"\n >\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n\n </div>\n </div>\n\n <!-- No Selection -->\n <div class=\"no-selection\" *ngIf=\"!selectedNode && categoryTree.length > 0\">\n <div class=\"no-selection-icon\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n </div>\n <h3>Select a Category</h3>\n <p>Click on a category to view its details and credential types</p>\n </div>\n </div>\n </ng-container>\n</div>\n\n<!-- Category Edit Panel -->\n<mj-credential-category-edit-panel\n #categoryEditPanel\n (saved)=\"onCategorySaved($any($event))\"\n (deleted)=\"onCategoryDeleted($any($event))\"\n></mj-credential-category-edit-panel>\n", styles: [".categories-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n/* Header */\n.categories-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.categories-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.header-stats {\n display: flex;\n gap: 16px;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n.stat-item i {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Primary Button */\n.btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);\n}\n\n.btn-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n.btn-primary:active {\n transform: translateY(0);\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Search */\n.search-container {\n position: relative;\n flex: 1;\n max-width: 320px;\n}\n\n.search-container i.fa-search {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container input {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container input:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-container input::placeholder {\n color: var(--text-secondary, #9ca3af);\n}\n\n.search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n transition: all 0.2s ease;\n}\n\n.search-clear:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n/* Toolbar Buttons */\n.btn-text {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-text:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n/* Layout */\n.categories-layout {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n/* Tree Panel */\n.tree-panel {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n/* Tree Node */\n.tree-node {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node:last-child {\n border-bottom: none;\n}\n\n.tree-node:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.tree-node.selected {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.08) 0%, rgba(99, 102, 241, 0.04) 100%);\n border-left: 3px solid var(--accent-color, #6366f1);\n}\n\n.node-content {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n/* Expand Button */\n.expand-btn {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--text-secondary, #9ca3af);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--button-hover, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n.expand-btn i {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder {\n width: 24px;\n flex-shrink: 0;\n}\n\n/* Node Icon */\n.node-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon i {\n font-size: 14px;\n}\n\n/* Node Info */\n.node-info {\n flex: 1;\n min-width: 0;\n}\n\n.node-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n line-height: 1.3;\n}\n\n.node-description {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Node Badges */\n.node-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.badge.children {\n background: var(--badge-background, #f3f4f6);\n color: var(--text-secondary, #6b7280);\n}\n\n.badge i {\n font-size: 10px;\n}\n\n/* Node Actions */\n.node-actions {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node:hover .node-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover {\n background: var(--accent-color, #6366f1);\n color: white;\n}\n\n.action-btn.danger:hover {\n background: #ef4444;\n color: white;\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n/* Detail Panel */\n.detail-panel {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.detail-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon i {\n font-size: 20px;\n}\n\n.detail-title {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title h2 {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 10px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn:hover {\n background: var(--hover-background, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n/* Detail Body */\n.detail-body {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n/* Detail Stats */\n.detail-stats {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat {\n background: var(--stat-background, #f9fafb);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat .stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--accent-color, #6366f1);\n line-height: 1;\n}\n\n.detail-stat .stat-label {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n/* Description Section */\n.description-section {\n margin-bottom: 20px;\n}\n\n.description-section h3,\n.types-section h3,\n.subcategories-section h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--text-secondary, #6b7280);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section h3 i,\n.types-section h3 i,\n.subcategories-section h3 i {\n font-size: 12px;\n}\n\n.description {\n font-size: 14px;\n color: var(--text-primary, #374151);\n line-height: 1.6;\n margin: 0;\n}\n\n/* Types Section */\n.types-section {\n margin-bottom: 20px;\n}\n\n.type-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.type-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(99, 102, 241, 0.1);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon i {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.type-desc {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Subcategories Section */\n.subcategories-section {\n margin-bottom: 20px;\n}\n\n.subcategory-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.subcategory-item i {\n font-size: 14px;\n color: var(--accent-color, #6366f1);\n}\n\n.subcategory-item span {\n flex: 1;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.sub-type-count {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n/* Quick Actions */\n.detail-quick-actions {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions .btn-secondary,\n.detail-quick-actions .btn-primary {\n flex: 1;\n}\n\n.btn-secondary {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--hover-background, #e5e7eb);\n}\n\n/* No Selection State */\n.no-selection {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon i {\n font-size: 24px;\n color: var(--text-secondary, #9ca3af);\n}\n\n.no-selection h3 {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.no-selection p {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0 0 20px 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .detail-panel,\n .no-selection {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container {\n padding: 16px;\n }\n\n .categories-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left,\n .toolbar-right {\n width: 100%;\n }\n\n .search-container {\n max-width: none;\n }\n\n .toolbar-right {\n justify-content: flex-end;\n }\n}\n"] }]
815
+ args: [{ standalone: false, selector: 'mj-credentials-categories-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"categories-container\">\n @if (isLoading) {\n <mj-loading text=\"Loading categories...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Header -->\n <div class=\"categories-header\">\n <div class=\"header-info\">\n <h2 class=\"categories-title\">Categories</h2>\n <div class=\"header-stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n {{categories.length}} categories\n </span>\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{getTotalTypeCount()}} types\n </span>\n </div>\n </div>\n <div class=\"header-actions\">\n @if (UserCanCreate) {\n <button class=\"btn-primary\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Category</span>\n </button>\n }\n </div>\n </div>\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <div class=\"toolbar-left\">\n <div class=\"search-container\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search categories...\"\n [value]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n />\n @if (searchText) {\n <button class=\"search-clear\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"toolbar-right\">\n <button class=\"btn-text\" (click)=\"expandAll()\" title=\"Expand All\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n <button class=\"btn-text\" (click)=\"collapseAll()\" title=\"Collapse All\">\n <i class=\"fa-solid fa-compress\"></i>\n </button>\n <button class=\"btn-icon\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <div class=\"categories-layout\">\n <!-- Tree Container -->\n <div class=\"tree-panel\">\n @if (categoryTree.length > 0) {\n <div class=\"tree-container\">\n @for (node of getFlattenedNodes(); track node; let i = $index) {\n <div\n class=\"tree-node\"\n [class.selected]=\"selectedNode?.category?.ID === node.category.ID\"\n [style.padding-left.px]=\"12 + (node.level * 20)\"\n (click)=\"selectNode(node)\"\n >\n <div class=\"node-content\">\n @if (node.children.length > 0) {\n <button\n class=\"expand-btn\"\n (click)=\"toggleExpand(node, $event)\"\n >\n <i [class]=\"node.expanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n </button>\n }\n @if (node.children.length === 0) {\n <span class=\"expand-placeholder\"></span>\n }\n <div class=\"node-icon\" [style.backgroundColor]=\"getCategoryColor(i) + '15'\" [style.color]=\"getCategoryColor(i)\">\n <i [class]=\"node.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n <div class=\"node-info\">\n <div class=\"node-name\">{{node.category.Name}}</div>\n @if (node.category.Description) {\n <div class=\"node-description\">\n {{node.category.Description | slice:0:50}}{{node.category.Description.length > 50 ? '...' : ''}}\n </div>\n }\n </div>\n <div class=\"node-badges\">\n @if (node.typeCount > 0) {\n <span class=\"badge types\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{node.typeCount}}\n </span>\n }\n @if (node.children.length > 0) {\n <span class=\"badge children\">\n <i class=\"fa-solid fa-folder\"></i>\n {{node.children.length}}\n </span>\n }\n </div>\n <div class=\"node-actions\">\n @if (UserCanUpdate) {\n <button\n class=\"action-btn\"\n (click)=\"editCategory(node, $event)\"\n title=\"Edit\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && node.children.length === 0 && node.typeCount === 0) {\n <button\n class=\"action-btn danger\"\n (click)=\"deleteCategory(node, $event)\"\n title=\"Delete\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n @if (categoryTree.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-folder-open\"></i>\n </div>\n <h3>No Categories</h3>\n @if (searchText) {\n <p>\n No categories match your search.\n <button class=\"btn-link\" (click)=\"clearSearch()\">Clear search</button>\n </p>\n }\n @if (!searchText) {\n <p>\n Get started by creating your first category.\n </p>\n }\n @if (UserCanCreate && !searchText) {\n <button class=\"btn-primary\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Category\n </button>\n }\n </div>\n }\n </div>\n <!-- Detail Panel -->\n @if (selectedNode) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(0) + '15'\" [style.color]=\"getCategoryColor(0)\">\n <i [class]=\"selectedNode.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedNode.category.Name}}</h2>\n @if (selectedNode.level > 0) {\n <span class=\"level-badge\">\n Level {{selectedNode.level + 1}}\n </span>\n }\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button class=\"action-btn\" (click)=\"editCategory(selectedNode)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"selectedNode = null\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.typeCount}}</div>\n <div class=\"stat-label\">Credential Types</div>\n </div>\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.children.length}}</div>\n <div class=\"stat-label\">Subcategories</div>\n </div>\n </div>\n <!-- Description -->\n @if (selectedNode.category.Description) {\n <div class=\"description-section\">\n <h3>\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h3>\n <p class=\"description\">{{selectedNode.category.Description}}</p>\n </div>\n }\n <!-- Types in Category -->\n @if (selectedNode.typeCount > 0) {\n <div class=\"types-section\">\n <h3>\n <i class=\"fa-solid fa-shapes\"></i>\n Credential Types\n </h3>\n <div class=\"type-list\">\n @for (type of getTypesForCategory(selectedNode.category.Name); track type) {\n <div class=\"type-item\">\n <div class=\"type-icon\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-desc\">{{type.Description | slice:0:60}}</div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Subcategories -->\n @if (selectedNode.children.length > 0) {\n <div class=\"subcategories-section\">\n <h3>\n <i class=\"fa-solid fa-folder-tree\"></i>\n Subcategories\n </h3>\n <div class=\"subcategory-list\">\n @for (child of selectedNode.children; track child) {\n <div class=\"subcategory-item\" (click)=\"selectNode(child)\">\n <i [class]=\"child.category.IconClass || 'fa-solid fa-folder'\"></i>\n <span>{{child.category.Name}}</span>\n @if (child.typeCount > 0) {\n <span class=\"sub-type-count\">{{child.typeCount}} types</span>\n }\n </div>\n }\n </div>\n </div>\n }\n <!-- Quick Actions -->\n <div class=\"detail-quick-actions\">\n @if (selectedNode.typeCount > 0) {\n <button\n class=\"btn-secondary\"\n (click)=\"viewTypesForCategory(selectedNode.category.Name)\"\n >\n <i class=\"fa-solid fa-shapes\"></i>\n View Types\n </button>\n }\n <button\n class=\"btn-primary\"\n (click)=\"createCredentialWithCategory(selectedNode.category.ID)\"\n >\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedNode && categoryTree.length > 0) {\n <div class=\"no-selection\">\n <div class=\"no-selection-icon\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n </div>\n <h3>Select a Category</h3>\n <p>Click on a category to view its details and credential types</p>\n </div>\n }\n </div>\n }\n</div>\n\n<!-- Category Edit Panel -->\n<mj-credential-category-edit-panel\n #categoryEditPanel\n (saved)=\"onCategorySaved($any($event))\"\n (deleted)=\"onCategoryDeleted($any($event))\"\n></mj-credential-category-edit-panel>\n", styles: [".categories-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n/* Header */\n.categories-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.categories-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.header-stats {\n display: flex;\n gap: 16px;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n.stat-item i {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Primary Button */\n.btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);\n}\n\n.btn-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4);\n}\n\n.btn-primary:active {\n transform: translateY(0);\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Search */\n.search-container {\n position: relative;\n flex: 1;\n max-width: 320px;\n}\n\n.search-container i.fa-search {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container input {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container input:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-container input::placeholder {\n color: var(--text-secondary, #9ca3af);\n}\n\n.search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n transition: all 0.2s ease;\n}\n\n.search-clear:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n/* Toolbar Buttons */\n.btn-text {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-text:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon:hover {\n background: var(--hover-background, #f3f4f6);\n color: var(--text-primary, #1f2937);\n}\n\n/* Layout */\n.categories-layout {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n/* Tree Panel */\n.tree-panel {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n/* Tree Node */\n.tree-node {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node:last-child {\n border-bottom: none;\n}\n\n.tree-node:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.tree-node.selected {\n background: linear-gradient(135deg, rgba(99, 102, 241, 0.08) 0%, rgba(99, 102, 241, 0.04) 100%);\n border-left: 3px solid var(--accent-color, #6366f1);\n}\n\n.node-content {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n/* Expand Button */\n.expand-btn {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--text-secondary, #9ca3af);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--button-hover, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n.expand-btn i {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder {\n width: 24px;\n flex-shrink: 0;\n}\n\n/* Node Icon */\n.node-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon i {\n font-size: 14px;\n}\n\n/* Node Info */\n.node-info {\n flex: 1;\n min-width: 0;\n}\n\n.node-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--text-primary, #1f2937);\n line-height: 1.3;\n}\n\n.node-description {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Node Badges */\n.node-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.badge.children {\n background: var(--badge-background, #f3f4f6);\n color: var(--text-secondary, #6b7280);\n}\n\n.badge i {\n font-size: 10px;\n}\n\n/* Node Actions */\n.node-actions {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node:hover .node-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover {\n background: var(--accent-color, #6366f1);\n color: white;\n}\n\n.action-btn.danger:hover {\n background: #ef4444;\n color: white;\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n/* Detail Panel */\n.detail-panel {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.detail-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon i {\n font-size: 20px;\n}\n\n.detail-title {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title h2 {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 10px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn:hover {\n background: var(--hover-background, #e5e7eb);\n color: var(--text-primary, #1f2937);\n}\n\n/* Detail Body */\n.detail-body {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n/* Detail Stats */\n.detail-stats {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat {\n background: var(--stat-background, #f9fafb);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat .stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--accent-color, #6366f1);\n line-height: 1;\n}\n\n.detail-stat .stat-label {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n/* Description Section */\n.description-section {\n margin-bottom: 20px;\n}\n\n.description-section h3,\n.types-section h3,\n.subcategories-section h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--text-secondary, #6b7280);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section h3 i,\n.types-section h3 i,\n.subcategories-section h3 i {\n font-size: 12px;\n}\n\n.description {\n font-size: 14px;\n color: var(--text-primary, #374151);\n line-height: 1.6;\n margin: 0;\n}\n\n/* Types Section */\n.types-section {\n margin-bottom: 20px;\n}\n\n.type-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.type-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(99, 102, 241, 0.1);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon i {\n font-size: 12px;\n color: var(--accent-color, #6366f1);\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #1f2937);\n}\n\n.type-desc {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Subcategories Section */\n.subcategories-section {\n margin-bottom: 20px;\n}\n\n.subcategory-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--item-background, #f9fafb);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item:hover {\n background: var(--hover-background, #f3f4f6);\n}\n\n.subcategory-item i {\n font-size: 14px;\n color: var(--accent-color, #6366f1);\n}\n\n.subcategory-item span {\n flex: 1;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.sub-type-count {\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n/* Quick Actions */\n.detail-quick-actions {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions .btn-secondary,\n.detail-quick-actions .btn-primary {\n flex: 1;\n}\n\n.btn-secondary {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--button-background, #f3f4f6);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--hover-background, #e5e7eb);\n}\n\n/* No Selection State */\n.no-selection {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon i {\n font-size: 24px;\n color: var(--text-secondary, #9ca3af);\n}\n\n.no-selection h3 {\n font-size: 16px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.no-selection p {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0 0 20px 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .detail-panel,\n .no-selection {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container {\n padding: 16px;\n }\n\n .categories-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left,\n .toolbar-right {\n width: 100%;\n }\n\n .search-container {\n max-width: none;\n }\n\n .toolbar-right {\n justify-content: flex-end;\n }\n}\n"] }]
811
816
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i1.NavigationService }], { categoryEditPanel: [{
812
817
  type: ViewChild,
813
818
  args: ['categoryEditPanel']
814
819
  }] }); })();
815
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsCategoriesResourceComponent, { className: "CredentialsCategoriesResourceComponent", filePath: "src/Credentials/components/credentials-categories-resource.component.ts", lineNumber: 28 }); })();
820
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsCategoriesResourceComponent, { className: "CredentialsCategoriesResourceComponent", filePath: "src/credentials/components/credentials-categories-resource.component.ts", lineNumber: 24 }); })();
816
821
  //# sourceMappingURL=credentials-categories-resource.component.js.map