@memberjunction/ng-dashboards 5.34.0 → 5.35.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.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +781 -783
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +79 -30
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +196 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +32 -40
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +32 -40
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +32 -40
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +127 -106
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +44 -45
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +309 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +866 -847
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +241 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +486 -532
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +234 -246
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +587 -608
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +107 -93
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +36 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +2 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +24 -3
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +31 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +1 -1
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +28 -1
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +30 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +52 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -15,369 +15,361 @@ import * as i2 from "@memberjunction/ng-shared-generic";
|
|
|
15
15
|
import * as i3 from "@memberjunction/ng-credentials";
|
|
16
16
|
import * as i4 from "@angular/common";
|
|
17
17
|
const _c0 = ["categoryEditPanel"];
|
|
18
|
-
function
|
|
19
|
-
i0.ɵɵ
|
|
20
|
-
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
i0.ɵɵ
|
|
24
|
-
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.createNewCategory()); });
|
|
25
|
-
i0.ɵɵelement(1, "i", 33);
|
|
26
|
-
i0.ɵɵelementStart(2, "span");
|
|
27
|
-
i0.ɵɵtext(3, "New Category");
|
|
28
|
-
i0.ɵɵelementEnd()();
|
|
29
|
-
} }
|
|
30
|
-
function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
32
|
-
i0.ɵɵelementStart(0, "button", 34);
|
|
33
|
-
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_18_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.clearSearch()); });
|
|
34
|
-
i0.ɵɵelement(1, "i", 35);
|
|
18
|
+
function CredentialsCategoriesResourceComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
20
|
+
i0.ɵɵelementStart(0, "button", 17);
|
|
21
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createNewCategory()); });
|
|
22
|
+
i0.ɵɵelement(1, "i", 18);
|
|
23
|
+
i0.ɵɵtext(2, " New Category ");
|
|
35
24
|
i0.ɵɵelementEnd();
|
|
36
25
|
} }
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
26
|
+
function CredentialsCategoriesResourceComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelement(0, "mj-loading", 14);
|
|
28
|
+
} }
|
|
29
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
31
|
+
i0.ɵɵelementStart(0, "button", 39);
|
|
32
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const node_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.toggleExpand(node_r5, $event)); });
|
|
41
33
|
i0.ɵɵelement(1, "i");
|
|
42
34
|
i0.ɵɵelementEnd();
|
|
43
35
|
} if (rf & 2) {
|
|
44
|
-
const
|
|
36
|
+
const node_r5 = i0.ɵɵnextContext().$implicit;
|
|
45
37
|
i0.ɵɵadvance();
|
|
46
|
-
i0.ɵɵclassMap(
|
|
38
|
+
i0.ɵɵclassMap(node_r5.expanded ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-right");
|
|
47
39
|
} }
|
|
48
|
-
function
|
|
49
|
-
i0.ɵɵelement(0, "span",
|
|
40
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelement(0, "span", 28);
|
|
50
42
|
} }
|
|
51
|
-
function
|
|
52
|
-
i0.ɵɵelementStart(0, "div",
|
|
43
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
53
45
|
i0.ɵɵtext(1);
|
|
54
46
|
i0.ɵɵpipe(2, "slice");
|
|
55
47
|
i0.ɵɵelementEnd();
|
|
56
48
|
} if (rf & 2) {
|
|
57
|
-
const
|
|
49
|
+
const node_r5 = i0.ɵɵnextContext().$implicit;
|
|
58
50
|
i0.ɵɵadvance();
|
|
59
|
-
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind3(2, 2,
|
|
51
|
+
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind3(2, 2, node_r5.category.Description, 0, 50), "", node_r5.category.Description.length > 50 ? "..." : "", " ");
|
|
60
52
|
} }
|
|
61
|
-
function
|
|
62
|
-
i0.ɵɵelementStart(0, "span",
|
|
63
|
-
i0.ɵɵelement(1, "i",
|
|
53
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
54
|
+
i0.ɵɵelementStart(0, "span", 34);
|
|
55
|
+
i0.ɵɵelement(1, "i", 40);
|
|
64
56
|
i0.ɵɵtext(2);
|
|
65
57
|
i0.ɵɵelementEnd();
|
|
66
58
|
} if (rf & 2) {
|
|
67
|
-
const
|
|
59
|
+
const node_r5 = i0.ɵɵnextContext().$implicit;
|
|
68
60
|
i0.ɵɵadvance(2);
|
|
69
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
61
|
+
i0.ɵɵtextInterpolate1(" ", node_r5.typeCount, " ");
|
|
70
62
|
} }
|
|
71
|
-
function
|
|
72
|
-
i0.ɵɵelementStart(0, "span",
|
|
73
|
-
i0.ɵɵelement(1, "i",
|
|
63
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
+
i0.ɵɵelementStart(0, "span", 35);
|
|
65
|
+
i0.ɵɵelement(1, "i", 41);
|
|
74
66
|
i0.ɵɵtext(2);
|
|
75
67
|
i0.ɵɵelementEnd();
|
|
76
68
|
} if (rf & 2) {
|
|
77
|
-
const
|
|
69
|
+
const node_r5 = i0.ɵɵnextContext().$implicit;
|
|
78
70
|
i0.ɵɵadvance(2);
|
|
79
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
71
|
+
i0.ɵɵtextInterpolate1(" ", node_r5.children.length, " ");
|
|
80
72
|
} }
|
|
81
|
-
function
|
|
82
|
-
const
|
|
83
|
-
i0.ɵɵelementStart(0, "button",
|
|
84
|
-
i0.ɵɵlistener("click", function
|
|
85
|
-
i0.ɵɵelement(1, "i",
|
|
73
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
75
|
+
i0.ɵɵelementStart(0, "button", 42);
|
|
76
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_14_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const node_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editCategory(node_r5, $event)); });
|
|
77
|
+
i0.ɵɵelement(1, "i", 43);
|
|
86
78
|
i0.ɵɵelementEnd();
|
|
87
79
|
} }
|
|
88
|
-
function
|
|
89
|
-
const
|
|
90
|
-
i0.ɵɵelementStart(0, "button",
|
|
91
|
-
i0.ɵɵlistener("click", function
|
|
92
|
-
i0.ɵɵelement(1, "i",
|
|
80
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
82
|
+
i0.ɵɵelementStart(0, "button", 44);
|
|
83
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_15_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r8); const node_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteCategory(node_r5, $event)); });
|
|
84
|
+
i0.ɵɵelement(1, "i", 45);
|
|
93
85
|
i0.ɵɵelementEnd();
|
|
94
86
|
} }
|
|
95
|
-
function
|
|
96
|
-
const
|
|
97
|
-
i0.ɵɵelementStart(0, "div",
|
|
98
|
-
i0.ɵɵlistener("click", function
|
|
99
|
-
i0.ɵɵelementStart(1, "div",
|
|
100
|
-
i0.ɵɵconditionalCreate(2,
|
|
101
|
-
i0.ɵɵconditionalCreate(3,
|
|
102
|
-
i0.ɵɵelementStart(4, "div",
|
|
87
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
89
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
90
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Template_div_click_0_listener() { const node_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectNode(node_r5)); });
|
|
91
|
+
i0.ɵɵelementStart(1, "div", 26);
|
|
92
|
+
i0.ɵɵconditionalCreate(2, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_2_Template, 2, 2, "button", 27);
|
|
93
|
+
i0.ɵɵconditionalCreate(3, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_3_Template, 1, 0, "span", 28);
|
|
94
|
+
i0.ɵɵelementStart(4, "div", 29);
|
|
103
95
|
i0.ɵɵelement(5, "i");
|
|
104
96
|
i0.ɵɵelementEnd();
|
|
105
|
-
i0.ɵɵelementStart(6, "div",
|
|
97
|
+
i0.ɵɵelementStart(6, "div", 30)(7, "div", 31);
|
|
106
98
|
i0.ɵɵtext(8);
|
|
107
99
|
i0.ɵɵelementEnd();
|
|
108
|
-
i0.ɵɵconditionalCreate(9,
|
|
100
|
+
i0.ɵɵconditionalCreate(9, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_9_Template, 3, 6, "div", 32);
|
|
109
101
|
i0.ɵɵelementEnd();
|
|
110
|
-
i0.ɵɵelementStart(10, "div",
|
|
111
|
-
i0.ɵɵconditionalCreate(11,
|
|
112
|
-
i0.ɵɵconditionalCreate(12,
|
|
102
|
+
i0.ɵɵelementStart(10, "div", 33);
|
|
103
|
+
i0.ɵɵconditionalCreate(11, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_11_Template, 3, 1, "span", 34);
|
|
104
|
+
i0.ɵɵconditionalCreate(12, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_12_Template, 3, 1, "span", 35);
|
|
113
105
|
i0.ɵɵelementEnd();
|
|
114
|
-
i0.ɵɵelementStart(13, "div",
|
|
115
|
-
i0.ɵɵconditionalCreate(14,
|
|
116
|
-
i0.ɵɵconditionalCreate(15,
|
|
106
|
+
i0.ɵɵelementStart(13, "div", 36);
|
|
107
|
+
i0.ɵɵconditionalCreate(14, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_14_Template, 2, 0, "button", 37);
|
|
108
|
+
i0.ɵɵconditionalCreate(15, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Conditional_15_Template, 2, 0, "button", 38);
|
|
117
109
|
i0.ɵɵelementEnd()()();
|
|
118
110
|
} if (rf & 2) {
|
|
119
|
-
const
|
|
120
|
-
const ɵ$
|
|
121
|
-
const
|
|
122
|
-
i0.ɵɵstyleProp("padding-left", 12 +
|
|
123
|
-
i0.ɵɵclassProp("selected",
|
|
111
|
+
const node_r5 = ctx.$implicit;
|
|
112
|
+
const ɵ$index_48_r9 = ctx.$index;
|
|
113
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
114
|
+
i0.ɵɵstyleProp("padding-left", 12 + node_r5.level * 20, "px");
|
|
115
|
+
i0.ɵɵclassProp("selected", ctx_r2.IsNodeSelected(node_r5));
|
|
124
116
|
i0.ɵɵadvance(2);
|
|
125
|
-
i0.ɵɵconditional(
|
|
117
|
+
i0.ɵɵconditional(node_r5.children.length > 0 ? 2 : -1);
|
|
126
118
|
i0.ɵɵadvance();
|
|
127
|
-
i0.ɵɵconditional(
|
|
119
|
+
i0.ɵɵconditional(node_r5.children.length === 0 ? 3 : -1);
|
|
128
120
|
i0.ɵɵadvance();
|
|
129
|
-
i0.ɵɵstyleProp("background-color",
|
|
121
|
+
i0.ɵɵstyleProp("background-color", ctx_r2.getCategoryColor(ɵ$index_48_r9) + "15")("color", ctx_r2.getCategoryColor(ɵ$index_48_r9));
|
|
130
122
|
i0.ɵɵadvance();
|
|
131
|
-
i0.ɵɵclassMap(
|
|
123
|
+
i0.ɵɵclassMap(node_r5.category.IconClass || "fa-solid fa-folder");
|
|
132
124
|
i0.ɵɵadvance(3);
|
|
133
|
-
i0.ɵɵtextInterpolate(
|
|
125
|
+
i0.ɵɵtextInterpolate(node_r5.category.Name);
|
|
134
126
|
i0.ɵɵadvance();
|
|
135
|
-
i0.ɵɵconditional(
|
|
127
|
+
i0.ɵɵconditional(node_r5.category.Description ? 9 : -1);
|
|
136
128
|
i0.ɵɵadvance(2);
|
|
137
|
-
i0.ɵɵconditional(
|
|
129
|
+
i0.ɵɵconditional(node_r5.typeCount > 0 ? 11 : -1);
|
|
138
130
|
i0.ɵɵadvance();
|
|
139
|
-
i0.ɵɵconditional(
|
|
131
|
+
i0.ɵɵconditional(node_r5.children.length > 0 ? 12 : -1);
|
|
140
132
|
i0.ɵɵadvance(2);
|
|
141
|
-
i0.ɵɵconditional(
|
|
133
|
+
i0.ɵɵconditional(ctx_r2.UserCanUpdate ? 14 : -1);
|
|
142
134
|
i0.ɵɵadvance();
|
|
143
|
-
i0.ɵɵconditional(
|
|
135
|
+
i0.ɵɵconditional(ctx_r2.UserCanDelete && node_r5.children.length === 0 && node_r5.typeCount === 0 ? 15 : -1);
|
|
144
136
|
} }
|
|
145
|
-
function
|
|
146
|
-
i0.ɵɵelementStart(0, "div",
|
|
147
|
-
i0.ɵɵrepeaterCreate(1,
|
|
137
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
139
|
+
i0.ɵɵrepeaterCreate(1, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_For_2_Template, 16, 18, "div", 24, i0.ɵɵrepeaterTrackByIdentity);
|
|
148
140
|
i0.ɵɵelementEnd();
|
|
149
141
|
} if (rf & 2) {
|
|
150
|
-
const
|
|
142
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
151
143
|
i0.ɵɵadvance();
|
|
152
|
-
i0.ɵɵrepeater(
|
|
144
|
+
i0.ɵɵrepeater(ctx_r2.getFlattenedNodes());
|
|
153
145
|
} }
|
|
154
|
-
function
|
|
155
|
-
const
|
|
146
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
156
148
|
i0.ɵɵelementStart(0, "p");
|
|
157
149
|
i0.ɵɵtext(1, " No categories match your search. ");
|
|
158
|
-
i0.ɵɵelementStart(2, "button",
|
|
159
|
-
i0.ɵɵlistener("click", function
|
|
150
|
+
i0.ɵɵelementStart(2, "button", 49);
|
|
151
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.clearSearch()); });
|
|
160
152
|
i0.ɵɵtext(3, "Clear search");
|
|
161
153
|
i0.ɵɵelementEnd()();
|
|
162
154
|
} }
|
|
163
|
-
function
|
|
155
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
164
156
|
i0.ɵɵelementStart(0, "p");
|
|
165
157
|
i0.ɵɵtext(1, " Get started by creating your first category. ");
|
|
166
158
|
i0.ɵɵelementEnd();
|
|
167
159
|
} }
|
|
168
|
-
function
|
|
169
|
-
const
|
|
170
|
-
i0.ɵɵelementStart(0, "button",
|
|
171
|
-
i0.ɵɵlistener("click", function
|
|
172
|
-
i0.ɵɵelement(1, "i",
|
|
160
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
161
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
162
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
163
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createNewCategory()); });
|
|
164
|
+
i0.ɵɵelement(1, "i", 18);
|
|
173
165
|
i0.ɵɵtext(2, " Create Category ");
|
|
174
166
|
i0.ɵɵelementEnd();
|
|
175
167
|
} }
|
|
176
|
-
function
|
|
177
|
-
i0.ɵɵelementStart(0, "div",
|
|
178
|
-
i0.ɵɵelement(2, "i",
|
|
168
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "div", 46);
|
|
170
|
+
i0.ɵɵelement(2, "i", 47);
|
|
179
171
|
i0.ɵɵelementEnd();
|
|
180
172
|
i0.ɵɵelementStart(3, "h3");
|
|
181
173
|
i0.ɵɵtext(4, "No Categories");
|
|
182
174
|
i0.ɵɵelementEnd();
|
|
183
|
-
i0.ɵɵconditionalCreate(5,
|
|
184
|
-
i0.ɵɵconditionalCreate(6,
|
|
185
|
-
i0.ɵɵconditionalCreate(7,
|
|
175
|
+
i0.ɵɵconditionalCreate(5, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_5_Template, 4, 0, "p");
|
|
176
|
+
i0.ɵɵconditionalCreate(6, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_6_Template, 2, 0, "p");
|
|
177
|
+
i0.ɵɵconditionalCreate(7, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Conditional_7_Template, 3, 0, "button", 48);
|
|
186
178
|
i0.ɵɵelementEnd();
|
|
187
179
|
} if (rf & 2) {
|
|
188
|
-
const
|
|
180
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
189
181
|
i0.ɵɵadvance(5);
|
|
190
|
-
i0.ɵɵconditional(
|
|
182
|
+
i0.ɵɵconditional(ctx_r2.searchText ? 5 : -1);
|
|
191
183
|
i0.ɵɵadvance();
|
|
192
|
-
i0.ɵɵconditional(!
|
|
184
|
+
i0.ɵɵconditional(!ctx_r2.searchText ? 6 : -1);
|
|
193
185
|
i0.ɵɵadvance();
|
|
194
|
-
i0.ɵɵconditional(
|
|
186
|
+
i0.ɵɵconditional(ctx_r2.UserCanCreate && !ctx_r2.searchText ? 7 : -1);
|
|
195
187
|
} }
|
|
196
|
-
function
|
|
197
|
-
i0.ɵɵelementStart(0, "span",
|
|
188
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
189
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
198
190
|
i0.ɵɵtext(1);
|
|
199
191
|
i0.ɵɵelementEnd();
|
|
200
192
|
} if (rf & 2) {
|
|
201
|
-
const
|
|
193
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
202
194
|
i0.ɵɵadvance();
|
|
203
|
-
i0.ɵɵtextInterpolate1(" Level ",
|
|
195
|
+
i0.ɵɵtextInterpolate1(" Level ", ctx_r2.selectedNode.level + 1, " ");
|
|
204
196
|
} }
|
|
205
|
-
function
|
|
206
|
-
const
|
|
207
|
-
i0.ɵɵelementStart(0, "button",
|
|
208
|
-
i0.ɵɵlistener("click", function
|
|
209
|
-
i0.ɵɵelement(1, "i",
|
|
197
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
199
|
+
i0.ɵɵelementStart(0, "button", 42);
|
|
200
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editCategory(ctx_r2.selectedNode)); });
|
|
201
|
+
i0.ɵɵelement(1, "i", 43);
|
|
210
202
|
i0.ɵɵelementEnd();
|
|
211
203
|
} }
|
|
212
|
-
function
|
|
213
|
-
i0.ɵɵelementStart(0, "div",
|
|
214
|
-
i0.ɵɵelement(2, "i",
|
|
204
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
i0.ɵɵelementStart(0, "div", 63)(1, "h3");
|
|
206
|
+
i0.ɵɵelement(2, "i", 68);
|
|
215
207
|
i0.ɵɵtext(3, " Description ");
|
|
216
208
|
i0.ɵɵelementEnd();
|
|
217
|
-
i0.ɵɵelementStart(4, "p",
|
|
209
|
+
i0.ɵɵelementStart(4, "p", 69);
|
|
218
210
|
i0.ɵɵtext(5);
|
|
219
211
|
i0.ɵɵelementEnd()();
|
|
220
212
|
} if (rf & 2) {
|
|
221
|
-
const
|
|
213
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
222
214
|
i0.ɵɵadvance(5);
|
|
223
|
-
i0.ɵɵtextInterpolate(
|
|
215
|
+
i0.ɵɵtextInterpolate(ctx_r2.selectedNode.category.Description);
|
|
224
216
|
} }
|
|
225
|
-
function
|
|
226
|
-
i0.ɵɵelementStart(0, "div",
|
|
217
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_25_For_6_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
218
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
227
219
|
i0.ɵɵtext(1);
|
|
228
220
|
i0.ɵɵpipe(2, "slice");
|
|
229
221
|
i0.ɵɵelementEnd();
|
|
230
222
|
} if (rf & 2) {
|
|
231
|
-
const
|
|
223
|
+
const type_r14 = i0.ɵɵnextContext().$implicit;
|
|
232
224
|
i0.ɵɵadvance();
|
|
233
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1,
|
|
225
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, type_r14.Description, 0, 60));
|
|
234
226
|
} }
|
|
235
|
-
function
|
|
236
|
-
i0.ɵɵelementStart(0, "div",
|
|
227
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_25_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
228
|
+
i0.ɵɵelementStart(0, "div", 71)(1, "div", 72);
|
|
237
229
|
i0.ɵɵelement(2, "i");
|
|
238
230
|
i0.ɵɵelementEnd();
|
|
239
|
-
i0.ɵɵelementStart(3, "div",
|
|
231
|
+
i0.ɵɵelementStart(3, "div", 73)(4, "div", 74);
|
|
240
232
|
i0.ɵɵtext(5);
|
|
241
233
|
i0.ɵɵelementEnd();
|
|
242
|
-
i0.ɵɵconditionalCreate(6,
|
|
234
|
+
i0.ɵɵconditionalCreate(6, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_25_For_6_Conditional_6_Template, 3, 5, "div", 75);
|
|
243
235
|
i0.ɵɵelementEnd()();
|
|
244
236
|
} if (rf & 2) {
|
|
245
|
-
const
|
|
237
|
+
const type_r14 = ctx.$implicit;
|
|
246
238
|
i0.ɵɵadvance(2);
|
|
247
|
-
i0.ɵɵclassMap(
|
|
239
|
+
i0.ɵɵclassMap(type_r14.IconClass || "fa-solid fa-key");
|
|
248
240
|
i0.ɵɵadvance(3);
|
|
249
|
-
i0.ɵɵtextInterpolate(
|
|
241
|
+
i0.ɵɵtextInterpolate(type_r14.Name);
|
|
250
242
|
i0.ɵɵadvance();
|
|
251
|
-
i0.ɵɵconditional(
|
|
243
|
+
i0.ɵɵconditional(type_r14.Description ? 6 : -1);
|
|
252
244
|
} }
|
|
253
|
-
function
|
|
254
|
-
i0.ɵɵelementStart(0, "div",
|
|
255
|
-
i0.ɵɵelement(2, "i",
|
|
245
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
246
|
+
i0.ɵɵelementStart(0, "div", 64)(1, "h3");
|
|
247
|
+
i0.ɵɵelement(2, "i", 40);
|
|
256
248
|
i0.ɵɵtext(3, " Credential Types ");
|
|
257
249
|
i0.ɵɵelementEnd();
|
|
258
|
-
i0.ɵɵelementStart(4, "div",
|
|
259
|
-
i0.ɵɵrepeaterCreate(5,
|
|
250
|
+
i0.ɵɵelementStart(4, "div", 70);
|
|
251
|
+
i0.ɵɵrepeaterCreate(5, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_25_For_6_Template, 7, 4, "div", 71, i0.ɵɵrepeaterTrackByIdentity);
|
|
260
252
|
i0.ɵɵelementEnd()();
|
|
261
253
|
} if (rf & 2) {
|
|
262
|
-
const
|
|
254
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
263
255
|
i0.ɵɵadvance(5);
|
|
264
|
-
i0.ɵɵrepeater(
|
|
256
|
+
i0.ɵɵrepeater(ctx_r2.getTypesForCategory(ctx_r2.selectedNode.category.Name));
|
|
265
257
|
} }
|
|
266
|
-
function
|
|
267
|
-
i0.ɵɵelementStart(0, "span",
|
|
258
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_26_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
259
|
+
i0.ɵɵelementStart(0, "span", 80);
|
|
268
260
|
i0.ɵɵtext(1);
|
|
269
261
|
i0.ɵɵelementEnd();
|
|
270
262
|
} if (rf & 2) {
|
|
271
|
-
const
|
|
263
|
+
const child_r16 = i0.ɵɵnextContext().$implicit;
|
|
272
264
|
i0.ɵɵadvance();
|
|
273
|
-
i0.ɵɵtextInterpolate1("",
|
|
265
|
+
i0.ɵɵtextInterpolate1("", child_r16.typeCount, " types");
|
|
274
266
|
} }
|
|
275
|
-
function
|
|
276
|
-
const
|
|
277
|
-
i0.ɵɵelementStart(0, "div",
|
|
278
|
-
i0.ɵɵlistener("click", function
|
|
267
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_26_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
268
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
269
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
270
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_26_For_6_Template_div_click_0_listener() { const child_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.selectNode(child_r16)); });
|
|
279
271
|
i0.ɵɵelement(1, "i");
|
|
280
272
|
i0.ɵɵelementStart(2, "span");
|
|
281
273
|
i0.ɵɵtext(3);
|
|
282
274
|
i0.ɵɵelementEnd();
|
|
283
|
-
i0.ɵɵconditionalCreate(4,
|
|
275
|
+
i0.ɵɵconditionalCreate(4, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_26_For_6_Conditional_4_Template, 2, 1, "span", 80);
|
|
284
276
|
i0.ɵɵelementEnd();
|
|
285
277
|
} if (rf & 2) {
|
|
286
|
-
const
|
|
278
|
+
const child_r16 = ctx.$implicit;
|
|
287
279
|
i0.ɵɵadvance();
|
|
288
|
-
i0.ɵɵclassMap(
|
|
280
|
+
i0.ɵɵclassMap(child_r16.category.IconClass || "fa-solid fa-folder");
|
|
289
281
|
i0.ɵɵadvance(2);
|
|
290
|
-
i0.ɵɵtextInterpolate(
|
|
282
|
+
i0.ɵɵtextInterpolate(child_r16.category.Name);
|
|
291
283
|
i0.ɵɵadvance();
|
|
292
|
-
i0.ɵɵconditional(
|
|
284
|
+
i0.ɵɵconditional(child_r16.typeCount > 0 ? 4 : -1);
|
|
293
285
|
} }
|
|
294
|
-
function
|
|
295
|
-
i0.ɵɵelementStart(0, "div",
|
|
296
|
-
i0.ɵɵelement(2, "i",
|
|
286
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
287
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "h3");
|
|
288
|
+
i0.ɵɵelement(2, "i", 76);
|
|
297
289
|
i0.ɵɵtext(3, " Subcategories ");
|
|
298
290
|
i0.ɵɵelementEnd();
|
|
299
|
-
i0.ɵɵelementStart(4, "div",
|
|
300
|
-
i0.ɵɵrepeaterCreate(5,
|
|
291
|
+
i0.ɵɵelementStart(4, "div", 77);
|
|
292
|
+
i0.ɵɵrepeaterCreate(5, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_26_For_6_Template, 5, 4, "div", 78, i0.ɵɵrepeaterTrackByIdentity);
|
|
301
293
|
i0.ɵɵelementEnd()();
|
|
302
294
|
} if (rf & 2) {
|
|
303
|
-
const
|
|
295
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
304
296
|
i0.ɵɵadvance(5);
|
|
305
|
-
i0.ɵɵrepeater(
|
|
297
|
+
i0.ɵɵrepeater(ctx_r2.selectedNode.children);
|
|
306
298
|
} }
|
|
307
|
-
function
|
|
308
|
-
const
|
|
309
|
-
i0.ɵɵelementStart(0, "button",
|
|
310
|
-
i0.ɵɵlistener("click", function
|
|
311
|
-
i0.ɵɵelement(1, "i",
|
|
299
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
300
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
301
|
+
i0.ɵɵelementStart(0, "button", 81);
|
|
302
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_28_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.viewTypesForCategory(ctx_r2.selectedNode.category.Name)); });
|
|
303
|
+
i0.ɵɵelement(1, "i", 40);
|
|
312
304
|
i0.ɵɵtext(2, " View Types ");
|
|
313
305
|
i0.ɵɵelementEnd();
|
|
314
306
|
} }
|
|
315
|
-
function
|
|
316
|
-
const
|
|
317
|
-
i0.ɵɵelementStart(0, "div",
|
|
307
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
308
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
309
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "div", 51)(2, "div", 52);
|
|
318
310
|
i0.ɵɵelement(3, "i");
|
|
319
311
|
i0.ɵɵelementEnd();
|
|
320
|
-
i0.ɵɵelementStart(4, "div",
|
|
312
|
+
i0.ɵɵelementStart(4, "div", 53)(5, "h2");
|
|
321
313
|
i0.ɵɵtext(6);
|
|
322
314
|
i0.ɵɵelementEnd();
|
|
323
|
-
i0.ɵɵconditionalCreate(7,
|
|
315
|
+
i0.ɵɵconditionalCreate(7, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_7_Template, 2, 1, "span", 54);
|
|
324
316
|
i0.ɵɵelementEnd();
|
|
325
|
-
i0.ɵɵelementStart(8, "div",
|
|
326
|
-
i0.ɵɵconditionalCreate(9,
|
|
327
|
-
i0.ɵɵelementStart(10, "button",
|
|
328
|
-
i0.ɵɵlistener("click", function
|
|
329
|
-
i0.ɵɵelement(11, "i",
|
|
317
|
+
i0.ɵɵelementStart(8, "div", 55);
|
|
318
|
+
i0.ɵɵconditionalCreate(9, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_9_Template, 2, 0, "button", 37);
|
|
319
|
+
i0.ɵɵelementStart(10, "button", 56);
|
|
320
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectedNode = null); });
|
|
321
|
+
i0.ɵɵelement(11, "i", 57);
|
|
330
322
|
i0.ɵɵelementEnd()()();
|
|
331
|
-
i0.ɵɵelementStart(12, "div",
|
|
323
|
+
i0.ɵɵelementStart(12, "div", 58)(13, "div", 59)(14, "div", 60)(15, "div", 61);
|
|
332
324
|
i0.ɵɵtext(16);
|
|
333
325
|
i0.ɵɵelementEnd();
|
|
334
|
-
i0.ɵɵelementStart(17, "div",
|
|
326
|
+
i0.ɵɵelementStart(17, "div", 62);
|
|
335
327
|
i0.ɵɵtext(18, "Credential Types");
|
|
336
328
|
i0.ɵɵelementEnd()();
|
|
337
|
-
i0.ɵɵelementStart(19, "div",
|
|
329
|
+
i0.ɵɵelementStart(19, "div", 60)(20, "div", 61);
|
|
338
330
|
i0.ɵɵtext(21);
|
|
339
331
|
i0.ɵɵelementEnd();
|
|
340
|
-
i0.ɵɵelementStart(22, "div",
|
|
332
|
+
i0.ɵɵelementStart(22, "div", 62);
|
|
341
333
|
i0.ɵɵtext(23, "Subcategories");
|
|
342
334
|
i0.ɵɵelementEnd()()();
|
|
343
|
-
i0.ɵɵconditionalCreate(24,
|
|
344
|
-
i0.ɵɵconditionalCreate(25,
|
|
345
|
-
i0.ɵɵconditionalCreate(26,
|
|
346
|
-
i0.ɵɵelementStart(27, "div",
|
|
347
|
-
i0.ɵɵconditionalCreate(28,
|
|
348
|
-
i0.ɵɵelementStart(29, "button",
|
|
349
|
-
i0.ɵɵlistener("click", function
|
|
350
|
-
i0.ɵɵelement(30, "i",
|
|
335
|
+
i0.ɵɵconditionalCreate(24, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_24_Template, 6, 1, "div", 63);
|
|
336
|
+
i0.ɵɵconditionalCreate(25, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_25_Template, 7, 0, "div", 64);
|
|
337
|
+
i0.ɵɵconditionalCreate(26, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_26_Template, 7, 0, "div", 65);
|
|
338
|
+
i0.ɵɵelementStart(27, "div", 66);
|
|
339
|
+
i0.ɵɵconditionalCreate(28, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Conditional_28_Template, 3, 0, "button", 67);
|
|
340
|
+
i0.ɵɵelementStart(29, "button", 50);
|
|
341
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createCredentialWithCategory(ctx_r2.selectedNode.category.ID)); });
|
|
342
|
+
i0.ɵɵelement(30, "i", 18);
|
|
351
343
|
i0.ɵɵtext(31, " Create Credential ");
|
|
352
344
|
i0.ɵɵelementEnd()()()();
|
|
353
345
|
} if (rf & 2) {
|
|
354
|
-
const
|
|
346
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
355
347
|
i0.ɵɵadvance(2);
|
|
356
|
-
i0.ɵɵstyleProp("background-color",
|
|
348
|
+
i0.ɵɵstyleProp("background-color", ctx_r2.getCategoryColor(0) + "15")("color", ctx_r2.getCategoryColor(0));
|
|
357
349
|
i0.ɵɵadvance();
|
|
358
|
-
i0.ɵɵclassMap(
|
|
350
|
+
i0.ɵɵclassMap(ctx_r2.selectedNode.category.IconClass || "fa-solid fa-folder");
|
|
359
351
|
i0.ɵɵadvance(3);
|
|
360
|
-
i0.ɵɵtextInterpolate(
|
|
352
|
+
i0.ɵɵtextInterpolate(ctx_r2.selectedNode.category.Name);
|
|
361
353
|
i0.ɵɵadvance();
|
|
362
|
-
i0.ɵɵconditional(
|
|
354
|
+
i0.ɵɵconditional(ctx_r2.selectedNode.level > 0 ? 7 : -1);
|
|
363
355
|
i0.ɵɵadvance(2);
|
|
364
|
-
i0.ɵɵconditional(
|
|
356
|
+
i0.ɵɵconditional(ctx_r2.UserCanUpdate ? 9 : -1);
|
|
365
357
|
i0.ɵɵadvance(7);
|
|
366
|
-
i0.ɵɵtextInterpolate(
|
|
358
|
+
i0.ɵɵtextInterpolate(ctx_r2.selectedNode.typeCount);
|
|
367
359
|
i0.ɵɵadvance(5);
|
|
368
|
-
i0.ɵɵtextInterpolate(
|
|
360
|
+
i0.ɵɵtextInterpolate(ctx_r2.selectedNode.children.length);
|
|
369
361
|
i0.ɵɵadvance(3);
|
|
370
|
-
i0.ɵɵconditional(
|
|
362
|
+
i0.ɵɵconditional(ctx_r2.selectedNode.category.Description ? 24 : -1);
|
|
371
363
|
i0.ɵɵadvance();
|
|
372
|
-
i0.ɵɵconditional(
|
|
364
|
+
i0.ɵɵconditional(ctx_r2.selectedNode.typeCount > 0 ? 25 : -1);
|
|
373
365
|
i0.ɵɵadvance();
|
|
374
|
-
i0.ɵɵconditional(
|
|
366
|
+
i0.ɵɵconditional(ctx_r2.selectedNode.children.length > 0 ? 26 : -1);
|
|
375
367
|
i0.ɵɵadvance(2);
|
|
376
|
-
i0.ɵɵconditional(
|
|
368
|
+
i0.ɵɵconditional(ctx_r2.selectedNode.typeCount > 0 ? 28 : -1);
|
|
377
369
|
} }
|
|
378
|
-
function
|
|
379
|
-
i0.ɵɵelementStart(0, "div",
|
|
380
|
-
i0.ɵɵelement(2, "i",
|
|
370
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
371
|
+
i0.ɵɵelementStart(0, "div", 23)(1, "div", 82);
|
|
372
|
+
i0.ɵɵelement(2, "i", 83);
|
|
381
373
|
i0.ɵɵelementEnd();
|
|
382
374
|
i0.ɵɵelementStart(3, "h3");
|
|
383
375
|
i0.ɵɵtext(4, "Select a Category");
|
|
@@ -386,68 +378,24 @@ function CredentialsCategoriesResourceComponent_Conditional_2_Conditional_31_Tem
|
|
|
386
378
|
i0.ɵɵtext(6, "Click on a category to view its details and credential types");
|
|
387
379
|
i0.ɵɵelementEnd()();
|
|
388
380
|
} }
|
|
389
|
-
function
|
|
390
|
-
|
|
391
|
-
i0.ɵɵ
|
|
392
|
-
i0.ɵɵ
|
|
393
|
-
i0.ɵɵelementEnd();
|
|
394
|
-
i0.ɵɵelementStart(4, "div", 7)(5, "span", 8);
|
|
395
|
-
i0.ɵɵelement(6, "i", 9);
|
|
396
|
-
i0.ɵɵtext(7);
|
|
397
|
-
i0.ɵɵelementEnd();
|
|
398
|
-
i0.ɵɵelementStart(8, "span", 8);
|
|
399
|
-
i0.ɵɵelement(9, "i", 10);
|
|
400
|
-
i0.ɵɵtext(10);
|
|
401
|
-
i0.ɵɵelementEnd()()();
|
|
402
|
-
i0.ɵɵelementStart(11, "div", 11);
|
|
403
|
-
i0.ɵɵconditionalCreate(12, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_12_Template, 4, 0, "button", 12);
|
|
404
|
-
i0.ɵɵelementEnd()();
|
|
405
|
-
i0.ɵɵelementStart(13, "div", 13)(14, "div", 14)(15, "div", 15);
|
|
406
|
-
i0.ɵɵelement(16, "i", 16);
|
|
407
|
-
i0.ɵɵelementStart(17, "input", 17);
|
|
408
|
-
i0.ɵɵlistener("input", function CredentialsCategoriesResourceComponent_Conditional_2_Template_input_input_17_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onSearchChange($event.target.value)); });
|
|
409
|
-
i0.ɵɵelementEnd();
|
|
410
|
-
i0.ɵɵconditionalCreate(18, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_18_Template, 2, 0, "button", 18);
|
|
411
|
-
i0.ɵɵelementEnd()();
|
|
412
|
-
i0.ɵɵelementStart(19, "div", 19)(20, "button", 20);
|
|
413
|
-
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.expandAll()); });
|
|
414
|
-
i0.ɵɵelement(21, "i", 21);
|
|
415
|
-
i0.ɵɵelementEnd();
|
|
416
|
-
i0.ɵɵelementStart(22, "button", 22);
|
|
417
|
-
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.collapseAll()); });
|
|
418
|
-
i0.ɵɵelement(23, "i", 23);
|
|
419
|
-
i0.ɵɵelementEnd();
|
|
420
|
-
i0.ɵɵelementStart(24, "button", 24);
|
|
421
|
-
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Conditional_2_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.refresh()); });
|
|
422
|
-
i0.ɵɵelement(25, "i", 25);
|
|
423
|
-
i0.ɵɵelementEnd()()();
|
|
424
|
-
i0.ɵɵelementStart(26, "div", 26)(27, "div", 27);
|
|
425
|
-
i0.ɵɵconditionalCreate(28, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_28_Template, 3, 0, "div", 28);
|
|
426
|
-
i0.ɵɵconditionalCreate(29, CredentialsCategoriesResourceComponent_Conditional_2_Conditional_29_Template, 8, 3, "div", 29);
|
|
381
|
+
function CredentialsCategoriesResourceComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
382
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 19);
|
|
383
|
+
i0.ɵɵconditionalCreate(2, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_2_Template, 3, 0, "div", 20);
|
|
384
|
+
i0.ɵɵconditionalCreate(3, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_3_Template, 8, 3, "div", 21);
|
|
427
385
|
i0.ɵɵelementEnd();
|
|
428
|
-
i0.ɵɵconditionalCreate(
|
|
429
|
-
i0.ɵɵconditionalCreate(
|
|
386
|
+
i0.ɵɵconditionalCreate(4, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_4_Template, 32, 15, "div", 22);
|
|
387
|
+
i0.ɵɵconditionalCreate(5, CredentialsCategoriesResourceComponent_Conditional_18_Conditional_5_Template, 7, 0, "div", 23);
|
|
430
388
|
i0.ɵɵelementEnd();
|
|
431
389
|
} if (rf & 2) {
|
|
432
|
-
const
|
|
433
|
-
i0.ɵɵadvance(7);
|
|
434
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r3.categories.length, " categories ");
|
|
435
|
-
i0.ɵɵadvance(3);
|
|
436
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r3.getTotalTypeCount(), " types ");
|
|
390
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
437
391
|
i0.ɵɵadvance(2);
|
|
438
|
-
i0.ɵɵconditional(
|
|
439
|
-
i0.ɵɵadvance(5);
|
|
440
|
-
i0.ɵɵproperty("value", ctx_r3.searchText);
|
|
441
|
-
i0.ɵɵadvance();
|
|
442
|
-
i0.ɵɵconditional(ctx_r3.searchText ? 18 : -1);
|
|
443
|
-
i0.ɵɵadvance(10);
|
|
444
|
-
i0.ɵɵconditional(ctx_r3.categoryTree.length > 0 ? 28 : -1);
|
|
392
|
+
i0.ɵɵconditional(ctx_r2.categoryTree.length > 0 ? 2 : -1);
|
|
445
393
|
i0.ɵɵadvance();
|
|
446
|
-
i0.ɵɵconditional(
|
|
394
|
+
i0.ɵɵconditional(ctx_r2.categoryTree.length === 0 ? 3 : -1);
|
|
447
395
|
i0.ɵɵadvance();
|
|
448
|
-
i0.ɵɵconditional(
|
|
396
|
+
i0.ɵɵconditional(ctx_r2.selectedNode ? 4 : -1);
|
|
449
397
|
i0.ɵɵadvance();
|
|
450
|
-
i0.ɵɵconditional(!
|
|
398
|
+
i0.ɵɵconditional(!ctx_r2.selectedNode && ctx_r2.categoryTree.length > 0 ? 5 : -1);
|
|
451
399
|
} }
|
|
452
400
|
let CredentialsCategoriesResourceComponent = class CredentialsCategoriesResourceComponent extends BaseResourceComponent {
|
|
453
401
|
cdr;
|
|
@@ -802,21 +750,52 @@ let CredentialsCategoriesResourceComponent = class CredentialsCategoriesResource
|
|
|
802
750
|
} if (rf & 2) {
|
|
803
751
|
let _t;
|
|
804
752
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.categoryEditPanel = _t.first);
|
|
805
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
753
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 21, vars: 7, consts: [["categoryEditPanel", ""], ["Title", "Categories", "Icon", "fa-solid fa-folder-tree"], ["meta", ""], ["Label", "categories", 3, "Count"], ["Icon", "fa-solid fa-shapes", "Label", "types", 3, "Count"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", "title", "Expand all", 3, "click"], [1, "fa-solid", "fa-expand"], ["mjButton", "", "variant", "secondary", "size", "sm", "title", "Collapse all", 3, "click"], [1, "fa-solid", "fa-compress"], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm"], ["toolbar", ""], ["Placeholder", "Search categories...", 3, "ValueChange", "Value"], ["text", "Loading categories..."], [1, "categories-layout"], [3, "saved", "deleted"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "tree-panel"], [1, "tree-container"], [1, "empty-state"], [1, "detail-panel"], [1, "no-selection"], [1, "tree-node", 3, "selected", "padding-left"], [1, "tree-node", 3, "click"], [1, "node-content"], [1, "expand-btn"], [1, "expand-placeholder"], [1, "node-icon"], [1, "node-info"], [1, "node-name"], [1, "node-description"], [1, "node-badges"], [1, "badge", "types"], [1, "badge", "children"], [1, "node-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete"], [1, "expand-btn", 3, "click"], [1, "fa-solid", "fa-shapes"], [1, "fa-solid", "fa-folder"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "empty-icon"], [1, "fa-solid", "fa-folder-open"], [1, "btn-primary"], [1, "btn-link", 3, "click"], [1, "btn-primary", 3, "click"], [1, "detail-header"], [1, "detail-icon"], [1, "detail-title"], [1, "level-badge"], [1, "detail-actions"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-body"], [1, "detail-stats"], [1, "detail-stat"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "types-section"], [1, "subcategories-section"], [1, "detail-quick-actions"], [1, "btn-secondary"], [1, "fa-solid", "fa-align-left"], [1, "description"], [1, "type-list"], [1, "type-item"], [1, "type-icon"], [1, "type-info"], [1, "type-name"], [1, "type-desc"], [1, "fa-solid", "fa-folder-tree"], [1, "subcategory-list"], [1, "subcategory-item"], [1, "subcategory-item", 3, "click"], [1, "sub-type-count"], [1, "btn-secondary", 3, "click"], [1, "no-selection-icon"], [1, "fa-solid", "fa-hand-pointer"]], template: function CredentialsCategoriesResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
806
754
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
807
|
-
i0.ɵɵelementStart(0, "
|
|
808
|
-
i0.ɵɵ
|
|
809
|
-
i0.ɵɵconditionalCreate(2, CredentialsCategoriesResourceComponent_Conditional_2_Template, 32, 9);
|
|
755
|
+
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1)(2, "div", 2);
|
|
756
|
+
i0.ɵɵelement(3, "mj-stat-badge", 3)(4, "mj-stat-badge", 4);
|
|
810
757
|
i0.ɵɵelementEnd();
|
|
811
|
-
i0.ɵɵelementStart(
|
|
812
|
-
i0.ɵɵlistener("
|
|
758
|
+
i0.ɵɵelementStart(5, "div", 5)(6, "button", 6);
|
|
759
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.expandAll()); });
|
|
760
|
+
i0.ɵɵelement(7, "i", 7);
|
|
761
|
+
i0.ɵɵtext(8, " Expand ");
|
|
813
762
|
i0.ɵɵelementEnd();
|
|
763
|
+
i0.ɵɵelementStart(9, "button", 8);
|
|
764
|
+
i0.ɵɵlistener("click", function CredentialsCategoriesResourceComponent_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.collapseAll()); });
|
|
765
|
+
i0.ɵɵelement(10, "i", 9);
|
|
766
|
+
i0.ɵɵtext(11, " Collapse ");
|
|
767
|
+
i0.ɵɵelementEnd();
|
|
768
|
+
i0.ɵɵelementStart(12, "mj-refresh-button", 10);
|
|
769
|
+
i0.ɵɵlistener("Clicked", function CredentialsCategoriesResourceComponent_Template_mj_refresh_button_Clicked_12_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.refresh()); });
|
|
770
|
+
i0.ɵɵelementEnd();
|
|
771
|
+
i0.ɵɵconditionalCreate(13, CredentialsCategoriesResourceComponent_Conditional_13_Template, 3, 0, "button", 11);
|
|
772
|
+
i0.ɵɵelementEnd();
|
|
773
|
+
i0.ɵɵelementStart(14, "div", 12)(15, "mj-page-search", 13);
|
|
774
|
+
i0.ɵɵlistener("ValueChange", function CredentialsCategoriesResourceComponent_Template_mj_page_search_ValueChange_15_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSearchChange($event)); });
|
|
775
|
+
i0.ɵɵelementEnd()()();
|
|
776
|
+
i0.ɵɵelementStart(16, "mj-page-body");
|
|
777
|
+
i0.ɵɵconditionalCreate(17, CredentialsCategoriesResourceComponent_Conditional_17_Template, 1, 0, "mj-loading", 14);
|
|
778
|
+
i0.ɵɵconditionalCreate(18, CredentialsCategoriesResourceComponent_Conditional_18_Template, 6, 4, "div", 15);
|
|
779
|
+
i0.ɵɵelementEnd();
|
|
780
|
+
i0.ɵɵelementStart(19, "mj-credential-category-edit-panel", 16, 0);
|
|
781
|
+
i0.ɵɵlistener("saved", function CredentialsCategoriesResourceComponent_Template_mj_credential_category_edit_panel_saved_19_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onCategorySaved($event)); })("deleted", function CredentialsCategoriesResourceComponent_Template_mj_credential_category_edit_panel_deleted_19_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onCategoryDeleted($event)); });
|
|
782
|
+
i0.ɵɵelementEnd()();
|
|
814
783
|
} if (rf & 2) {
|
|
784
|
+
i0.ɵɵadvance(3);
|
|
785
|
+
i0.ɵɵproperty("Count", ctx.categories.length);
|
|
786
|
+
i0.ɵɵadvance();
|
|
787
|
+
i0.ɵɵproperty("Count", ctx.getTotalTypeCount());
|
|
788
|
+
i0.ɵɵadvance(8);
|
|
789
|
+
i0.ɵɵproperty("Loading", ctx.isLoading);
|
|
815
790
|
i0.ɵɵadvance();
|
|
816
|
-
i0.ɵɵconditional(ctx.
|
|
791
|
+
i0.ɵɵconditional(ctx.UserCanCreate ? 13 : -1);
|
|
792
|
+
i0.ɵɵadvance(2);
|
|
793
|
+
i0.ɵɵproperty("Value", ctx.searchText);
|
|
794
|
+
i0.ɵɵadvance(2);
|
|
795
|
+
i0.ɵɵconditional(ctx.isLoading ? 17 : -1);
|
|
817
796
|
i0.ɵɵadvance();
|
|
818
|
-
i0.ɵɵconditional(!ctx.isLoading ?
|
|
819
|
-
} }, dependencies: [i1.MJButtonDirective, i2.LoadingComponent, i3.CredentialCategoryEditPanelComponent, i4.SlicePipe], styles: [".categories-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-page);\n}\n\n\n\n.categories-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.categories-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n\n\n.btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n.btn-primary[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n.search-container[_ngcontent-%COMP%] {\n position: relative;\n flex: 1;\n max-width: 320px;\n}\n\n.search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.2s ease;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-border-default);\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 10px;\n transition: all 0.2s ease;\n}\n\n.search-clear[_ngcontent-%COMP%]:hover {\n background: var(--mj-text-disabled);\n color: var(--mj-text-inverse);\n}\n\n\n\n.btn-text[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.categories-layout[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n\n\n.tree-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container[_ngcontent-%COMP%] {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n\n\n.tree-node[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.tree-node.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.node-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n\n\n.expand-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.expand-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder[_ngcontent-%COMP%] {\n width: 24px;\n flex-shrink: 0;\n}\n\n\n\n.node-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.node-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.node-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.3;\n}\n\n.node-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.node-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.badge.children[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.node-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover .node-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-body[_ngcontent-%COMP%] {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n\n\n.detail-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n line-height: 1;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.6;\n margin: 0;\n}\n\n\n\n.types-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.type-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.subcategories-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.subcategory-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.subcategory-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.subcategory-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.sub-type-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n background: var(--mj-border-default);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n\n\n.detail-quick-actions[_ngcontent-%COMP%] {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%], \n.detail-quick-actions[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n}\n\n\n\n.no-selection[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-text-disabled);\n}\n\n.no-selection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-border-strong);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n@media (max-width: 1024px) {\n .categories-layout[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .detail-panel[_ngcontent-%COMP%], \n .no-selection[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .categories-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left[_ngcontent-%COMP%], \n .toolbar-right[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .search-container[_ngcontent-%COMP%] {\n max-width: none;\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: flex-end;\n }\n}"], changeDetection: 0 });
|
|
797
|
+
i0.ɵɵconditional(!ctx.isLoading ? 18 : -1);
|
|
798
|
+
} }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJPageSearchComponent, i1.MJStatBadgeComponent, i1.MJRefreshButtonComponent, i2.LoadingComponent, i3.CredentialCategoryEditPanelComponent, i4.SlicePipe], styles: ["\n\n.categories-layout[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n\n\n.tree-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container[_ngcontent-%COMP%] {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n\n\n.tree-node[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.tree-node.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.node-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n\n\n.expand-btn[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.expand-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder[_ngcontent-%COMP%] {\n width: 24px;\n flex-shrink: 0;\n}\n\n\n\n.node-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.node-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.node-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.3;\n}\n\n.node-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.node-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.badge.children[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.node-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node[_ngcontent-%COMP%]:hover .node-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.detail-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge[_ngcontent-%COMP%] {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-body[_ngcontent-%COMP%] {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n\n\n.detail-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n line-height: 1;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.description-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.types-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.subcategories-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.6;\n margin: 0;\n}\n\n\n\n.types-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.type-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-desc[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.subcategories-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.subcategory-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.subcategory-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.subcategory-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.sub-type-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary);\n background: var(--mj-border-default);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n\n\n.detail-quick-actions[_ngcontent-%COMP%] {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%], \n.detail-quick-actions[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n}\n\n\n\n.no-selection[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-text-disabled);\n}\n\n.no-selection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-border-strong);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n@media (max-width: 1024px) {\n .categories-layout[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .detail-panel[_ngcontent-%COMP%], \n .no-selection[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .categories-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left[_ngcontent-%COMP%], \n .toolbar-right[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .search-container[_ngcontent-%COMP%] {\n max-width: none;\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: flex-end;\n }\n}"], changeDetection: 0 });
|
|
820
799
|
};
|
|
821
800
|
CredentialsCategoriesResourceComponent = __decorate([
|
|
822
801
|
RegisterClass(BaseResourceComponent, 'CredentialsCategoriesResource')
|
|
@@ -824,7 +803,7 @@ CredentialsCategoriesResourceComponent = __decorate([
|
|
|
824
803
|
export { CredentialsCategoriesResourceComponent };
|
|
825
804
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsCategoriesResourceComponent, [{
|
|
826
805
|
type: Component,
|
|
827
|
-
args: [{ standalone: false, selector: 'mj-credentials-categories-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"categories-container\">\n @if (isLoading) {\n <mj-loading text=\"Loading categories...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Header -->\n <div class=\"categories-header\">\n <div class=\"header-info\">\n <h2 class=\"categories-title\">Categories</h2>\n <div class=\"header-stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-folder-tree\"></i>\n {{categories.length}} categories\n </span>\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{getTotalTypeCount()}} types\n </span>\n </div>\n </div>\n <div class=\"header-actions\">\n @if (UserCanCreate) {\n <button class=\"btn-primary\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Category</span>\n </button>\n }\n </div>\n </div>\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <div class=\"toolbar-left\">\n <div class=\"search-container\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search categories...\"\n [value]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n />\n @if (searchText) {\n <button class=\"search-clear\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"toolbar-right\">\n <button class=\"btn-text\" (click)=\"expandAll()\" title=\"Expand All\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n <button class=\"btn-text\" (click)=\"collapseAll()\" title=\"Collapse All\">\n <i class=\"fa-solid fa-compress\"></i>\n </button>\n <button class=\"btn-icon\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <div class=\"categories-layout\">\n <!-- Tree Container -->\n <div class=\"tree-panel\">\n @if (categoryTree.length > 0) {\n <div class=\"tree-container\">\n @for (node of getFlattenedNodes(); track node; let i = $index) {\n <div\n class=\"tree-node\"\n [class.selected]=\"IsNodeSelected(node)\"\n [style.padding-left.px]=\"12 + (node.level * 20)\"\n (click)=\"selectNode(node)\"\n >\n <div class=\"node-content\">\n @if (node.children.length > 0) {\n <button\n class=\"expand-btn\"\n (click)=\"toggleExpand(node, $event)\"\n >\n <i [class]=\"node.expanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n </button>\n }\n @if (node.children.length === 0) {\n <span class=\"expand-placeholder\"></span>\n }\n <div class=\"node-icon\" [style.backgroundColor]=\"getCategoryColor(i) + '15'\" [style.color]=\"getCategoryColor(i)\">\n <i [class]=\"node.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n <div class=\"node-info\">\n <div class=\"node-name\">{{node.category.Name}}</div>\n @if (node.category.Description) {\n <div class=\"node-description\">\n {{node.category.Description | slice:0:50}}{{node.category.Description.length > 50 ? '...' : ''}}\n </div>\n }\n </div>\n <div class=\"node-badges\">\n @if (node.typeCount > 0) {\n <span class=\"badge types\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{node.typeCount}}\n </span>\n }\n @if (node.children.length > 0) {\n <span class=\"badge children\">\n <i class=\"fa-solid fa-folder\"></i>\n {{node.children.length}}\n </span>\n }\n </div>\n <div class=\"node-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editCategory(node, $event)\"\n title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && node.children.length === 0 && node.typeCount === 0) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteCategory(node, $event)\"\n title=\"Delete\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n @if (categoryTree.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-folder-open\"></i>\n </div>\n <h3>No Categories</h3>\n @if (searchText) {\n <p>\n No categories match your search.\n <button class=\"btn-link\" (click)=\"clearSearch()\">Clear search</button>\n </p>\n }\n @if (!searchText) {\n <p>\n Get started by creating your first category.\n </p>\n }\n @if (UserCanCreate && !searchText) {\n <button class=\"btn-primary\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Category\n </button>\n }\n </div>\n }\n </div>\n <!-- Detail Panel -->\n @if (selectedNode) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(0) + '15'\" [style.color]=\"getCategoryColor(0)\">\n <i [class]=\"selectedNode.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedNode.category.Name}}</h2>\n @if (selectedNode.level > 0) {\n <span class=\"level-badge\">\n Level {{selectedNode.level + 1}}\n </span>\n }\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"editCategory(selectedNode)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"selectedNode = null\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.typeCount}}</div>\n <div class=\"stat-label\">Credential Types</div>\n </div>\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.children.length}}</div>\n <div class=\"stat-label\">Subcategories</div>\n </div>\n </div>\n <!-- Description -->\n @if (selectedNode.category.Description) {\n <div class=\"description-section\">\n <h3>\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h3>\n <p class=\"description\">{{selectedNode.category.Description}}</p>\n </div>\n }\n <!-- Types in Category -->\n @if (selectedNode.typeCount > 0) {\n <div class=\"types-section\">\n <h3>\n <i class=\"fa-solid fa-shapes\"></i>\n Credential Types\n </h3>\n <div class=\"type-list\">\n @for (type of getTypesForCategory(selectedNode.category.Name); track type) {\n <div class=\"type-item\">\n <div class=\"type-icon\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-desc\">{{type.Description | slice:0:60}}</div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Subcategories -->\n @if (selectedNode.children.length > 0) {\n <div class=\"subcategories-section\">\n <h3>\n <i class=\"fa-solid fa-folder-tree\"></i>\n Subcategories\n </h3>\n <div class=\"subcategory-list\">\n @for (child of selectedNode.children; track child) {\n <div class=\"subcategory-item\" (click)=\"selectNode(child)\">\n <i [class]=\"child.category.IconClass || 'fa-solid fa-folder'\"></i>\n <span>{{child.category.Name}}</span>\n @if (child.typeCount > 0) {\n <span class=\"sub-type-count\">{{child.typeCount}} types</span>\n }\n </div>\n }\n </div>\n </div>\n }\n <!-- Quick Actions -->\n <div class=\"detail-quick-actions\">\n @if (selectedNode.typeCount > 0) {\n <button\n class=\"btn-secondary\"\n (click)=\"viewTypesForCategory(selectedNode.category.Name)\"\n >\n <i class=\"fa-solid fa-shapes\"></i>\n View Types\n </button>\n }\n <button\n class=\"btn-primary\"\n (click)=\"createCredentialWithCategory(selectedNode.category.ID)\"\n >\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedNode && categoryTree.length > 0) {\n <div class=\"no-selection\">\n <div class=\"no-selection-icon\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n </div>\n <h3>Select a Category</h3>\n <p>Click on a category to view its details and credential types</p>\n </div>\n }\n </div>\n }\n</div>\n\n<!-- Category Edit Panel -->\n<mj-credential-category-edit-panel\n #categoryEditPanel\n (saved)=\"onCategorySaved($any($event))\"\n (deleted)=\"onCategoryDeleted($any($event))\"\n></mj-credential-category-edit-panel>\n", styles: [".categories-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-page);\n}\n\n/* Header */\n.categories-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 20px;\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.categories-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.header-stats {\n display: flex;\n gap: 16px;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item i {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n/* Primary Button */\n.btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n.btn-primary:active {\n transform: translateY(0);\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Search */\n.search-container {\n position: relative;\n flex: 1;\n max-width: 320px;\n}\n\n.search-container i.fa-search {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.search-container input {\n width: 100%;\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.2s ease;\n}\n\n.search-container input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.search-container input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-border-default);\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 10px;\n transition: all 0.2s ease;\n}\n\n.search-clear:hover {\n background: var(--mj-text-disabled);\n color: var(--mj-text-inverse);\n}\n\n/* Toolbar Buttons */\n.btn-text {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-text:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Layout */\n.categories-layout {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n/* Tree Panel */\n.tree-panel {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n/* Tree Node */\n.tree-node {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node:last-child {\n border-bottom: none;\n}\n\n.tree-node:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.tree-node.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.node-content {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n/* Expand Button */\n.expand-btn {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.expand-btn i {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder {\n width: 24px;\n flex-shrink: 0;\n}\n\n/* Node Icon */\n.node-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon i {\n font-size: 14px;\n}\n\n/* Node Info */\n.node-info {\n flex: 1;\n min-width: 0;\n}\n\n.node-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.3;\n}\n\n.node-description {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Node Badges */\n.node-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.badge.children {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.badge i {\n font-size: 10px;\n}\n\n/* Node Actions */\n.node-actions {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node:hover .node-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n/* Detail Panel */\n.detail-panel {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon i {\n font-size: 20px;\n}\n\n.detail-title {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title h2 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n/* Detail Body */\n.detail-body {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n/* Detail Stats */\n.detail-stats {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat {\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat .stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n line-height: 1;\n}\n\n.detail-stat .stat-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Description Section */\n.description-section {\n margin-bottom: 20px;\n}\n\n.description-section h3,\n.types-section h3,\n.subcategories-section h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section h3 i,\n.types-section h3 i,\n.subcategories-section h3 i {\n font-size: 12px;\n}\n\n.description {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.6;\n margin: 0;\n}\n\n/* Types Section */\n.types-section {\n margin-bottom: 20px;\n}\n\n.type-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.type-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon i {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-desc {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Subcategories Section */\n.subcategories-section {\n margin-bottom: 20px;\n}\n\n.subcategory-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.subcategory-item i {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.subcategory-item span {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.sub-type-count {\n font-size: 11px;\n color: var(--mj-text-secondary);\n background: var(--mj-border-default);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n/* Quick Actions */\n.detail-quick-actions {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions .btn-secondary,\n.detail-quick-actions .btn-primary {\n flex: 1;\n}\n\n.btn-secondary {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--mj-border-default);\n}\n\n/* No Selection State */\n.no-selection {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon i {\n font-size: 24px;\n color: var(--mj-text-disabled);\n}\n\n.no-selection h3 {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection p {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--mj-border-strong);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .detail-panel,\n .no-selection {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container {\n padding: 16px;\n }\n\n .categories-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left,\n .toolbar-right {\n width: 100%;\n }\n\n .search-container {\n max-width: none;\n }\n\n .toolbar-right {\n justify-content: flex-end;\n }\n}\n"] }]
|
|
806
|
+
args: [{ standalone: false, selector: 'mj-credentials-categories-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Categories\"\n Icon=\"fa-solid fa-folder-tree\">\n <div meta>\n <mj-stat-badge\n [Count]=\"categories.length\"\n Label=\"categories\">\n </mj-stat-badge>\n <mj-stat-badge\n Icon=\"fa-solid fa-shapes\"\n [Count]=\"getTotalTypeCount()\"\n Label=\"types\">\n </mj-stat-badge>\n </div>\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"expandAll()\" title=\"Expand all\">\n <i class=\"fa-solid fa-expand\"></i> Expand\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"collapseAll()\" title=\"Collapse all\">\n <i class=\"fa-solid fa-compress\"></i> Collapse\n </button>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n @if (UserCanCreate) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i> New Category\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search categories...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (isLoading) {\n <mj-loading text=\"Loading categories...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <div class=\"categories-layout\">\n <!-- Tree Container -->\n <div class=\"tree-panel\">\n @if (categoryTree.length > 0) {\n <div class=\"tree-container\">\n @for (node of getFlattenedNodes(); track node; let i = $index) {\n <div\n class=\"tree-node\"\n [class.selected]=\"IsNodeSelected(node)\"\n [style.padding-left.px]=\"12 + (node.level * 20)\"\n (click)=\"selectNode(node)\"\n >\n <div class=\"node-content\">\n @if (node.children.length > 0) {\n <button\n class=\"expand-btn\"\n (click)=\"toggleExpand(node, $event)\"\n >\n <i [class]=\"node.expanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n </button>\n }\n @if (node.children.length === 0) {\n <span class=\"expand-placeholder\"></span>\n }\n <div class=\"node-icon\" [style.backgroundColor]=\"getCategoryColor(i) + '15'\" [style.color]=\"getCategoryColor(i)\">\n <i [class]=\"node.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n <div class=\"node-info\">\n <div class=\"node-name\">{{node.category.Name}}</div>\n @if (node.category.Description) {\n <div class=\"node-description\">\n {{node.category.Description | slice:0:50}}{{node.category.Description.length > 50 ? '...' : ''}}\n </div>\n }\n </div>\n <div class=\"node-badges\">\n @if (node.typeCount > 0) {\n <span class=\"badge types\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{node.typeCount}}\n </span>\n }\n @if (node.children.length > 0) {\n <span class=\"badge children\">\n <i class=\"fa-solid fa-folder\"></i>\n {{node.children.length}}\n </span>\n }\n </div>\n <div class=\"node-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editCategory(node, $event)\"\n title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && node.children.length === 0 && node.typeCount === 0) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteCategory(node, $event)\"\n title=\"Delete\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n @if (categoryTree.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-folder-open\"></i>\n </div>\n <h3>No Categories</h3>\n @if (searchText) {\n <p>\n No categories match your search.\n <button class=\"btn-link\" (click)=\"clearSearch()\">Clear search</button>\n </p>\n }\n @if (!searchText) {\n <p>\n Get started by creating your first category.\n </p>\n }\n @if (UserCanCreate && !searchText) {\n <button class=\"btn-primary\" (click)=\"createNewCategory()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Category\n </button>\n }\n </div>\n }\n </div>\n <!-- Detail Panel -->\n @if (selectedNode) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(0) + '15'\" [style.color]=\"getCategoryColor(0)\">\n <i [class]=\"selectedNode.category.IconClass || 'fa-solid fa-folder'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedNode.category.Name}}</h2>\n @if (selectedNode.level > 0) {\n <span class=\"level-badge\">\n Level {{selectedNode.level + 1}}\n </span>\n }\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"editCategory(selectedNode)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"selectedNode = null\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.typeCount}}</div>\n <div class=\"stat-label\">Credential Types</div>\n </div>\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedNode.children.length}}</div>\n <div class=\"stat-label\">Subcategories</div>\n </div>\n </div>\n <!-- Description -->\n @if (selectedNode.category.Description) {\n <div class=\"description-section\">\n <h3>\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h3>\n <p class=\"description\">{{selectedNode.category.Description}}</p>\n </div>\n }\n <!-- Types in Category -->\n @if (selectedNode.typeCount > 0) {\n <div class=\"types-section\">\n <h3>\n <i class=\"fa-solid fa-shapes\"></i>\n Credential Types\n </h3>\n <div class=\"type-list\">\n @for (type of getTypesForCategory(selectedNode.category.Name); track type) {\n <div class=\"type-item\">\n <div class=\"type-icon\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-desc\">{{type.Description | slice:0:60}}</div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n <!-- Subcategories -->\n @if (selectedNode.children.length > 0) {\n <div class=\"subcategories-section\">\n <h3>\n <i class=\"fa-solid fa-folder-tree\"></i>\n Subcategories\n </h3>\n <div class=\"subcategory-list\">\n @for (child of selectedNode.children; track child) {\n <div class=\"subcategory-item\" (click)=\"selectNode(child)\">\n <i [class]=\"child.category.IconClass || 'fa-solid fa-folder'\"></i>\n <span>{{child.category.Name}}</span>\n @if (child.typeCount > 0) {\n <span class=\"sub-type-count\">{{child.typeCount}} types</span>\n }\n </div>\n }\n </div>\n </div>\n }\n <!-- Quick Actions -->\n <div class=\"detail-quick-actions\">\n @if (selectedNode.typeCount > 0) {\n <button\n class=\"btn-secondary\"\n (click)=\"viewTypesForCategory(selectedNode.category.Name)\"\n >\n <i class=\"fa-solid fa-shapes\"></i>\n View Types\n </button>\n }\n <button\n class=\"btn-primary\"\n (click)=\"createCredentialWithCategory(selectedNode.category.ID)\"\n >\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedNode && categoryTree.length > 0) {\n <div class=\"no-selection\">\n <div class=\"no-selection-icon\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n </div>\n <h3>Select a Category</h3>\n <p>Click on a category to view its details and credential types</p>\n </div>\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Category Edit Panel -->\n <mj-credential-category-edit-panel\n #categoryEditPanel\n (saved)=\"onCategorySaved($any($event))\"\n (deleted)=\"onCategoryDeleted($any($event))\"\n ></mj-credential-category-edit-panel>\n</mj-page-layout>\n", styles: ["/* Layout */\n.categories-layout {\n display: grid;\n grid-template-columns: 1fr 380px;\n gap: 20px;\n min-height: 500px;\n}\n\n/* Tree Panel */\n.tree-panel {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.tree-container {\n max-height: calc(100vh - 300px);\n overflow-y: auto;\n}\n\n/* Tree Node */\n.tree-node {\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.tree-node:last-child {\n border-bottom: none;\n}\n\n.tree-node:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.tree-node.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.node-content {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n width: 100%;\n gap: 8px;\n}\n\n/* Expand Button */\n.expand-btn {\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 4px;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.expand-btn i {\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.expand-placeholder {\n width: 24px;\n flex-shrink: 0;\n}\n\n/* Node Icon */\n.node-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.node-icon i {\n font-size: 14px;\n}\n\n/* Node Info */\n.node-info {\n flex: 1;\n min-width: 0;\n}\n\n.node-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.3;\n}\n\n.node-description {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Node Badges */\n.node-badges {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n.badge {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.badge.types {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.badge.children {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.badge i {\n font-size: 10px;\n}\n\n/* Node Actions */\n.node-actions {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n flex-shrink: 0;\n}\n\n.tree-node:hover .node-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger:hover {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n/* Detail Panel */\n.detail-panel {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.detail-icon i {\n font-size: 20px;\n}\n\n.detail-title {\n flex: 1;\n min-width: 0;\n}\n\n.detail-title h2 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n line-height: 1.3;\n}\n\n.level-badge {\n display: inline-block;\n margin-top: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.close-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n/* Detail Body */\n.detail-body {\n padding: 20px;\n flex: 1;\n overflow-y: auto;\n}\n\n/* Detail Stats */\n.detail-stats {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n margin-bottom: 20px;\n}\n\n.detail-stat {\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n padding: 16px;\n text-align: center;\n}\n\n.detail-stat .stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-brand-primary);\n line-height: 1;\n}\n\n.detail-stat .stat-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Description Section */\n.description-section {\n margin-bottom: 20px;\n}\n\n.description-section h3,\n.types-section h3,\n.subcategories-section h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 0 0 12px 0;\n}\n\n.description-section h3 i,\n.types-section h3 i,\n.subcategories-section h3 i {\n font-size: 12px;\n}\n\n.description {\n font-size: 14px;\n color: var(--mj-text-primary);\n line-height: 1.6;\n margin: 0;\n}\n\n/* Types Section */\n.types-section {\n margin-bottom: 20px;\n}\n\n.type-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n.type-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.type-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n border-radius: 6px;\n flex-shrink: 0;\n}\n\n.type-icon i {\n font-size: 12px;\n color: var(--mj-brand-primary);\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.type-desc {\n font-size: 11px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Subcategories Section */\n.subcategories-section {\n margin-bottom: 20px;\n}\n\n.subcategory-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.subcategory-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.subcategory-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.subcategory-item i {\n font-size: 14px;\n color: var(--mj-brand-primary);\n}\n\n.subcategory-item span {\n flex: 1;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n\n.sub-type-count {\n font-size: 11px;\n color: var(--mj-text-secondary);\n background: var(--mj-border-default);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n/* Quick Actions */\n.detail-quick-actions {\n margin-top: auto;\n padding-top: 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n gap: 8px;\n}\n\n.detail-quick-actions .btn-secondary,\n.detail-quick-actions .btn-primary {\n flex: 1;\n}\n\n.btn-secondary {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--mj-border-default);\n}\n\n/* No Selection State */\n.no-selection {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n text-align: center;\n}\n\n.no-selection-icon {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 16px;\n}\n\n.no-selection-icon i {\n font-size: 24px;\n color: var(--mj-text-disabled);\n}\n\n.no-selection h3 {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection p {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-bg-surface-sunken);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--mj-border-strong);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .categories-layout {\n grid-template-columns: 1fr;\n }\n\n .detail-panel,\n .no-selection {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .categories-container {\n padding: 16px;\n }\n\n .categories-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .toolbar {\n flex-direction: column;\n gap: 12px;\n }\n\n .toolbar-left,\n .toolbar-right {\n width: 100%;\n }\n\n .search-container {\n max-width: none;\n }\n\n .toolbar-right {\n justify-content: flex-end;\n }\n}\n"] }]
|
|
828
807
|
}], () => [{ type: i0.ChangeDetectorRef }], { categoryEditPanel: [{
|
|
829
808
|
type: ViewChild,
|
|
830
809
|
args: ['categoryEditPanel']
|