@memberjunction/ng-dashboards 3.4.0 → 4.1.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 (458) hide show
  1. package/README.md +102 -339
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts +12 -5
  3. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  4. package/dist/AI/components/agents/agent-configuration.component.js +103 -44
  5. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
  7. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  8. package/dist/AI/components/agents/agent-editor.component.js +149 -211
  9. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  10. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
  11. package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
  12. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  13. package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
  14. package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
  15. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  16. package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
  17. package/dist/AI/components/charts/time-series-chart.component.js +6 -7
  18. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  19. package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
  20. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  21. package/dist/AI/components/execution-monitoring.component.js +33 -37
  22. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  23. package/dist/AI/components/models/model-management.component.d.ts +3 -6
  24. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  25. package/dist/AI/components/models/model-management.component.js +34 -27
  26. package/dist/AI/components/models/model-management.component.js.map +1 -1
  27. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  28. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
  29. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  30. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
  31. package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
  32. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  33. package/dist/AI/components/prompts/prompt-management.component.d.ts +3 -6
  34. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  35. package/dist/AI/components/prompts/prompt-management.component.js +34 -32
  36. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  37. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  38. package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
  39. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  40. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
  41. package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
  42. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  43. package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
  44. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  45. package/dist/AI/components/system/system-configuration.component.js +26 -27
  46. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  47. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  48. package/dist/AI/components/widgets/kpi-card.component.js +52 -42
  49. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  50. package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
  51. package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
  52. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  53. package/dist/APIKeys/api-applications-panel.component.d.ts +0 -2
  54. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  55. package/dist/APIKeys/api-applications-panel.component.js +193 -189
  56. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  57. package/dist/APIKeys/api-key-create-dialog.component.d.ts +0 -2
  58. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  59. package/dist/APIKeys/api-key-create-dialog.component.js +175 -180
  60. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  61. package/dist/APIKeys/api-key-edit-panel.component.d.ts +0 -2
  62. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  63. package/dist/APIKeys/api-key-edit-panel.component.js +231 -225
  64. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  65. package/dist/APIKeys/api-key-list.component.d.ts +0 -2
  66. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  67. package/dist/APIKeys/api-key-list.component.js +113 -114
  68. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  69. package/dist/APIKeys/api-keys-resource.component.d.ts +0 -2
  70. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  71. package/dist/APIKeys/api-keys-resource.component.js +294 -302
  72. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  73. package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
  74. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  75. package/dist/APIKeys/api-scopes-panel.component.js +151 -155
  76. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  77. package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
  78. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  79. package/dist/APIKeys/api-usage-panel.component.js +237 -234
  80. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  81. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  82. package/dist/Actions/components/actions-list-view.component.js +15 -14
  83. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  84. package/dist/Actions/components/actions-overview.component.d.ts +3 -6
  85. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  86. package/dist/Actions/components/actions-overview.component.js +17 -19
  87. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  88. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  89. package/dist/Actions/components/categories-list-view.component.js +6 -6
  90. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  91. package/dist/Actions/components/code-management.component.d.ts +0 -4
  92. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  93. package/dist/Actions/components/code-management.component.js +3 -9
  94. package/dist/Actions/components/code-management.component.js.map +1 -1
  95. package/dist/Actions/components/entity-integration.component.d.ts +0 -4
  96. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  97. package/dist/Actions/components/entity-integration.component.js +3 -9
  98. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  99. package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
  100. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  101. package/dist/Actions/components/execution-monitoring.component.js +13 -16
  102. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  103. package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
  104. package/dist/Actions/components/executions-list-view.component.js +3 -3
  105. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  106. package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -1
  107. package/dist/Actions/components/explorer/action-breadcrumb.component.js +6 -6
  108. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  109. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  110. package/dist/Actions/components/explorer/action-card.component.js +11 -10
  111. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  112. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -4
  113. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  114. package/dist/Actions/components/explorer/action-explorer.component.js +10 -14
  115. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  116. package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -1
  117. package/dist/Actions/components/explorer/action-list-item.component.js +8 -8
  118. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -1
  120. package/dist/Actions/components/explorer/action-toolbar.component.js +15 -14
  121. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  122. package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -1
  123. package/dist/Actions/components/explorer/action-tree-panel.component.js +11 -10
  124. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  125. package/dist/Actions/components/explorer/index.d.ts +0 -1
  126. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  127. package/dist/Actions/components/explorer/index.js +0 -4
  128. package/dist/Actions/components/explorer/index.js.map +1 -1
  129. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  130. package/dist/Actions/components/explorer/new-action-panel.component.js +10 -10
  131. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  132. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  133. package/dist/Actions/components/explorer/new-category-panel.component.js +8 -8
  134. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  135. package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
  136. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  137. package/dist/Actions/components/scheduled-actions.component.js +3 -9
  138. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  139. package/dist/Actions/components/security-permissions.component.d.ts +0 -4
  140. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  141. package/dist/Actions/components/security-permissions.component.js +3 -9
  142. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  143. package/dist/Actions/index.d.ts +0 -7
  144. package/dist/Actions/index.d.ts.map +1 -1
  145. package/dist/Actions/index.js +0 -8
  146. package/dist/Actions/index.js.map +1 -1
  147. package/dist/Communication/communication-dashboard.component.d.ts +0 -1
  148. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  149. package/dist/Communication/communication-dashboard.component.js +38 -51
  150. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  151. package/dist/Communication/communication-logs-resource.component.d.ts +0 -4
  152. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  153. package/dist/Communication/communication-logs-resource.component.js +112 -108
  154. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  155. package/dist/Communication/communication-monitor-resource.component.d.ts +0 -4
  156. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  157. package/dist/Communication/communication-monitor-resource.component.js +210 -201
  158. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  159. package/dist/Communication/communication-providers-resource.component.d.ts +0 -4
  160. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  161. package/dist/Communication/communication-providers-resource.component.js +136 -124
  162. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  163. package/dist/Communication/communication-runs-resource.component.d.ts +0 -4
  164. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  165. package/dist/Communication/communication-runs-resource.component.js +91 -88
  166. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-templates-resource.component.d.ts +0 -4
  168. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-templates-resource.component.js +139 -122
  170. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  171. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +0 -4
  172. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  173. package/dist/ComponentStudio/component-studio-dashboard.component.js +21 -20
  174. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  175. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  176. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +11 -12
  177. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  178. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  179. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
  180. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  181. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  182. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
  183. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  184. package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -1
  185. package/dist/ComponentStudio/components/browser/component-browser.component.js +23 -21
  186. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  187. package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -1
  188. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +10 -10
  189. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  190. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  191. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +13 -13
  192. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  193. package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -1
  194. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +7 -7
  195. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  196. package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -1
  197. package/dist/ComponentStudio/components/editors/spec-editor.component.js +5 -5
  198. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  199. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -1
  200. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +4 -4
  201. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  202. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  203. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +9 -9
  204. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  205. package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
  206. package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
  207. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  208. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  209. package/dist/ComponentStudio/components/workspace/component-preview.component.js +10 -9
  210. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  211. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  212. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +4 -4
  213. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  214. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
  215. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  216. package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
  217. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  218. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +0 -1
  219. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  220. package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
  221. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  222. package/dist/Credentials/components/credentials-list-resource.component.d.ts +0 -1
  223. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  224. package/dist/Credentials/components/credentials-list-resource.component.js +251 -240
  225. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  226. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
  227. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  228. package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
  229. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  230. package/dist/Credentials/components/credentials-types-resource.component.d.ts +0 -1
  231. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  232. package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
  233. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  234. package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
  235. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  236. package/dist/Credentials/credentials-dashboard.component.js +31 -44
  237. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  238. package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
  239. package/dist/Credentials/pipes/group-by.pipe.js +2 -1
  240. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  241. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
  242. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  243. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
  244. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  245. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  246. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
  247. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  248. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
  249. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
  250. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  251. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  252. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
  253. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  254. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  255. package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
  256. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  257. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +2 -4
  258. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  259. package/dist/DataExplorer/data-explorer-dashboard.component.js +83 -64
  260. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  261. package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
  262. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  263. package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
  264. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  265. package/dist/DataExplorer/index.d.ts +2 -2
  266. package/dist/DataExplorer/index.d.ts.map +1 -1
  267. package/dist/DataExplorer/index.js +2 -2
  268. package/dist/DataExplorer/index.js.map +1 -1
  269. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
  270. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  271. package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
  272. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  273. package/dist/Home/home-application.d.ts +109 -27
  274. package/dist/Home/home-application.d.ts.map +1 -1
  275. package/dist/Home/home-application.js +351 -75
  276. package/dist/Home/home-application.js.map +1 -1
  277. package/dist/Home/home-dashboard.component.d.ts +48 -12
  278. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  279. package/dist/Home/home-dashboard.component.js +267 -187
  280. package/dist/Home/home-dashboard.component.js.map +1 -1
  281. package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
  282. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  283. package/dist/Lists/components/lists-browse-resource.component.js +761 -685
  284. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  285. package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
  286. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  287. package/dist/Lists/components/lists-categories-resource.component.js +340 -316
  288. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  289. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -1
  290. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  291. package/dist/Lists/components/lists-my-lists-resource.component.js +530 -482
  292. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  293. package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
  294. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  295. package/dist/Lists/components/lists-operations-resource.component.js +508 -455
  296. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  297. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  298. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
  299. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  300. package/dist/Lists/index.d.ts +0 -1
  301. package/dist/Lists/index.d.ts.map +1 -1
  302. package/dist/Lists/index.js +0 -11
  303. package/dist/Lists/index.js.map +1 -1
  304. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +0 -4
  305. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  306. package/dist/MCP/components/mcp-connection-dialog.component.js +33 -39
  307. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  308. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +0 -4
  309. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -1
  310. package/dist/MCP/components/mcp-log-detail-panel.component.js +42 -44
  311. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  312. package/dist/MCP/components/mcp-server-dialog.component.d.ts +3 -4
  313. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  314. package/dist/MCP/components/mcp-server-dialog.component.js +186 -77
  315. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  316. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +0 -4
  317. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
  318. package/dist/MCP/components/mcp-test-tool-dialog.component.js +187 -187
  319. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  320. package/dist/MCP/index.d.ts +5 -5
  321. package/dist/MCP/index.d.ts.map +1 -1
  322. package/dist/MCP/index.js +5 -5
  323. package/dist/MCP/index.js.map +1 -1
  324. package/dist/MCP/mcp-dashboard.component.d.ts +65 -7
  325. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  326. package/dist/MCP/mcp-dashboard.component.js +976 -697
  327. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  328. package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
  329. package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
  330. package/dist/MCP/mcp-filter-panel.component.js +288 -0
  331. package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
  332. package/dist/MCP/mcp-resource.component.d.ts +11 -5
  333. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  334. package/dist/MCP/mcp-resource.component.js +8 -9
  335. package/dist/MCP/mcp-resource.component.js.map +1 -1
  336. package/dist/MCP/mcp.module.d.ts +16 -19
  337. package/dist/MCP/mcp.module.d.ts.map +1 -1
  338. package/dist/MCP/mcp.module.js +17 -26
  339. package/dist/MCP/mcp.module.js.map +1 -1
  340. package/dist/MCP/services/mcp-tools.service.d.ts +10 -4
  341. package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -1
  342. package/dist/MCP/services/mcp-tools.service.js +5 -6
  343. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  344. package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
  345. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  346. package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
  347. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  348. package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -1
  349. package/dist/Scheduling/components/job-slideout.component.js +117 -116
  350. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  351. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +0 -4
  352. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  353. package/dist/Scheduling/components/scheduling-activity-resource.component.js +3 -9
  354. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  355. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  356. package/dist/Scheduling/components/scheduling-activity.component.js +134 -134
  357. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  358. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +0 -4
  359. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  360. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -9
  361. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  362. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  363. package/dist/Scheduling/components/scheduling-jobs.component.js +102 -97
  364. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  365. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +0 -4
  366. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  367. package/dist/Scheduling/components/scheduling-overview-resource.component.js +3 -9
  368. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  369. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  370. package/dist/Scheduling/components/scheduling-overview.component.js +127 -122
  371. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  372. package/dist/Scheduling/scheduling-dashboard.component.d.ts +0 -1
  373. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  374. package/dist/Scheduling/scheduling-dashboard.component.js +35 -43
  375. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  376. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
  377. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  378. package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
  379. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  380. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  381. package/dist/Testing/components/testing-analytics-resource.component.js +3 -3
  382. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  383. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  384. package/dist/Testing/components/testing-analytics.component.js +30 -30
  385. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  386. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +3 -3
  388. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  389. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  390. package/dist/Testing/components/testing-dashboard-tab.component.js +7 -7
  391. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  392. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  393. package/dist/Testing/components/testing-explorer-resource.component.js +3 -3
  394. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  395. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  396. package/dist/Testing/components/testing-explorer.component.js +42 -35
  397. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  398. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  399. package/dist/Testing/components/testing-review-resource.component.js +3 -3
  400. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  401. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  402. package/dist/Testing/components/testing-review.component.js +16 -16
  403. package/dist/Testing/components/testing-review.component.js.map +1 -1
  404. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  405. package/dist/Testing/components/testing-runs-resource.component.js +3 -3
  406. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  407. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  408. package/dist/Testing/components/testing-runs.component.js +15 -15
  409. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  410. package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
  411. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
  412. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  413. package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
  414. package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
  415. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  416. package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
  417. package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
  418. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  419. package/dist/Testing/testing-dashboard.component.d.ts +0 -1
  420. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  421. package/dist/Testing/testing-dashboard.component.js +9 -8
  422. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  423. package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
  424. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
  425. package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
  426. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
  427. package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
  428. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
  429. package/dist/VersionHistory/components/graph-resource.component.js +521 -0
  430. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
  431. package/dist/VersionHistory/components/index.d.ts +5 -0
  432. package/dist/VersionHistory/components/index.d.ts.map +1 -0
  433. package/dist/VersionHistory/components/index.js +5 -0
  434. package/dist/VersionHistory/components/index.js.map +1 -0
  435. package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
  436. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
  437. package/dist/VersionHistory/components/labels-resource.component.js +968 -0
  438. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
  439. package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
  440. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
  441. package/dist/VersionHistory/components/restore-resource.component.js +472 -0
  442. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
  443. package/dist/VersionHistory/index.d.ts +2 -0
  444. package/dist/VersionHistory/index.d.ts.map +1 -0
  445. package/dist/VersionHistory/index.js +2 -0
  446. package/dist/VersionHistory/index.js.map +1 -0
  447. package/dist/module.d.ts +42 -36
  448. package/dist/module.d.ts.map +1 -1
  449. package/dist/module.js +41 -7
  450. package/dist/module.js.map +1 -1
  451. package/dist/public-api.d.ts +20 -19
  452. package/dist/public-api.d.ts.map +1 -1
  453. package/dist/public-api.js +22 -120
  454. package/dist/public-api.js.map +1 -1
  455. package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
  456. package/dist/shared/pipes/highlight-search.pipe.js +2 -1
  457. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  458. package/package.json +64 -62
@@ -15,15 +15,15 @@ import * as i2 from "@angular/common";
15
15
  import * as i3 from "@angular/forms";
16
16
  import * as i4 from "@memberjunction/ng-shared-generic";
17
17
  const _c0 = a0 => ({ vm: a0 });
18
- function ListsCategoriesResource_div_11_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "div", 12);
20
- i0.ɵɵelement(1, "mj-loading", 13);
18
+ function ListsCategoriesResource_Conditional_11_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "div", 8);
20
+ i0.ɵɵelement(1, "mj-loading", 12);
21
21
  i0.ɵɵelementEnd();
22
22
  } }
23
- function ListsCategoriesResource_div_12_Template(rf, ctx) { if (rf & 1) {
23
+ function ListsCategoriesResource_Conditional_12_Template(rf, ctx) { if (rf & 1) {
24
24
  const _r2 = i0.ɵɵgetCurrentView();
25
- i0.ɵɵelementStart(0, "div", 14)(1, "div", 15);
26
- i0.ɵɵelement(2, "div", 16)(3, "i", 17);
25
+ i0.ɵɵelementStart(0, "div", 9)(1, "div", 13);
26
+ i0.ɵɵelement(2, "div", 14)(3, "i", 15);
27
27
  i0.ɵɵelementEnd();
28
28
  i0.ɵɵelementStart(4, "h3");
29
29
  i0.ɵɵtext(5, "No Categories Yet");
@@ -31,41 +31,38 @@ function ListsCategoriesResource_div_12_Template(rf, ctx) { if (rf & 1) {
31
31
  i0.ɵɵelementStart(6, "p");
32
32
  i0.ɵɵtext(7, "Categories help you organize lists into logical groups.");
33
33
  i0.ɵɵelementEnd();
34
- i0.ɵɵelementStart(8, "div", 18)(9, "div", 19);
35
- i0.ɵɵelement(10, "i", 20);
34
+ i0.ɵɵelementStart(8, "div", 16)(9, "div", 17);
35
+ i0.ɵɵelement(10, "i", 18);
36
36
  i0.ɵɵelementStart(11, "span");
37
37
  i0.ɵɵtext(12, "Create hierarchical folder structures");
38
38
  i0.ɵɵelementEnd()();
39
- i0.ɵɵelementStart(13, "div", 19);
40
- i0.ɵɵelement(14, "i", 20);
39
+ i0.ɵɵelementStart(13, "div", 17);
40
+ i0.ɵɵelement(14, "i", 18);
41
41
  i0.ɵɵelementStart(15, "span");
42
42
  i0.ɵɵtext(16, "Quickly find related lists");
43
43
  i0.ɵɵelementEnd()()();
44
- i0.ɵɵelementStart(17, "button", 21);
45
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_12_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createCategory()); });
44
+ i0.ɵɵelementStart(17, "button", 19);
45
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_12_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createCategory()); });
46
46
  i0.ɵɵelement(18, "i", 7);
47
47
  i0.ɵɵtext(19, " Create Your First Category ");
48
48
  i0.ɵɵelementEnd()();
49
49
  } }
50
- function ListsCategoriesResource_div_13_ng_container_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
50
+ function ListsCategoriesResource_Conditional_13_For_10_ng_container_0_Template(rf, ctx) { if (rf & 1) {
51
51
  i0.ɵɵelementContainer(0);
52
52
  } }
53
- function ListsCategoriesResource_div_13_ng_container_9_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementContainerStart(0);
55
- i0.ɵɵtemplate(1, ListsCategoriesResource_div_13_ng_container_9_ng_container_1_Template, 1, 0, "ng-container", 31);
56
- i0.ɵɵelementContainerEnd();
53
+ function ListsCategoriesResource_Conditional_13_For_10_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵtemplate(0, ListsCategoriesResource_Conditional_13_For_10_ng_container_0_Template, 1, 0, "ng-container", 27);
57
55
  } if (rf & 2) {
58
56
  const vm_r4 = ctx.$implicit;
59
57
  i0.ɵɵnextContext(2);
60
58
  const categoryNodeTemplate_r5 = i0.ɵɵreference(15);
61
- i0.ɵɵadvance();
62
59
  i0.ɵɵproperty("ngTemplateOutlet", categoryNodeTemplate_r5)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, vm_r4));
63
60
  } }
64
- function ListsCategoriesResource_div_13_div_10_div_15_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "div", 39)(1, "label");
61
+ function ListsCategoriesResource_Conditional_13_Conditional_11_Conditional_15_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "div", 34)(1, "label");
66
63
  i0.ɵɵtext(2, "Description");
67
64
  i0.ɵɵelementEnd();
68
- i0.ɵɵelementStart(3, "span", 40);
65
+ i0.ɵɵelementStart(3, "span", 35);
69
66
  i0.ɵɵtext(4);
70
67
  i0.ɵɵelementEnd()();
71
68
  } if (rf & 2) {
@@ -73,9 +70,9 @@ function ListsCategoriesResource_div_13_div_10_div_15_Template(rf, ctx) { if (rf
73
70
  i0.ɵɵadvance(4);
74
71
  i0.ɵɵtextInterpolate(ctx_r2.selectedCategory.Description);
75
72
  } }
76
- function ListsCategoriesResource_div_13_div_10_div_32_div_4_Template(rf, ctx) { if (rf & 1) {
77
- i0.ɵɵelementStart(0, "div", 50);
78
- i0.ɵɵelement(1, "i", 51);
73
+ function ListsCategoriesResource_Conditional_13_Conditional_11_Conditional_32_For_5_Template(rf, ctx) { if (rf & 1) {
74
+ i0.ɵɵelementStart(0, "div", 42);
75
+ i0.ɵɵelement(1, "i", 43);
79
76
  i0.ɵɵelementStart(2, "span");
80
77
  i0.ɵɵtext(3);
81
78
  i0.ɵɵelementEnd()();
@@ -84,64 +81,64 @@ function ListsCategoriesResource_div_13_div_10_div_32_div_4_Template(rf, ctx) {
84
81
  i0.ɵɵadvance(3);
85
82
  i0.ɵɵtextInterpolate(list_r7.Name);
86
83
  } }
87
- function ListsCategoriesResource_div_13_div_10_div_32_Template(rf, ctx) { if (rf & 1) {
88
- i0.ɵɵelementStart(0, "div", 47)(1, "h4");
84
+ function ListsCategoriesResource_Conditional_13_Conditional_11_Conditional_32_Template(rf, ctx) { if (rf & 1) {
85
+ i0.ɵɵelementStart(0, "div", 40)(1, "h4");
89
86
  i0.ɵɵtext(2, "Lists in this category");
90
87
  i0.ɵɵelementEnd();
91
- i0.ɵɵelementStart(3, "div", 48);
92
- i0.ɵɵtemplate(4, ListsCategoriesResource_div_13_div_10_div_32_div_4_Template, 4, 1, "div", 49);
88
+ i0.ɵɵelementStart(3, "div", 41);
89
+ i0.ɵɵrepeaterCreate(4, ListsCategoriesResource_Conditional_13_Conditional_11_Conditional_32_For_5_Template, 4, 1, "div", 42, i0.ɵɵrepeaterTrackByIdentity);
93
90
  i0.ɵɵelementEnd()();
94
91
  } if (rf & 2) {
95
92
  const ctx_r2 = i0.ɵɵnextContext(3);
96
93
  i0.ɵɵadvance(4);
97
- i0.ɵɵproperty("ngForOf", ctx_r2.selectedCategoryLists);
94
+ i0.ɵɵrepeater(ctx_r2.selectedCategoryLists);
98
95
  } }
99
- function ListsCategoriesResource_div_13_div_10_Template(rf, ctx) { if (rf & 1) {
96
+ function ListsCategoriesResource_Conditional_13_Conditional_11_Template(rf, ctx) { if (rf & 1) {
100
97
  const _r6 = i0.ɵɵgetCurrentView();
101
- i0.ɵɵelementStart(0, "div", 32)(1, "div", 25)(2, "h3");
98
+ i0.ɵɵelementStart(0, "div", 25)(1, "div", 22)(2, "h3");
102
99
  i0.ɵɵtext(3, "Category Details");
103
100
  i0.ɵɵelementEnd();
104
- i0.ɵɵelementStart(4, "div", 33)(5, "button", 34);
105
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_13_div_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.editCategory()); });
106
- i0.ɵɵelement(6, "i", 35);
101
+ i0.ɵɵelementStart(4, "div", 28)(5, "button", 29);
102
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_13_Conditional_11_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.editCategory()); });
103
+ i0.ɵɵelement(6, "i", 30);
107
104
  i0.ɵɵelementEnd();
108
- i0.ɵɵelementStart(7, "button", 36);
109
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_13_div_10_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.deleteCategory()); });
110
- i0.ɵɵelement(8, "i", 37);
105
+ i0.ɵɵelementStart(7, "button", 31);
106
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_13_Conditional_11_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.deleteCategory()); });
107
+ i0.ɵɵelement(8, "i", 32);
111
108
  i0.ɵɵelementEnd()()();
112
- i0.ɵɵelementStart(9, "div", 38)(10, "div", 39)(11, "label");
109
+ i0.ɵɵelementStart(9, "div", 33)(10, "div", 34)(11, "label");
113
110
  i0.ɵɵtext(12, "Name");
114
111
  i0.ɵɵelementEnd();
115
- i0.ɵɵelementStart(13, "span", 40);
112
+ i0.ɵɵelementStart(13, "span", 35);
116
113
  i0.ɵɵtext(14);
117
114
  i0.ɵɵelementEnd()();
118
- i0.ɵɵtemplate(15, ListsCategoriesResource_div_13_div_10_div_15_Template, 5, 1, "div", 41);
119
- i0.ɵɵelementStart(16, "div", 39)(17, "label");
115
+ i0.ɵɵconditionalCreate(15, ListsCategoriesResource_Conditional_13_Conditional_11_Conditional_15_Template, 5, 1, "div", 34);
116
+ i0.ɵɵelementStart(16, "div", 34)(17, "label");
120
117
  i0.ɵɵtext(18, "Parent Category");
121
118
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(19, "span", 40);
119
+ i0.ɵɵelementStart(19, "span", 35);
123
120
  i0.ɵɵtext(20);
124
121
  i0.ɵɵelementEnd()();
125
- i0.ɵɵelementStart(21, "div", 42)(22, "div", 43)(23, "span", 44);
122
+ i0.ɵɵelementStart(21, "div", 36)(22, "div", 37)(23, "span", 38);
126
123
  i0.ɵɵtext(24);
127
124
  i0.ɵɵelementEnd();
128
- i0.ɵɵelementStart(25, "span", 45);
125
+ i0.ɵɵelementStart(25, "span", 39);
129
126
  i0.ɵɵtext(26, "Lists");
130
127
  i0.ɵɵelementEnd()();
131
- i0.ɵɵelementStart(27, "div", 43)(28, "span", 44);
128
+ i0.ɵɵelementStart(27, "div", 37)(28, "span", 38);
132
129
  i0.ɵɵtext(29);
133
130
  i0.ɵɵelementEnd();
134
- i0.ɵɵelementStart(30, "span", 45);
131
+ i0.ɵɵelementStart(30, "span", 39);
135
132
  i0.ɵɵtext(31, "Subcategories");
136
133
  i0.ɵɵelementEnd()()();
137
- i0.ɵɵtemplate(32, ListsCategoriesResource_div_13_div_10_div_32_Template, 5, 1, "div", 46);
134
+ i0.ɵɵconditionalCreate(32, ListsCategoriesResource_Conditional_13_Conditional_11_Conditional_32_Template, 6, 0, "div", 40);
138
135
  i0.ɵɵelementEnd()();
139
136
  } if (rf & 2) {
140
137
  const ctx_r2 = i0.ɵɵnextContext(2);
141
138
  i0.ɵɵadvance(14);
142
139
  i0.ɵɵtextInterpolate(ctx_r2.selectedCategory.Name);
143
140
  i0.ɵɵadvance();
144
- i0.ɵɵproperty("ngIf", ctx_r2.selectedCategory.Description);
141
+ i0.ɵɵconditional(ctx_r2.selectedCategory.Description ? 15 : -1);
145
142
  i0.ɵɵadvance(5);
146
143
  i0.ɵɵtextInterpolate1(" ", ctx_r2.getParentCategoryName(ctx_r2.selectedCategory) || "(Top Level)", " ");
147
144
  i0.ɵɵadvance(4);
@@ -149,42 +146,43 @@ function ListsCategoriesResource_div_13_div_10_Template(rf, ctx) { if (rf & 1) {
149
146
  i0.ɵɵadvance(5);
150
147
  i0.ɵɵtextInterpolate(ctx_r2.getSelectedCategoryChildCount());
151
148
  i0.ɵɵadvance(3);
152
- i0.ɵɵproperty("ngIf", ctx_r2.selectedCategoryLists.length > 0);
149
+ i0.ɵɵconditional(ctx_r2.selectedCategoryLists.length > 0 ? 32 : -1);
153
150
  } }
154
- function ListsCategoriesResource_div_13_div_11_Template(rf, ctx) { if (rf & 1) {
155
- i0.ɵɵelementStart(0, "div", 52)(1, "div", 53);
156
- i0.ɵɵelement(2, "i", 54);
151
+ function ListsCategoriesResource_Conditional_13_Conditional_12_Template(rf, ctx) { if (rf & 1) {
152
+ i0.ɵɵelementStart(0, "div", 26)(1, "div", 44);
153
+ i0.ɵɵelement(2, "i", 45);
157
154
  i0.ɵɵelementStart(3, "p");
158
155
  i0.ɵɵtext(4, "Select a category to view details");
159
156
  i0.ɵɵelementEnd()()();
160
157
  } }
161
- function ListsCategoriesResource_div_13_Template(rf, ctx) { if (rf & 1) {
162
- i0.ɵɵelementStart(0, "div", 22)(1, "div", 23)(2, "div", 24)(3, "div", 25)(4, "h3");
158
+ function ListsCategoriesResource_Conditional_13_Template(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵelementStart(0, "div", 10)(1, "div", 20)(2, "div", 21)(3, "div", 22)(4, "h3");
163
160
  i0.ɵɵtext(5, "Categories");
164
161
  i0.ɵɵelementEnd();
165
- i0.ɵɵelementStart(6, "span", 26);
162
+ i0.ɵɵelementStart(6, "span", 23);
166
163
  i0.ɵɵtext(7);
167
164
  i0.ɵɵelementEnd()();
168
- i0.ɵɵelementStart(8, "div", 27);
169
- i0.ɵɵtemplate(9, ListsCategoriesResource_div_13_ng_container_9_Template, 2, 4, "ng-container", 28);
165
+ i0.ɵɵelementStart(8, "div", 24);
166
+ i0.ɵɵrepeaterCreate(9, ListsCategoriesResource_Conditional_13_For_10_Template, 1, 4, "ng-container", null, i0.ɵɵrepeaterTrackByIdentity);
170
167
  i0.ɵɵelementEnd()();
171
- i0.ɵɵtemplate(10, ListsCategoriesResource_div_13_div_10_Template, 33, 6, "div", 29)(11, ListsCategoriesResource_div_13_div_11_Template, 5, 0, "div", 30);
168
+ i0.ɵɵconditionalCreate(11, ListsCategoriesResource_Conditional_13_Conditional_11_Template, 33, 6, "div", 25);
169
+ i0.ɵɵconditionalCreate(12, ListsCategoriesResource_Conditional_13_Conditional_12_Template, 5, 0, "div", 26);
172
170
  i0.ɵɵelementEnd()();
173
171
  } if (rf & 2) {
174
172
  const ctx_r2 = i0.ɵɵnextContext();
175
173
  i0.ɵɵadvance(7);
176
174
  i0.ɵɵtextInterpolate(ctx_r2.categories.length);
177
175
  i0.ɵɵadvance(2);
178
- i0.ɵɵproperty("ngForOf", ctx_r2.getTopLevelCategories());
179
- i0.ɵɵadvance();
180
- i0.ɵɵproperty("ngIf", ctx_r2.selectedCategory);
176
+ i0.ɵɵrepeater(ctx_r2.getTopLevelCategories());
177
+ i0.ɵɵadvance(2);
178
+ i0.ɵɵconditional(ctx_r2.selectedCategory ? 11 : -1);
181
179
  i0.ɵɵadvance();
182
- i0.ɵɵproperty("ngIf", !ctx_r2.selectedCategory);
180
+ i0.ɵɵconditional(!ctx_r2.selectedCategory ? 12 : -1);
183
181
  } }
184
- function ListsCategoriesResource_ng_template_14_button_2_Template(rf, ctx) { if (rf & 1) {
182
+ function ListsCategoriesResource_ng_template_14_Conditional_2_Template(rf, ctx) { if (rf & 1) {
185
183
  const _r10 = i0.ɵɵgetCurrentView();
186
- i0.ɵɵelementStart(0, "button", 63);
187
- i0.ɵɵlistener("click", function ListsCategoriesResource_ng_template_14_button_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r10); const vm_r9 = i0.ɵɵnextContext().vm; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleExpand($event, vm_r9)); });
184
+ i0.ɵɵelementStart(0, "button", 54);
185
+ i0.ɵɵlistener("click", function ListsCategoriesResource_ng_template_14_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r10); const vm_r9 = i0.ɵɵnextContext().vm; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleExpand($event, vm_r9)); });
188
186
  i0.ɵɵelement(1, "i");
189
187
  i0.ɵɵelementEnd();
190
188
  } if (rf & 2) {
@@ -192,46 +190,44 @@ function ListsCategoriesResource_ng_template_14_button_2_Template(rf, ctx) { if
192
190
  i0.ɵɵadvance();
193
191
  i0.ɵɵclassMap(vm_r9.isExpanded ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-right");
194
192
  } }
195
- function ListsCategoriesResource_ng_template_14_span_3_Template(rf, ctx) { if (rf & 1) {
196
- i0.ɵɵelement(0, "span", 64);
193
+ function ListsCategoriesResource_ng_template_14_Conditional_3_Template(rf, ctx) { if (rf & 1) {
194
+ i0.ɵɵelement(0, "span", 49);
197
195
  } }
198
- function ListsCategoriesResource_ng_template_14_div_9_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
196
+ function ListsCategoriesResource_ng_template_14_Conditional_9_For_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
199
197
  i0.ɵɵelementContainer(0);
200
198
  } }
201
- function ListsCategoriesResource_ng_template_14_div_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
202
- i0.ɵɵelementContainerStart(0);
203
- i0.ɵɵtemplate(1, ListsCategoriesResource_ng_template_14_div_9_ng_container_1_ng_container_1_Template, 1, 0, "ng-container", 31);
204
- i0.ɵɵelementContainerEnd();
199
+ function ListsCategoriesResource_ng_template_14_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
200
+ i0.ɵɵtemplate(0, ListsCategoriesResource_ng_template_14_Conditional_9_For_2_ng_container_0_Template, 1, 0, "ng-container", 27);
205
201
  } if (rf & 2) {
206
202
  const childVm_r11 = ctx.$implicit;
207
203
  i0.ɵɵnextContext(3);
208
204
  const categoryNodeTemplate_r5 = i0.ɵɵreference(15);
209
- i0.ɵɵadvance();
210
205
  i0.ɵɵproperty("ngTemplateOutlet", categoryNodeTemplate_r5)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, childVm_r11));
211
206
  } }
212
- function ListsCategoriesResource_ng_template_14_div_9_Template(rf, ctx) { if (rf & 1) {
213
- i0.ɵɵelementStart(0, "div", 65);
214
- i0.ɵɵtemplate(1, ListsCategoriesResource_ng_template_14_div_9_ng_container_1_Template, 2, 4, "ng-container", 28);
207
+ function ListsCategoriesResource_ng_template_14_Conditional_9_Template(rf, ctx) { if (rf & 1) {
208
+ i0.ɵɵelementStart(0, "div", 53);
209
+ i0.ɵɵrepeaterCreate(1, ListsCategoriesResource_ng_template_14_Conditional_9_For_2_Template, 1, 4, "ng-container", null, i0.ɵɵrepeaterTrackByIdentity);
215
210
  i0.ɵɵelementEnd();
216
211
  } if (rf & 2) {
217
212
  const vm_r9 = i0.ɵɵnextContext().vm;
218
213
  const ctx_r2 = i0.ɵɵnextContext();
219
214
  i0.ɵɵadvance();
220
- i0.ɵɵproperty("ngForOf", ctx_r2.getChildCategories(vm_r9.category));
215
+ i0.ɵɵrepeater(ctx_r2.getChildCategories(vm_r9.category));
221
216
  } }
222
217
  function ListsCategoriesResource_ng_template_14_Template(rf, ctx) { if (rf & 1) {
223
218
  const _r8 = i0.ɵɵgetCurrentView();
224
- i0.ɵɵelementStart(0, "div", 55)(1, "div", 56);
219
+ i0.ɵɵelementStart(0, "div", 46)(1, "div", 47);
225
220
  i0.ɵɵlistener("click", function ListsCategoriesResource_ng_template_14_Template_div_click_1_listener() { const vm_r9 = i0.ɵɵrestoreView(_r8).vm; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectCategory(vm_r9.category)); })("keydown.enter", function ListsCategoriesResource_ng_template_14_Template_div_keydown_enter_1_listener() { const vm_r9 = i0.ɵɵrestoreView(_r8).vm; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectCategory(vm_r9.category)); })("keydown.space", function ListsCategoriesResource_ng_template_14_Template_div_keydown_space_1_listener($event) { const vm_r9 = i0.ɵɵrestoreView(_r8).vm; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.selectCategory(vm_r9.category); return i0.ɵɵresetView($event.preventDefault()); })("keydown.arrowRight", function ListsCategoriesResource_ng_template_14_Template_div_keydown_arrowRight_1_listener($event) { const vm_r9 = i0.ɵɵrestoreView(_r8).vm; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.expandNode($event, vm_r9)); })("keydown.arrowLeft", function ListsCategoriesResource_ng_template_14_Template_div_keydown_arrowLeft_1_listener($event) { const vm_r9 = i0.ɵɵrestoreView(_r8).vm; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.collapseNode($event, vm_r9)); });
226
- i0.ɵɵtemplate(2, ListsCategoriesResource_ng_template_14_button_2_Template, 2, 2, "button", 57)(3, ListsCategoriesResource_ng_template_14_span_3_Template, 1, 0, "span", 58);
227
- i0.ɵɵelement(4, "i", 59);
228
- i0.ɵɵelementStart(5, "span", 60);
221
+ i0.ɵɵconditionalCreate(2, ListsCategoriesResource_ng_template_14_Conditional_2_Template, 2, 2, "button", 48);
222
+ i0.ɵɵconditionalCreate(3, ListsCategoriesResource_ng_template_14_Conditional_3_Template, 1, 0, "span", 49);
223
+ i0.ɵɵelement(4, "i", 50);
224
+ i0.ɵɵelementStart(5, "span", 51);
229
225
  i0.ɵɵtext(6);
230
226
  i0.ɵɵelementEnd();
231
- i0.ɵɵelementStart(7, "span", 61);
227
+ i0.ɵɵelementStart(7, "span", 52);
232
228
  i0.ɵɵtext(8);
233
229
  i0.ɵɵelementEnd()();
234
- i0.ɵɵtemplate(9, ListsCategoriesResource_ng_template_14_div_9_Template, 2, 1, "div", 62);
230
+ i0.ɵɵconditionalCreate(9, ListsCategoriesResource_ng_template_14_Conditional_9_Template, 3, 0, "div", 53);
235
231
  i0.ɵɵelementEnd();
236
232
  } if (rf & 2) {
237
233
  const vm_r9 = ctx.vm;
@@ -241,9 +237,9 @@ function ListsCategoriesResource_ng_template_14_Template(rf, ctx) { if (rf & 1)
241
237
  i0.ɵɵclassProp("selected", (ctx_r2.selectedCategory == null ? null : ctx_r2.selectedCategory.ID) === vm_r9.category.ID);
242
238
  i0.ɵɵattribute("aria-expanded", ctx_r2.hasChildren(vm_r9.category) ? vm_r9.isExpanded : null)("aria-selected", (ctx_r2.selectedCategory == null ? null : ctx_r2.selectedCategory.ID) === vm_r9.category.ID)("aria-label", vm_r9.category.Name + " - " + vm_r9.listCount + " lists");
243
239
  i0.ɵɵadvance();
244
- i0.ɵɵproperty("ngIf", ctx_r2.hasChildren(vm_r9.category));
240
+ i0.ɵɵconditional(ctx_r2.hasChildren(vm_r9.category) ? 2 : -1);
245
241
  i0.ɵɵadvance();
246
- i0.ɵɵproperty("ngIf", !ctx_r2.hasChildren(vm_r9.category));
242
+ i0.ɵɵconditional(!ctx_r2.hasChildren(vm_r9.category) ? 3 : -1);
247
243
  i0.ɵɵadvance();
248
244
  i0.ɵɵclassProp("fa-folder-open", vm_r9.isExpanded);
249
245
  i0.ɵɵadvance(2);
@@ -251,10 +247,10 @@ function ListsCategoriesResource_ng_template_14_Template(rf, ctx) { if (rf & 1)
251
247
  i0.ɵɵadvance(2);
252
248
  i0.ɵɵtextInterpolate(vm_r9.listCount);
253
249
  i0.ɵɵadvance();
254
- i0.ɵɵproperty("ngIf", vm_r9.isExpanded && ctx_r2.hasChildren(vm_r9.category));
250
+ i0.ɵɵconditional(vm_r9.isExpanded && ctx_r2.hasChildren(vm_r9.category) ? 9 : -1);
255
251
  } }
256
- function ListsCategoriesResource_div_16_option_21_Template(rf, ctx) { if (rf & 1) {
257
- i0.ɵɵelementStart(0, "option", 82);
252
+ function ListsCategoriesResource_Conditional_16_For_22_Template(rf, ctx) { if (rf & 1) {
253
+ i0.ɵɵelementStart(0, "option", 66);
258
254
  i0.ɵɵtext(1);
259
255
  i0.ɵɵelementEnd();
260
256
  } if (rf & 2) {
@@ -263,49 +259,49 @@ function ListsCategoriesResource_div_16_option_21_Template(rf, ctx) { if (rf & 1
263
259
  i0.ɵɵadvance();
264
260
  i0.ɵɵtextInterpolate(parent_r13.displayName);
265
261
  } }
266
- function ListsCategoriesResource_div_16_i_24_Template(rf, ctx) { if (rf & 1) {
267
- i0.ɵɵelement(0, "i", 83);
262
+ function ListsCategoriesResource_Conditional_16_Conditional_25_Template(rf, ctx) { if (rf & 1) {
263
+ i0.ɵɵelement(0, "i", 69);
268
264
  } }
269
- function ListsCategoriesResource_div_16_Template(rf, ctx) { if (rf & 1) {
265
+ function ListsCategoriesResource_Conditional_16_Template(rf, ctx) { if (rf & 1) {
270
266
  const _r12 = i0.ɵɵgetCurrentView();
271
- i0.ɵɵelementStart(0, "div", 66);
272
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_16_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDialog()); });
273
- i0.ɵɵelementStart(1, "div", 67);
274
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_16_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r12); return i0.ɵɵresetView($event.stopPropagation()); });
275
- i0.ɵɵelementStart(2, "div", 68)(3, "h3");
267
+ i0.ɵɵelementStart(0, "div", 55);
268
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_16_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDialog()); });
269
+ i0.ɵɵelementStart(1, "div", 56);
270
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_16_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r12); return i0.ɵɵresetView($event.stopPropagation()); });
271
+ i0.ɵɵelementStart(2, "div", 57)(3, "h3");
276
272
  i0.ɵɵtext(4);
277
273
  i0.ɵɵelementEnd();
278
- i0.ɵɵelementStart(5, "button", 69);
279
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_16_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDialog()); });
280
- i0.ɵɵelement(6, "i", 70);
274
+ i0.ɵɵelementStart(5, "button", 58);
275
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_16_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDialog()); });
276
+ i0.ɵɵelement(6, "i", 59);
281
277
  i0.ɵɵelementEnd()();
282
- i0.ɵɵelementStart(7, "div", 71)(8, "div", 72)(9, "div", 73)(10, "label");
278
+ i0.ɵɵelementStart(7, "div", 60)(8, "div", 61)(9, "div", 62)(10, "label");
283
279
  i0.ɵɵtext(11, "Name *");
284
280
  i0.ɵɵelementEnd();
285
- i0.ɵɵelementStart(12, "input", 74);
286
- i0.ɵɵtwoWayListener("ngModelChange", function ListsCategoriesResource_div_16_Template_input_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.dialogName, $event) || (ctx_r2.dialogName = $event); return i0.ɵɵresetView($event); });
281
+ i0.ɵɵelementStart(12, "input", 63);
282
+ i0.ɵɵtwoWayListener("ngModelChange", function ListsCategoriesResource_Conditional_16_Template_input_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.dialogName, $event) || (ctx_r2.dialogName = $event); return i0.ɵɵresetView($event); });
287
283
  i0.ɵɵelementEnd()();
288
- i0.ɵɵelementStart(13, "div", 73)(14, "label");
284
+ i0.ɵɵelementStart(13, "div", 62)(14, "label");
289
285
  i0.ɵɵtext(15, "Description");
290
286
  i0.ɵɵelementEnd();
291
- i0.ɵɵelementStart(16, "textarea", 75);
292
- i0.ɵɵtwoWayListener("ngModelChange", function ListsCategoriesResource_div_16_Template_textarea_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.dialogDescription, $event) || (ctx_r2.dialogDescription = $event); return i0.ɵɵresetView($event); });
287
+ i0.ɵɵelementStart(16, "textarea", 64);
288
+ i0.ɵɵtwoWayListener("ngModelChange", function ListsCategoriesResource_Conditional_16_Template_textarea_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.dialogDescription, $event) || (ctx_r2.dialogDescription = $event); return i0.ɵɵresetView($event); });
293
289
  i0.ɵɵelementEnd()();
294
- i0.ɵɵelementStart(17, "div", 73)(18, "label");
290
+ i0.ɵɵelementStart(17, "div", 62)(18, "label");
295
291
  i0.ɵɵtext(19, "Parent Category");
296
292
  i0.ɵɵelementEnd();
297
- i0.ɵɵelementStart(20, "select", 76);
298
- i0.ɵɵtwoWayListener("ngModelChange", function ListsCategoriesResource_div_16_Template_select_ngModelChange_20_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.dialogParentId, $event) || (ctx_r2.dialogParentId = $event); return i0.ɵɵresetView($event); });
299
- i0.ɵɵtemplate(21, ListsCategoriesResource_div_16_option_21_Template, 2, 2, "option", 77);
293
+ i0.ɵɵelementStart(20, "select", 65);
294
+ i0.ɵɵtwoWayListener("ngModelChange", function ListsCategoriesResource_Conditional_16_Template_select_ngModelChange_20_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.dialogParentId, $event) || (ctx_r2.dialogParentId = $event); return i0.ɵɵresetView($event); });
295
+ i0.ɵɵrepeaterCreate(21, ListsCategoriesResource_Conditional_16_For_22_Template, 2, 2, "option", 66, i0.ɵɵrepeaterTrackByIdentity);
300
296
  i0.ɵɵelementEnd()()()();
301
- i0.ɵɵelementStart(22, "div", 78)(23, "button", 79);
302
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_16_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.saveCategory()); });
303
- i0.ɵɵtemplate(24, ListsCategoriesResource_div_16_i_24_Template, 1, 0, "i", 80);
304
- i0.ɵɵtext(25);
297
+ i0.ɵɵelementStart(23, "div", 67)(24, "button", 68);
298
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_16_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.saveCategory()); });
299
+ i0.ɵɵconditionalCreate(25, ListsCategoriesResource_Conditional_16_Conditional_25_Template, 1, 0, "i", 69);
300
+ i0.ɵɵtext(26);
305
301
  i0.ɵɵelementEnd();
306
- i0.ɵɵelementStart(26, "button", 81);
307
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_16_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDialog()); });
308
- i0.ɵɵtext(27, "Cancel");
302
+ i0.ɵɵelementStart(27, "button", 70);
303
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_16_Template_button_click_27_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeDialog()); });
304
+ i0.ɵɵtext(28, "Cancel");
309
305
  i0.ɵɵelementEnd()()()();
310
306
  } if (rf & 2) {
311
307
  const ctx_r2 = i0.ɵɵnextContext();
@@ -320,38 +316,38 @@ function ListsCategoriesResource_div_16_Template(rf, ctx) { if (rf & 1) {
320
316
  i0.ɵɵadvance(4);
321
317
  i0.ɵɵtwoWayProperty("ngModel", ctx_r2.dialogParentId);
322
318
  i0.ɵɵadvance();
323
- i0.ɵɵproperty("ngForOf", ctx_r2.availableParents);
324
- i0.ɵɵadvance(2);
319
+ i0.ɵɵrepeater(ctx_r2.availableParents);
320
+ i0.ɵɵadvance(3);
325
321
  i0.ɵɵproperty("disabled", !ctx_r2.dialogName || ctx_r2.isSaving);
326
322
  i0.ɵɵadvance();
327
- i0.ɵɵproperty("ngIf", ctx_r2.isSaving);
323
+ i0.ɵɵconditional(ctx_r2.isSaving ? 25 : -1);
328
324
  i0.ɵɵadvance();
329
325
  i0.ɵɵtextInterpolate1(" ", ctx_r2.isSaving ? "Saving..." : ctx_r2.editingCategory ? "Save" : "Create", " ");
330
326
  i0.ɵɵadvance();
331
327
  i0.ɵɵproperty("disabled", ctx_r2.isSaving);
332
328
  } }
333
- function ListsCategoriesResource_div_17_Template(rf, ctx) { if (rf & 1) {
329
+ function ListsCategoriesResource_Conditional_17_Template(rf, ctx) { if (rf & 1) {
334
330
  const _r14 = i0.ɵɵgetCurrentView();
335
- i0.ɵɵelementStart(0, "div", 66);
336
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_17_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
337
- i0.ɵɵelementStart(1, "div", 84);
338
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_17_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r14); return i0.ɵɵresetView($event.stopPropagation()); });
339
- i0.ɵɵelementStart(2, "div", 85)(3, "h3");
331
+ i0.ɵɵelementStart(0, "div", 55);
332
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_17_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
333
+ i0.ɵɵelementStart(1, "div", 71);
334
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_17_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r14); return i0.ɵɵresetView($event.stopPropagation()); });
335
+ i0.ɵɵelementStart(2, "div", 72)(3, "h3");
340
336
  i0.ɵɵtext(4, "Delete Category");
341
337
  i0.ɵɵelementEnd();
342
- i0.ɵɵelementStart(5, "button", 86);
343
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
344
- i0.ɵɵelement(6, "i", 70);
338
+ i0.ɵɵelementStart(5, "button", 73);
339
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_17_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
340
+ i0.ɵɵelement(6, "i", 59);
345
341
  i0.ɵɵelementEnd()();
346
- i0.ɵɵelementStart(7, "div", 71)(8, "p");
342
+ i0.ɵɵelementStart(7, "div", 60)(8, "p");
347
343
  i0.ɵɵtext(9);
348
344
  i0.ɵɵelementEnd()();
349
- i0.ɵɵelementStart(10, "div", 78)(11, "button", 87);
350
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_17_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.confirmDelete()); });
345
+ i0.ɵɵelementStart(10, "div", 67)(11, "button", 74);
346
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_17_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.confirmDelete()); });
351
347
  i0.ɵɵtext(12, " Delete ");
352
348
  i0.ɵɵelementEnd();
353
- i0.ɵɵelementStart(13, "button", 88);
354
- i0.ɵɵlistener("click", function ListsCategoriesResource_div_17_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
349
+ i0.ɵɵelementStart(13, "button", 75);
350
+ i0.ɵɵlistener("click", function ListsCategoriesResource_Conditional_17_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
355
351
  i0.ɵɵtext(14, "Cancel");
356
352
  i0.ɵɵelementEnd()()()();
357
353
  } if (rf & 2) {
@@ -359,9 +355,6 @@ function ListsCategoriesResource_div_17_Template(rf, ctx) { if (rf & 1) {
359
355
  i0.ɵɵadvance(9);
360
356
  i0.ɵɵtextInterpolate(ctx_r2.deleteConfirmMessage);
361
357
  } }
362
- export function LoadListsCategoriesResource() {
363
- // tree shaker
364
- }
365
358
  let ListsCategoriesResource = class ListsCategoriesResource extends BaseResourceComponent {
366
359
  cdr;
367
360
  notificationService;
@@ -678,7 +671,7 @@ let ListsCategoriesResource = class ListsCategoriesResource extends BaseResource
678
671
  return 'fa-solid fa-tags';
679
672
  }
680
673
  static ɵfac = function ListsCategoriesResource_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ListsCategoriesResource)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.MJNotificationService)); };
681
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListsCategoriesResource, selectors: [["mj-lists-categories-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 5, consts: [["categoryNodeTemplate", ""], [1, "lists-categories-container"], [1, "categories-header"], [1, "header-title"], [1, "fa-solid", "fa-tags"], [1, "header-actions"], [1, "btn-create", 3, "click"], [1, "fa-solid", "fa-plus"], ["class", "loading-container", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], ["class", "categories-content", 4, "ngIf"], ["class", "modal-overlay", 3, "click", 4, "ngIf"], [1, "loading-container"], ["text", "Loading categories...", "size", "medium"], [1, "empty-state"], [1, "empty-state-icon-wrapper"], [1, "icon-bg"], [1, "fa-solid", "fa-folder-tree"], [1, "empty-state-features"], [1, "feature-item"], [1, "fa-solid", "fa-check-circle"], [1, "btn-create-large", 3, "click"], [1, "categories-content"], [1, "categories-layout"], [1, "category-tree-panel"], [1, "panel-header"], [1, "count-badge"], ["role", "tree", "aria-label", "Category tree", 1, "tree-content"], [4, "ngFor", "ngForOf"], ["class", "category-detail-panel", 4, "ngIf"], ["class", "category-detail-panel empty", 4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "category-detail-panel"], [1, "panel-actions"], ["title", "Edit", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["title", "Delete", 1, "icon-btn", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "detail-content"], [1, "detail-field"], [1, "field-value"], ["class", "detail-field", 4, "ngIf"], [1, "detail-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], ["class", "category-lists", 4, "ngIf"], [1, "category-lists"], [1, "mini-list"], ["class", "mini-list-item", 4, "ngFor", "ngForOf"], [1, "mini-list-item"], [1, "fa-solid", "fa-list"], [1, "category-detail-panel", "empty"], [1, "no-selection"], [1, "fa-solid", "fa-arrow-left"], [1, "category-node"], ["tabindex", "0", "role", "treeitem", 1, "node-content", 3, "click", "keydown.enter", "keydown.space", "keydown.arrowRight", "keydown.arrowLeft"], ["class", "expand-btn", "tabindex", "-1", "aria-hidden", "true", 3, "click", 4, "ngIf"], ["class", "expand-placeholder", 4, "ngIf"], ["aria-hidden", "true", 1, "fa-solid", "fa-folder"], [1, "node-name"], ["aria-hidden", "true", 1, "node-count"], ["class", "node-children", "role", "group", 4, "ngIf"], ["tabindex", "-1", "aria-hidden", "true", 1, "expand-btn", 3, "click"], [1, "expand-placeholder"], ["role", "group", 1, "node-children"], [1, "modal-overlay", 3, "click"], [1, "modal-dialog", 3, "click"], [1, "modal-header"], [1, "modal-close", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], [1, "modal-body"], [1, "category-form"], [1, "form-group"], ["type", "text", "placeholder", "Enter category name", 1, "form-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Optional description", "rows", "3", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "ngValue", 4, "ngFor", "ngForOf"], [1, "modal-footer"], [1, "btn-primary", 3, "click", "disabled"], ["class", "fa-solid fa-spinner fa-spin", 4, "ngIf"], [1, "btn-secondary", 3, "click", "disabled"], [3, "ngValue"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "modal-dialog", "modal-sm", 3, "click"], [1, "modal-header", "danger"], [1, "modal-close", 3, "click"], [1, "btn-danger", 3, "click"], [1, "btn-secondary", 3, "click"]], template: function ListsCategoriesResource_Template(rf, ctx) { if (rf & 1) {
674
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListsCategoriesResource, selectors: [["mj-lists-categories-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 5, consts: [["categoryNodeTemplate", ""], [1, "lists-categories-container"], [1, "categories-header"], [1, "header-title"], [1, "fa-solid", "fa-tags"], [1, "header-actions"], [1, "btn-create", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-container"], [1, "empty-state"], [1, "categories-content"], [1, "modal-overlay"], ["text", "Loading categories...", "size", "medium"], [1, "empty-state-icon-wrapper"], [1, "icon-bg"], [1, "fa-solid", "fa-folder-tree"], [1, "empty-state-features"], [1, "feature-item"], [1, "fa-solid", "fa-check-circle"], [1, "btn-create-large", 3, "click"], [1, "categories-layout"], [1, "category-tree-panel"], [1, "panel-header"], [1, "count-badge"], ["role", "tree", "aria-label", "Category tree", 1, "tree-content"], [1, "category-detail-panel"], [1, "category-detail-panel", "empty"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "panel-actions"], ["title", "Edit", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["title", "Delete", 1, "icon-btn", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "detail-content"], [1, "detail-field"], [1, "field-value"], [1, "detail-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "category-lists"], [1, "mini-list"], [1, "mini-list-item"], [1, "fa-solid", "fa-list"], [1, "no-selection"], [1, "fa-solid", "fa-arrow-left"], [1, "category-node"], ["tabindex", "0", "role", "treeitem", 1, "node-content", 3, "click", "keydown.enter", "keydown.space", "keydown.arrowRight", "keydown.arrowLeft"], ["tabindex", "-1", "aria-hidden", "true", 1, "expand-btn"], [1, "expand-placeholder"], ["aria-hidden", "true", 1, "fa-solid", "fa-folder"], [1, "node-name"], ["aria-hidden", "true", 1, "node-count"], ["role", "group", 1, "node-children"], ["tabindex", "-1", "aria-hidden", "true", 1, "expand-btn", 3, "click"], [1, "modal-overlay", 3, "click"], [1, "modal-dialog", 3, "click"], [1, "modal-header"], [1, "modal-close", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], [1, "modal-body"], [1, "category-form"], [1, "form-group"], ["type", "text", "placeholder", "Enter category name", 1, "form-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Optional description", "rows", "3", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [1, "modal-footer"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "btn-secondary", 3, "click", "disabled"], [1, "modal-dialog", "modal-sm", 3, "click"], [1, "modal-header", "danger"], [1, "modal-close", 3, "click"], [1, "btn-danger", 3, "click"], [1, "btn-secondary", 3, "click"]], template: function ListsCategoriesResource_Template(rf, ctx) { if (rf & 1) {
682
675
  const _r1 = i0.ɵɵgetCurrentView();
683
676
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3);
684
677
  i0.ɵɵelement(3, "i", 4);
@@ -691,20 +684,25 @@ let ListsCategoriesResource = class ListsCategoriesResource extends BaseResource
691
684
  i0.ɵɵelementStart(9, "span");
692
685
  i0.ɵɵtext(10, "New Category");
693
686
  i0.ɵɵelementEnd()()()();
694
- i0.ɵɵtemplate(11, ListsCategoriesResource_div_11_Template, 2, 0, "div", 8)(12, ListsCategoriesResource_div_12_Template, 20, 0, "div", 9)(13, ListsCategoriesResource_div_13_Template, 12, 4, "div", 10)(14, ListsCategoriesResource_ng_template_14_Template, 10, 14, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(16, ListsCategoriesResource_div_16_Template, 28, 10, "div", 11)(17, ListsCategoriesResource_div_17_Template, 15, 1, "div", 11);
687
+ i0.ɵɵconditionalCreate(11, ListsCategoriesResource_Conditional_11_Template, 2, 0, "div", 8);
688
+ i0.ɵɵconditionalCreate(12, ListsCategoriesResource_Conditional_12_Template, 20, 0, "div", 9);
689
+ i0.ɵɵconditionalCreate(13, ListsCategoriesResource_Conditional_13_Template, 13, 3, "div", 10);
690
+ i0.ɵɵtemplate(14, ListsCategoriesResource_ng_template_14_Template, 10, 14, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
691
+ i0.ɵɵconditionalCreate(16, ListsCategoriesResource_Conditional_16_Template, 29, 9, "div", 11);
692
+ i0.ɵɵconditionalCreate(17, ListsCategoriesResource_Conditional_17_Template, 15, 1, "div", 11);
695
693
  i0.ɵɵelementEnd();
696
694
  } if (rf & 2) {
697
695
  i0.ɵɵadvance(11);
698
- i0.ɵɵproperty("ngIf", ctx.isLoading);
696
+ i0.ɵɵconditional(ctx.isLoading ? 11 : -1);
699
697
  i0.ɵɵadvance();
700
- i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.categoryViewModels.length === 0);
698
+ i0.ɵɵconditional(!ctx.isLoading && ctx.categoryViewModels.length === 0 ? 12 : -1);
701
699
  i0.ɵɵadvance();
702
- i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.categoryViewModels.length > 0);
700
+ i0.ɵɵconditional(!ctx.isLoading && ctx.categoryViewModels.length > 0 ? 13 : -1);
703
701
  i0.ɵɵadvance(3);
704
- i0.ɵɵproperty("ngIf", ctx.showDialog);
702
+ i0.ɵɵconditional(ctx.showDialog ? 16 : -1);
705
703
  i0.ɵɵadvance();
706
- i0.ɵɵproperty("ngIf", ctx.showDeleteConfirm);
707
- } }, dependencies: [i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.DefaultValueAccessor, i3.SelectControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.LoadingComponent], styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-categories-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f5f7fa;\n overflow: hidden;\n }\n\n /* Header */\n .categories-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: #2196F3;\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: #1976D2;\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 420px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100px;\n height: 100px;\n border-radius: 50%;\n background: linear-gradient(135deg, rgba(33, 150, 243, 0.1) 0%, rgba(33, 150, 243, 0.05) 100%);\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 48px;\n color: #2196F3;\n z-index: 1;\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: #333;\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: #666;\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 16px 0 24px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: #555;\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: #4CAF50 !important;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: linear-gradient(135deg, #2196F3 0%, #1976D2 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n }\n\n .btn-create-large:hover {\n background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);\n }\n\n /* Content Layout */\n .categories-content {\n flex: 1;\n padding: 16px 24px;\n overflow: hidden;\n }\n\n .categories-layout {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n height: 100%;\n }\n\n .category-tree-panel,\n .category-detail-panel {\n background: white;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .panel-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n\n .count-badge {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .panel-actions {\n display: flex;\n gap: 4px;\n }\n\n .icon-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #666;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .icon-btn:hover {\n background: #f0f0f0;\n color: #333;\n }\n\n .icon-btn.danger:hover {\n background: #ffebee;\n color: #d32f2f;\n }\n\n /* Tree Content */\n .tree-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .category-node {\n user-select: none;\n }\n\n .node-content {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .node-content:hover {\n background: #f5f5f5;\n }\n\n .node-content:focus {\n outline: none;\n background: #e8f4fd;\n }\n\n .node-content:focus-visible {\n outline: 2px solid #2196F3;\n outline-offset: -2px;\n background: #e8f4fd;\n }\n\n .node-content.selected {\n background: #e3f2fd;\n }\n\n .node-content.selected:focus-visible {\n outline: 2px solid #1976D2;\n }\n\n .expand-btn {\n background: none;\n border: none;\n padding: 2px;\n color: #999;\n cursor: pointer;\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .expand-btn:hover {\n color: #666;\n }\n\n .expand-placeholder {\n width: 20px;\n }\n\n .node-content .fa-folder,\n .node-content .fa-folder-open {\n color: #ffc107;\n }\n\n .node-name {\n flex: 1;\n font-size: 14px;\n color: #333;\n }\n\n .node-count {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 1px 6px;\n border-radius: 8px;\n }\n\n /* Detail Panel */\n .detail-content {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n }\n\n .detail-field {\n margin-bottom: 16px;\n }\n\n .detail-field label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n }\n\n .field-value {\n font-size: 14px;\n color: #333;\n }\n\n .detail-stats {\n display: flex;\n gap: 24px;\n margin: 24px 0;\n padding: 16px;\n background: #f5f7fa;\n border-radius: 8px;\n }\n\n .stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .stat-value {\n font-size: 24px;\n font-weight: 600;\n color: #2196F3;\n }\n\n .stat-label {\n font-size: 12px;\n color: #999;\n }\n\n .category-lists h4 {\n margin: 0 0 12px;\n font-size: 13px;\n font-weight: 600;\n color: #666;\n }\n\n .mini-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .mini-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #f5f7fa;\n border-radius: 4px;\n font-size: 13px;\n color: #333;\n }\n\n .mini-list-item i {\n color: #999;\n }\n\n /* No Selection */\n .category-detail-panel.empty {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .no-selection {\n text-align: center;\n color: #999;\n }\n\n .no-selection i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n\n .no-selection p {\n margin: 0;\n }\n\n /* Form */\n .category-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .form-group label {\n font-size: 13px;\n font-weight: 500;\n color: #666;\n }\n\n .form-input {\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 14px;\n }\n\n .form-input:focus {\n outline: none;\n border-color: #2196F3;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n animation: fadeIn 0.15s ease-out;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .modal-dialog {\n background: white;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 450px;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.2s ease-out;\n }\n\n .modal-dialog.modal-sm {\n width: 400px;\n }\n\n @keyframes slideIn {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n\n .modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .modal-header.danger {\n background: #ffebee;\n border-bottom-color: #ffcdd2;\n }\n\n .modal-header.danger h3 {\n color: #c62828;\n }\n\n .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .modal-close:hover:not(:disabled) {\n background: #f0f0f0;\n color: #333;\n }\n\n .modal-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .modal-body {\n padding: 20px;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0;\n color: #666;\n line-height: 1.6;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .btn-secondary {\n padding: 8px 16px;\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n color: #666;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n border-color: #ccc;\n }\n\n .btn-secondary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: #1976D2;\n }\n\n .btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-danger {\n padding: 8px 16px;\n background: #d32f2f;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-danger:hover {\n background: #c62828;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .category-detail-panel.empty {\n display: none;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "], encapsulation: 2 });
704
+ i0.ɵɵconditional(ctx.showDeleteConfirm ? 17 : -1);
705
+ } }, dependencies: [i2.NgTemplateOutlet, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.DefaultValueAccessor, i3.SelectControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.LoadingComponent], styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-categories-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f5f7fa;\n overflow: hidden;\n }\n\n /* Header */\n .categories-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: #2196F3;\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: #1976D2;\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 420px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100px;\n height: 100px;\n border-radius: 50%;\n background: linear-gradient(135deg, rgba(33, 150, 243, 0.1) 0%, rgba(33, 150, 243, 0.05) 100%);\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 48px;\n color: #2196F3;\n z-index: 1;\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: #333;\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: #666;\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 16px 0 24px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: #555;\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: #4CAF50 !important;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: linear-gradient(135deg, #2196F3 0%, #1976D2 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n }\n\n .btn-create-large:hover {\n background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);\n }\n\n /* Content Layout */\n .categories-content {\n flex: 1;\n padding: 16px 24px;\n overflow: hidden;\n }\n\n .categories-layout {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n height: 100%;\n }\n\n .category-tree-panel,\n .category-detail-panel {\n background: white;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .panel-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n\n .count-badge {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .panel-actions {\n display: flex;\n gap: 4px;\n }\n\n .icon-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #666;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .icon-btn:hover {\n background: #f0f0f0;\n color: #333;\n }\n\n .icon-btn.danger:hover {\n background: #ffebee;\n color: #d32f2f;\n }\n\n /* Tree Content */\n .tree-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .category-node {\n user-select: none;\n }\n\n .node-content {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .node-content:hover {\n background: #f5f5f5;\n }\n\n .node-content:focus {\n outline: none;\n background: #e8f4fd;\n }\n\n .node-content:focus-visible {\n outline: 2px solid #2196F3;\n outline-offset: -2px;\n background: #e8f4fd;\n }\n\n .node-content.selected {\n background: #e3f2fd;\n }\n\n .node-content.selected:focus-visible {\n outline: 2px solid #1976D2;\n }\n\n .expand-btn {\n background: none;\n border: none;\n padding: 2px;\n color: #999;\n cursor: pointer;\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .expand-btn:hover {\n color: #666;\n }\n\n .expand-placeholder {\n width: 20px;\n }\n\n .node-content .fa-folder,\n .node-content .fa-folder-open {\n color: #ffc107;\n }\n\n .node-name {\n flex: 1;\n font-size: 14px;\n color: #333;\n }\n\n .node-count {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 1px 6px;\n border-radius: 8px;\n }\n\n /* Detail Panel */\n .detail-content {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n }\n\n .detail-field {\n margin-bottom: 16px;\n }\n\n .detail-field label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n }\n\n .field-value {\n font-size: 14px;\n color: #333;\n }\n\n .detail-stats {\n display: flex;\n gap: 24px;\n margin: 24px 0;\n padding: 16px;\n background: #f5f7fa;\n border-radius: 8px;\n }\n\n .stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .stat-value {\n font-size: 24px;\n font-weight: 600;\n color: #2196F3;\n }\n\n .stat-label {\n font-size: 12px;\n color: #999;\n }\n\n .category-lists h4 {\n margin: 0 0 12px;\n font-size: 13px;\n font-weight: 600;\n color: #666;\n }\n\n .mini-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .mini-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #f5f7fa;\n border-radius: 4px;\n font-size: 13px;\n color: #333;\n }\n\n .mini-list-item i {\n color: #999;\n }\n\n /* No Selection */\n .category-detail-panel.empty {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .no-selection {\n text-align: center;\n color: #999;\n }\n\n .no-selection i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n\n .no-selection p {\n margin: 0;\n }\n\n /* Form */\n .category-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .form-group label {\n font-size: 13px;\n font-weight: 500;\n color: #666;\n }\n\n .form-input {\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 14px;\n }\n\n .form-input:focus {\n outline: none;\n border-color: #2196F3;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n animation: fadeIn 0.15s ease-out;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .modal-dialog {\n background: white;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 450px;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.2s ease-out;\n }\n\n .modal-dialog.modal-sm {\n width: 400px;\n }\n\n @keyframes slideIn {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n\n .modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .modal-header.danger {\n background: #ffebee;\n border-bottom-color: #ffcdd2;\n }\n\n .modal-header.danger h3 {\n color: #c62828;\n }\n\n .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .modal-close:hover:not(:disabled) {\n background: #f0f0f0;\n color: #333;\n }\n\n .modal-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .modal-body {\n padding: 20px;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0;\n color: #666;\n line-height: 1.6;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .btn-secondary {\n padding: 8px 16px;\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n color: #666;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n border-color: #ccc;\n }\n\n .btn-secondary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: #1976D2;\n }\n\n .btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-danger {\n padding: 8px 16px;\n background: #d32f2f;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-danger:hover {\n background: #c62828;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .category-detail-panel.empty {\n display: none;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "], encapsulation: 2 });
708
706
  };
709
707
  ListsCategoriesResource = __decorate([
710
708
  RegisterClass(BaseResourceComponent, 'ListsCategoriesResource')
@@ -712,7 +710,7 @@ ListsCategoriesResource = __decorate([
712
710
  export { ListsCategoriesResource };
713
711
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListsCategoriesResource, [{
714
712
  type: Component,
715
- args: [{ selector: 'mj-lists-categories-resource', template: `
713
+ args: [{ standalone: false, selector: 'mj-lists-categories-resource', template: `
716
714
  <div class="lists-categories-container">
717
715
  <!-- Header -->
718
716
  <div class="categories-header">
@@ -727,114 +725,127 @@ export { ListsCategoriesResource };
727
725
  </button>
728
726
  </div>
729
727
  </div>
730
-
728
+
731
729
  <!-- Loading State -->
732
- <div class="loading-container" *ngIf="isLoading">
733
- <mj-loading text="Loading categories..." size="medium"></mj-loading>
734
- </div>
735
-
736
- <!-- Empty State -->
737
- <div class="empty-state" *ngIf="!isLoading && categoryViewModels.length === 0">
738
- <div class="empty-state-icon-wrapper">
739
- <div class="icon-bg"></div>
740
- <i class="fa-solid fa-folder-tree"></i>
730
+ @if (isLoading) {
731
+ <div class="loading-container">
732
+ <mj-loading text="Loading categories..." size="medium"></mj-loading>
741
733
  </div>
742
- <h3>No Categories Yet</h3>
743
- <p>Categories help you organize lists into logical groups.</p>
744
- <div class="empty-state-features">
745
- <div class="feature-item">
746
- <i class="fa-solid fa-check-circle"></i>
747
- <span>Create hierarchical folder structures</span>
748
- </div>
749
- <div class="feature-item">
750
- <i class="fa-solid fa-check-circle"></i>
751
- <span>Quickly find related lists</span>
734
+ }
735
+
736
+ <!-- Empty State -->
737
+ @if (!isLoading && categoryViewModels.length === 0) {
738
+ <div class="empty-state">
739
+ <div class="empty-state-icon-wrapper">
740
+ <div class="icon-bg"></div>
741
+ <i class="fa-solid fa-folder-tree"></i>
752
742
  </div>
753
- </div>
754
- <button class="btn-create-large" (click)="createCategory()">
755
- <i class="fa-solid fa-plus"></i>
756
- Create Your First Category
757
- </button>
758
- </div>
759
-
760
- <!-- Categories Content -->
761
- <div class="categories-content" *ngIf="!isLoading && categoryViewModels.length > 0">
762
- <div class="categories-layout">
763
- <!-- Category Tree -->
764
- <div class="category-tree-panel">
765
- <div class="panel-header">
766
- <h3>Categories</h3>
767
- <span class="count-badge">{{categories.length}}</span>
743
+ <h3>No Categories Yet</h3>
744
+ <p>Categories help you organize lists into logical groups.</p>
745
+ <div class="empty-state-features">
746
+ <div class="feature-item">
747
+ <i class="fa-solid fa-check-circle"></i>
748
+ <span>Create hierarchical folder structures</span>
768
749
  </div>
769
- <div class="tree-content" role="tree" aria-label="Category tree">
770
- <ng-container *ngFor="let vm of getTopLevelCategories()">
771
- <ng-container *ngTemplateOutlet="categoryNodeTemplate; context: { vm: vm }"></ng-container>
772
- </ng-container>
750
+ <div class="feature-item">
751
+ <i class="fa-solid fa-check-circle"></i>
752
+ <span>Quickly find related lists</span>
773
753
  </div>
774
754
  </div>
775
-
776
- <!-- Category Details -->
777
- <div class="category-detail-panel" *ngIf="selectedCategory">
778
- <div class="panel-header">
779
- <h3>Category Details</h3>
780
- <div class="panel-actions">
781
- <button class="icon-btn" (click)="editCategory()" title="Edit">
782
- <i class="fa-solid fa-pen"></i>
783
- </button>
784
- <button class="icon-btn danger" (click)="deleteCategory()" title="Delete">
785
- <i class="fa-solid fa-trash"></i>
786
- </button>
787
- </div>
788
- </div>
789
- <div class="detail-content">
790
- <div class="detail-field">
791
- <label>Name</label>
792
- <span class="field-value">{{selectedCategory.Name}}</span>
793
- </div>
794
- <div class="detail-field" *ngIf="selectedCategory.Description">
795
- <label>Description</label>
796
- <span class="field-value">{{selectedCategory.Description}}</span>
755
+ <button class="btn-create-large" (click)="createCategory()">
756
+ <i class="fa-solid fa-plus"></i>
757
+ Create Your First Category
758
+ </button>
759
+ </div>
760
+ }
761
+
762
+ <!-- Categories Content -->
763
+ @if (!isLoading && categoryViewModels.length > 0) {
764
+ <div class="categories-content">
765
+ <div class="categories-layout">
766
+ <!-- Category Tree -->
767
+ <div class="category-tree-panel">
768
+ <div class="panel-header">
769
+ <h3>Categories</h3>
770
+ <span class="count-badge">{{categories.length}}</span>
797
771
  </div>
798
- <div class="detail-field">
799
- <label>Parent Category</label>
800
- <span class="field-value">
801
- {{getParentCategoryName(selectedCategory) || '(Top Level)'}}
802
- </span>
772
+ <div class="tree-content" role="tree" aria-label="Category tree">
773
+ @for (vm of getTopLevelCategories(); track vm) {
774
+ <ng-container *ngTemplateOutlet="categoryNodeTemplate; context: { vm: vm }"></ng-container>
775
+ }
803
776
  </div>
804
- <div class="detail-stats">
805
- <div class="stat-item">
806
- <span class="stat-value">{{getSelectedCategoryListCount()}}</span>
807
- <span class="stat-label">Lists</span>
777
+ </div>
778
+ <!-- Category Details -->
779
+ @if (selectedCategory) {
780
+ <div class="category-detail-panel">
781
+ <div class="panel-header">
782
+ <h3>Category Details</h3>
783
+ <div class="panel-actions">
784
+ <button class="icon-btn" (click)="editCategory()" title="Edit">
785
+ <i class="fa-solid fa-pen"></i>
786
+ </button>
787
+ <button class="icon-btn danger" (click)="deleteCategory()" title="Delete">
788
+ <i class="fa-solid fa-trash"></i>
789
+ </button>
790
+ </div>
808
791
  </div>
809
- <div class="stat-item">
810
- <span class="stat-value">{{getSelectedCategoryChildCount()}}</span>
811
- <span class="stat-label">Subcategories</span>
792
+ <div class="detail-content">
793
+ <div class="detail-field">
794
+ <label>Name</label>
795
+ <span class="field-value">{{selectedCategory.Name}}</span>
796
+ </div>
797
+ @if (selectedCategory.Description) {
798
+ <div class="detail-field">
799
+ <label>Description</label>
800
+ <span class="field-value">{{selectedCategory.Description}}</span>
801
+ </div>
802
+ }
803
+ <div class="detail-field">
804
+ <label>Parent Category</label>
805
+ <span class="field-value">
806
+ {{getParentCategoryName(selectedCategory) || '(Top Level)'}}
807
+ </span>
808
+ </div>
809
+ <div class="detail-stats">
810
+ <div class="stat-item">
811
+ <span class="stat-value">{{getSelectedCategoryListCount()}}</span>
812
+ <span class="stat-label">Lists</span>
813
+ </div>
814
+ <div class="stat-item">
815
+ <span class="stat-value">{{getSelectedCategoryChildCount()}}</span>
816
+ <span class="stat-label">Subcategories</span>
817
+ </div>
818
+ </div>
819
+ <!-- Lists in this category -->
820
+ @if (selectedCategoryLists.length > 0) {
821
+ <div class="category-lists">
822
+ <h4>Lists in this category</h4>
823
+ <div class="mini-list">
824
+ @for (list of selectedCategoryLists; track list) {
825
+ <div class="mini-list-item">
826
+ <i class="fa-solid fa-list"></i>
827
+ <span>{{list.Name}}</span>
828
+ </div>
829
+ }
830
+ </div>
831
+ </div>
832
+ }
812
833
  </div>
813
834
  </div>
814
-
815
- <!-- Lists in this category -->
816
- <div class="category-lists" *ngIf="selectedCategoryLists.length > 0">
817
- <h4>Lists in this category</h4>
818
- <div class="mini-list">
819
- <div class="mini-list-item" *ngFor="let list of selectedCategoryLists">
820
- <i class="fa-solid fa-list"></i>
821
- <span>{{list.Name}}</span>
822
- </div>
835
+ }
836
+ <!-- No Selection State -->
837
+ @if (!selectedCategory) {
838
+ <div class="category-detail-panel empty">
839
+ <div class="no-selection">
840
+ <i class="fa-solid fa-arrow-left"></i>
841
+ <p>Select a category to view details</p>
823
842
  </div>
824
843
  </div>
825
- </div>
826
- </div>
827
-
828
- <!-- No Selection State -->
829
- <div class="category-detail-panel empty" *ngIf="!selectedCategory">
830
- <div class="no-selection">
831
- <i class="fa-solid fa-arrow-left"></i>
832
- <p>Select a category to view details</p>
833
- </div>
844
+ }
834
845
  </div>
835
846
  </div>
836
- </div>
837
-
847
+ }
848
+
838
849
  <!-- Category Node Template -->
839
850
  <ng-template #categoryNodeTemplate let-vm="vm">
840
851
  <div class="category-node" [style.padding-left.px]="vm.depth * 20">
@@ -851,99 +862,112 @@ export { ListsCategoriesResource };
851
862
  [attr.aria-expanded]="hasChildren(vm.category) ? vm.isExpanded : null"
852
863
  [attr.aria-selected]="selectedCategory?.ID === vm.category.ID"
853
864
  [attr.aria-label]="vm.category.Name + ' - ' + vm.listCount + ' lists'">
854
- <button
855
- class="expand-btn"
856
- *ngIf="hasChildren(vm.category)"
857
- (click)="toggleExpand($event, vm)"
858
- tabindex="-1"
859
- aria-hidden="true">
860
- <i [class]="vm.isExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'"></i>
861
- </button>
862
- <span class="expand-placeholder" *ngIf="!hasChildren(vm.category)"></span>
865
+ @if (hasChildren(vm.category)) {
866
+ <button
867
+ class="expand-btn"
868
+ (click)="toggleExpand($event, vm)"
869
+ tabindex="-1"
870
+ aria-hidden="true">
871
+ <i [class]="vm.isExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'"></i>
872
+ </button>
873
+ }
874
+ @if (!hasChildren(vm.category)) {
875
+ <span class="expand-placeholder"></span>
876
+ }
863
877
  <i class="fa-solid fa-folder" [class.fa-folder-open]="vm.isExpanded" aria-hidden="true"></i>
864
878
  <span class="node-name">{{vm.category.Name}}</span>
865
879
  <span class="node-count" aria-hidden="true">{{vm.listCount}}</span>
866
880
  </div>
867
- <div class="node-children" *ngIf="vm.isExpanded && hasChildren(vm.category)" role="group">
868
- <ng-container *ngFor="let childVm of getChildCategories(vm.category)">
869
- <ng-container *ngTemplateOutlet="categoryNodeTemplate; context: { vm: childVm }"></ng-container>
870
- </ng-container>
871
- </div>
881
+ @if (vm.isExpanded && hasChildren(vm.category)) {
882
+ <div class="node-children" role="group">
883
+ @for (childVm of getChildCategories(vm.category); track childVm) {
884
+ <ng-container *ngTemplateOutlet="categoryNodeTemplate; context: { vm: childVm }"></ng-container>
885
+ }
886
+ </div>
887
+ }
872
888
  </div>
873
889
  </ng-template>
874
-
890
+
875
891
  <!-- Create/Edit Dialog -->
876
- <div class="modal-overlay" *ngIf="showDialog" (click)="closeDialog()">
877
- <div class="modal-dialog" (click)="$event.stopPropagation()">
878
- <div class="modal-header">
879
- <h3>{{editingCategory ? 'Edit Category' : 'Create Category'}}</h3>
880
- <button class="modal-close" (click)="closeDialog()" [disabled]="isSaving">
881
- <i class="fa-solid fa-times"></i>
882
- </button>
883
- </div>
884
- <div class="modal-body">
885
- <div class="category-form">
886
- <div class="form-group">
887
- <label>Name *</label>
888
- <input
889
- type="text"
890
- [(ngModel)]="dialogName"
891
- placeholder="Enter category name"
892
- class="form-input" />
893
- </div>
894
- <div class="form-group">
895
- <label>Description</label>
896
- <textarea
897
- [(ngModel)]="dialogDescription"
898
- placeholder="Optional description"
899
- class="form-input"
892
+ @if (showDialog) {
893
+ <div class="modal-overlay" (click)="closeDialog()">
894
+ <div class="modal-dialog" (click)="$event.stopPropagation()">
895
+ <div class="modal-header">
896
+ <h3>{{editingCategory ? 'Edit Category' : 'Create Category'}}</h3>
897
+ <button class="modal-close" (click)="closeDialog()" [disabled]="isSaving">
898
+ <i class="fa-solid fa-times"></i>
899
+ </button>
900
+ </div>
901
+ <div class="modal-body">
902
+ <div class="category-form">
903
+ <div class="form-group">
904
+ <label>Name *</label>
905
+ <input
906
+ type="text"
907
+ [(ngModel)]="dialogName"
908
+ placeholder="Enter category name"
909
+ class="form-input" />
910
+ </div>
911
+ <div class="form-group">
912
+ <label>Description</label>
913
+ <textarea
914
+ [(ngModel)]="dialogDescription"
915
+ placeholder="Optional description"
916
+ class="form-input"
900
917
  rows="3"></textarea>
901
- </div>
902
- <div class="form-group">
903
- <label>Parent Category</label>
904
- <select
905
- [(ngModel)]="dialogParentId"
906
- class="form-input">
907
- <option *ngFor="let parent of availableParents" [ngValue]="parent.ID">{{parent.displayName}}</option>
908
- </select>
918
+ </div>
919
+ <div class="form-group">
920
+ <label>Parent Category</label>
921
+ <select
922
+ [(ngModel)]="dialogParentId"
923
+ class="form-input">
924
+ @for (parent of availableParents; track parent) {
925
+ <option [ngValue]="parent.ID">{{parent.displayName}}</option>
926
+ }
927
+ </select>
928
+ </div>
909
929
  </div>
910
930
  </div>
911
- </div>
912
- <div class="modal-footer">
913
- <button
914
- class="btn-primary"
915
- (click)="saveCategory()"
916
- [disabled]="!dialogName || isSaving">
917
- <i *ngIf="isSaving" class="fa-solid fa-spinner fa-spin"></i>
918
- {{isSaving ? 'Saving...' : (editingCategory ? 'Save' : 'Create')}}
919
- </button>
920
- <button class="btn-secondary" (click)="closeDialog()" [disabled]="isSaving">Cancel</button>
931
+ <div class="modal-footer">
932
+ <button
933
+ class="btn-primary"
934
+ (click)="saveCategory()"
935
+ [disabled]="!dialogName || isSaving">
936
+ @if (isSaving) {
937
+ <i class="fa-solid fa-spinner fa-spin"></i>
938
+ }
939
+ {{isSaving ? 'Saving...' : (editingCategory ? 'Save' : 'Create')}}
940
+ </button>
941
+ <button class="btn-secondary" (click)="closeDialog()" [disabled]="isSaving">Cancel</button>
942
+ </div>
921
943
  </div>
922
944
  </div>
923
- </div>
924
-
945
+ }
946
+
925
947
  <!-- Delete Confirmation Dialog -->
926
- <div class="modal-overlay" *ngIf="showDeleteConfirm" (click)="cancelDelete()">
927
- <div class="modal-dialog modal-sm" (click)="$event.stopPropagation()">
928
- <div class="modal-header danger">
929
- <h3>Delete Category</h3>
930
- <button class="modal-close" (click)="cancelDelete()">
931
- <i class="fa-solid fa-times"></i>
932
- </button>
933
- </div>
934
- <div class="modal-body">
935
- <p>{{deleteConfirmMessage}}</p>
936
- </div>
937
- <div class="modal-footer">
938
- <button class="btn-danger" (click)="confirmDelete()">
939
- Delete
940
- </button>
941
- <button class="btn-secondary" (click)="cancelDelete()">Cancel</button>
948
+ @if (showDeleteConfirm) {
949
+ <div class="modal-overlay" (click)="cancelDelete()">
950
+ <div class="modal-dialog modal-sm" (click)="$event.stopPropagation()">
951
+ <div class="modal-header danger">
952
+ <h3>Delete Category</h3>
953
+ <button class="modal-close" (click)="cancelDelete()">
954
+ <i class="fa-solid fa-times"></i>
955
+ </button>
956
+ </div>
957
+ <div class="modal-body">
958
+ <p>{{deleteConfirmMessage}}</p>
959
+ </div>
960
+ <div class="modal-footer">
961
+ <button class="btn-danger" (click)="confirmDelete()">
962
+ Delete
963
+ </button>
964
+ <button class="btn-secondary" (click)="cancelDelete()">Cancel</button>
965
+ </div>
942
966
  </div>
943
967
  </div>
944
- </div>
968
+ }
945
969
  </div>
946
- `, encapsulation: ViewEncapsulation.None, styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-categories-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f5f7fa;\n overflow: hidden;\n }\n\n /* Header */\n .categories-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: #2196F3;\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: #1976D2;\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 420px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100px;\n height: 100px;\n border-radius: 50%;\n background: linear-gradient(135deg, rgba(33, 150, 243, 0.1) 0%, rgba(33, 150, 243, 0.05) 100%);\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 48px;\n color: #2196F3;\n z-index: 1;\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: #333;\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: #666;\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 16px 0 24px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: #555;\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: #4CAF50 !important;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: linear-gradient(135deg, #2196F3 0%, #1976D2 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n }\n\n .btn-create-large:hover {\n background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);\n }\n\n /* Content Layout */\n .categories-content {\n flex: 1;\n padding: 16px 24px;\n overflow: hidden;\n }\n\n .categories-layout {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n height: 100%;\n }\n\n .category-tree-panel,\n .category-detail-panel {\n background: white;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .panel-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n\n .count-badge {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .panel-actions {\n display: flex;\n gap: 4px;\n }\n\n .icon-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #666;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .icon-btn:hover {\n background: #f0f0f0;\n color: #333;\n }\n\n .icon-btn.danger:hover {\n background: #ffebee;\n color: #d32f2f;\n }\n\n /* Tree Content */\n .tree-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .category-node {\n user-select: none;\n }\n\n .node-content {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .node-content:hover {\n background: #f5f5f5;\n }\n\n .node-content:focus {\n outline: none;\n background: #e8f4fd;\n }\n\n .node-content:focus-visible {\n outline: 2px solid #2196F3;\n outline-offset: -2px;\n background: #e8f4fd;\n }\n\n .node-content.selected {\n background: #e3f2fd;\n }\n\n .node-content.selected:focus-visible {\n outline: 2px solid #1976D2;\n }\n\n .expand-btn {\n background: none;\n border: none;\n padding: 2px;\n color: #999;\n cursor: pointer;\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .expand-btn:hover {\n color: #666;\n }\n\n .expand-placeholder {\n width: 20px;\n }\n\n .node-content .fa-folder,\n .node-content .fa-folder-open {\n color: #ffc107;\n }\n\n .node-name {\n flex: 1;\n font-size: 14px;\n color: #333;\n }\n\n .node-count {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 1px 6px;\n border-radius: 8px;\n }\n\n /* Detail Panel */\n .detail-content {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n }\n\n .detail-field {\n margin-bottom: 16px;\n }\n\n .detail-field label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n }\n\n .field-value {\n font-size: 14px;\n color: #333;\n }\n\n .detail-stats {\n display: flex;\n gap: 24px;\n margin: 24px 0;\n padding: 16px;\n background: #f5f7fa;\n border-radius: 8px;\n }\n\n .stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .stat-value {\n font-size: 24px;\n font-weight: 600;\n color: #2196F3;\n }\n\n .stat-label {\n font-size: 12px;\n color: #999;\n }\n\n .category-lists h4 {\n margin: 0 0 12px;\n font-size: 13px;\n font-weight: 600;\n color: #666;\n }\n\n .mini-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .mini-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #f5f7fa;\n border-radius: 4px;\n font-size: 13px;\n color: #333;\n }\n\n .mini-list-item i {\n color: #999;\n }\n\n /* No Selection */\n .category-detail-panel.empty {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .no-selection {\n text-align: center;\n color: #999;\n }\n\n .no-selection i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n\n .no-selection p {\n margin: 0;\n }\n\n /* Form */\n .category-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .form-group label {\n font-size: 13px;\n font-weight: 500;\n color: #666;\n }\n\n .form-input {\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 14px;\n }\n\n .form-input:focus {\n outline: none;\n border-color: #2196F3;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n animation: fadeIn 0.15s ease-out;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .modal-dialog {\n background: white;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 450px;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.2s ease-out;\n }\n\n .modal-dialog.modal-sm {\n width: 400px;\n }\n\n @keyframes slideIn {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n\n .modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .modal-header.danger {\n background: #ffebee;\n border-bottom-color: #ffcdd2;\n }\n\n .modal-header.danger h3 {\n color: #c62828;\n }\n\n .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .modal-close:hover:not(:disabled) {\n background: #f0f0f0;\n color: #333;\n }\n\n .modal-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .modal-body {\n padding: 20px;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0;\n color: #666;\n line-height: 1.6;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .btn-secondary {\n padding: 8px 16px;\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n color: #666;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n border-color: #ccc;\n }\n\n .btn-secondary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: #1976D2;\n }\n\n .btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-danger {\n padding: 8px 16px;\n background: #d32f2f;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-danger:hover {\n background: #c62828;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .category-detail-panel.empty {\n display: none;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "] }]
970
+ `, encapsulation: ViewEncapsulation.None, styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-categories-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f5f7fa;\n overflow: hidden;\n }\n\n /* Header */\n .categories-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: #2196F3;\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: #1976D2;\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 420px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100px;\n height: 100px;\n border-radius: 50%;\n background: linear-gradient(135deg, rgba(33, 150, 243, 0.1) 0%, rgba(33, 150, 243, 0.05) 100%);\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 48px;\n color: #2196F3;\n z-index: 1;\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: #333;\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: #666;\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 16px 0 24px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: #555;\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: #4CAF50 !important;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: linear-gradient(135deg, #2196F3 0%, #1976D2 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n }\n\n .btn-create-large:hover {\n background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);\n }\n\n /* Content Layout */\n .categories-content {\n flex: 1;\n padding: 16px 24px;\n overflow: hidden;\n }\n\n .categories-layout {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n height: 100%;\n }\n\n .category-tree-panel,\n .category-detail-panel {\n background: white;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .panel-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #333;\n }\n\n .count-badge {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .panel-actions {\n display: flex;\n gap: 4px;\n }\n\n .icon-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #666;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .icon-btn:hover {\n background: #f0f0f0;\n color: #333;\n }\n\n .icon-btn.danger:hover {\n background: #ffebee;\n color: #d32f2f;\n }\n\n /* Tree Content */\n .tree-content {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n .category-node {\n user-select: none;\n }\n\n .node-content {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .node-content:hover {\n background: #f5f5f5;\n }\n\n .node-content:focus {\n outline: none;\n background: #e8f4fd;\n }\n\n .node-content:focus-visible {\n outline: 2px solid #2196F3;\n outline-offset: -2px;\n background: #e8f4fd;\n }\n\n .node-content.selected {\n background: #e3f2fd;\n }\n\n .node-content.selected:focus-visible {\n outline: 2px solid #1976D2;\n }\n\n .expand-btn {\n background: none;\n border: none;\n padding: 2px;\n color: #999;\n cursor: pointer;\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .expand-btn:hover {\n color: #666;\n }\n\n .expand-placeholder {\n width: 20px;\n }\n\n .node-content .fa-folder,\n .node-content .fa-folder-open {\n color: #ffc107;\n }\n\n .node-name {\n flex: 1;\n font-size: 14px;\n color: #333;\n }\n\n .node-count {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 1px 6px;\n border-radius: 8px;\n }\n\n /* Detail Panel */\n .detail-content {\n flex: 1;\n padding: 16px;\n overflow-y: auto;\n }\n\n .detail-field {\n margin-bottom: 16px;\n }\n\n .detail-field label {\n display: block;\n font-size: 12px;\n font-weight: 500;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n }\n\n .field-value {\n font-size: 14px;\n color: #333;\n }\n\n .detail-stats {\n display: flex;\n gap: 24px;\n margin: 24px 0;\n padding: 16px;\n background: #f5f7fa;\n border-radius: 8px;\n }\n\n .stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .stat-value {\n font-size: 24px;\n font-weight: 600;\n color: #2196F3;\n }\n\n .stat-label {\n font-size: 12px;\n color: #999;\n }\n\n .category-lists h4 {\n margin: 0 0 12px;\n font-size: 13px;\n font-weight: 600;\n color: #666;\n }\n\n .mini-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .mini-list-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #f5f7fa;\n border-radius: 4px;\n font-size: 13px;\n color: #333;\n }\n\n .mini-list-item i {\n color: #999;\n }\n\n /* No Selection */\n .category-detail-panel.empty {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .no-selection {\n text-align: center;\n color: #999;\n }\n\n .no-selection i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n\n .no-selection p {\n margin: 0;\n }\n\n /* Form */\n .category-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n }\n\n .form-group label {\n font-size: 13px;\n font-weight: 500;\n color: #666;\n }\n\n .form-input {\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 14px;\n }\n\n .form-input:focus {\n outline: none;\n border-color: #2196F3;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n animation: fadeIn 0.15s ease-out;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .modal-dialog {\n background: white;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 450px;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.2s ease-out;\n }\n\n .modal-dialog.modal-sm {\n width: 400px;\n }\n\n @keyframes slideIn {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n\n .modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .modal-header.danger {\n background: #ffebee;\n border-bottom-color: #ffcdd2;\n }\n\n .modal-header.danger h3 {\n color: #c62828;\n }\n\n .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n }\n\n .modal-close:hover:not(:disabled) {\n background: #f0f0f0;\n color: #333;\n }\n\n .modal-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .modal-body {\n padding: 20px;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0;\n color: #666;\n line-height: 1.6;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .btn-secondary {\n padding: 8px 16px;\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n color: #666;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n border-color: #ccc;\n }\n\n .btn-secondary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: #1976D2;\n }\n\n .btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-danger {\n padding: 8px 16px;\n background: #d32f2f;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .btn-danger:hover {\n background: #c62828;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .category-detail-panel.empty {\n display: none;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "] }]
947
971
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i1.MJNotificationService }], null); })();
948
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListsCategoriesResource, { className: "ListsCategoriesResource", filePath: "src/Lists/components/lists-categories-resource.component.ts", lineNumber: 891 }); })();
972
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListsCategoriesResource, { className: "ListsCategoriesResource", filePath: "src/Lists/components/lists-categories-resource.component.ts", lineNumber: 913 }); })();
949
973
  //# sourceMappingURL=lists-categories-resource.component.js.map