@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
|
@@ -13,537 +13,440 @@ import { RunView } from '@memberjunction/core';
|
|
|
13
13
|
import { UserInfoEngine } from '@memberjunction/core-entities';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
import * as i1 from "@angular/common";
|
|
16
|
-
import * as i2 from "@
|
|
16
|
+
import * as i2 from "@memberjunction/ng-ui-components";
|
|
17
17
|
import * as i3 from "@memberjunction/ng-shared-generic";
|
|
18
18
|
import * as i4 from "@memberjunction/ng-versions";
|
|
19
|
-
function
|
|
20
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
19
|
+
function VersionHistoryLabelsResourceComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelement(0, "mj-loading", 12);
|
|
21
21
|
} }
|
|
22
|
-
function
|
|
23
|
-
|
|
24
|
-
i0.ɵɵ
|
|
25
|
-
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_2_For_53_Template_button_click_0_listener() { const stat_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnScopeFilterChange(stat_r4.Scope)); });
|
|
26
|
-
i0.ɵɵelement(1, "i");
|
|
27
|
-
i0.ɵɵelementStart(2, "span");
|
|
28
|
-
i0.ɵɵtext(3);
|
|
29
|
-
i0.ɵɵelementEnd();
|
|
30
|
-
i0.ɵɵelementStart(4, "span", 42);
|
|
31
|
-
i0.ɵɵtext(5);
|
|
32
|
-
i0.ɵɵelementEnd()();
|
|
33
|
-
} if (rf & 2) {
|
|
34
|
-
const stat_r4 = ctx.$implicit;
|
|
35
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
36
|
-
i0.ɵɵclassProp("active", ctx_r1.ScopeFilter === stat_r4.Scope);
|
|
37
|
-
i0.ɵɵadvance();
|
|
38
|
-
i0.ɵɵclassMap(stat_r4.Icon);
|
|
39
|
-
i0.ɵɵadvance(2);
|
|
40
|
-
i0.ɵɵtextInterpolate(stat_r4.Scope);
|
|
41
|
-
i0.ɵɵadvance(2);
|
|
42
|
-
i0.ɵɵtextInterpolate(stat_r4.Count);
|
|
43
|
-
} }
|
|
44
|
-
function VersionHistoryLabelsResourceComponent_Conditional_2_For_55_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
46
|
-
i0.ɵɵelementStart(0, "button", 43);
|
|
47
|
-
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_2_For_55_Template_button_click_0_listener() { const stat_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnStatusFilterChange(stat_r6.Status)); });
|
|
48
|
-
i0.ɵɵelementStart(1, "span");
|
|
49
|
-
i0.ɵɵtext(2);
|
|
50
|
-
i0.ɵɵelementEnd();
|
|
51
|
-
i0.ɵɵelementStart(3, "span", 42);
|
|
52
|
-
i0.ɵɵtext(4);
|
|
53
|
-
i0.ɵɵelementEnd()();
|
|
54
|
-
} if (rf & 2) {
|
|
55
|
-
const stat_r6 = ctx.$implicit;
|
|
56
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57
|
-
i0.ɵɵclassProp("active", ctx_r1.StatusFilter === stat_r6.Status);
|
|
58
|
-
i0.ɵɵproperty("ngClass", ctx_r1.GetStatusClass(stat_r6.Status));
|
|
59
|
-
i0.ɵɵadvance(2);
|
|
60
|
-
i0.ɵɵtextInterpolate(stat_r6.Status);
|
|
61
|
-
i0.ɵɵadvance(2);
|
|
62
|
-
i0.ɵɵtextInterpolate(stat_r6.Count);
|
|
63
|
-
} }
|
|
64
|
-
function VersionHistoryLabelsResourceComponent_Conditional_2_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
-
const _r7 = i0.ɵɵgetCurrentView();
|
|
66
|
-
i0.ɵɵelementStart(0, "button", 44);
|
|
67
|
-
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_2_Conditional_59_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSearchChange("")); });
|
|
68
|
-
i0.ɵɵelement(1, "i", 45);
|
|
69
|
-
i0.ɵɵelementEnd();
|
|
70
|
-
} }
|
|
71
|
-
function VersionHistoryLabelsResourceComponent_Conditional_2_Conditional_60_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
-
i0.ɵɵelementStart(0, "span", 52);
|
|
73
|
-
i0.ɵɵelement(1, "i", 56);
|
|
22
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
i0.ɵɵelementStart(0, "span", 37);
|
|
24
|
+
i0.ɵɵelement(1, "i", 41);
|
|
74
25
|
i0.ɵɵtext(2);
|
|
75
26
|
i0.ɵɵelementEnd();
|
|
76
27
|
} if (rf & 2) {
|
|
77
|
-
const
|
|
78
|
-
const
|
|
28
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
29
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
79
30
|
i0.ɵɵadvance(2);
|
|
80
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
31
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.GetChildLabels(label_r2.ID).length, " records ");
|
|
81
32
|
} }
|
|
82
|
-
function
|
|
83
|
-
i0.ɵɵelementStart(0, "span",
|
|
84
|
-
i0.ɵɵelement(1, "i",
|
|
33
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵelementStart(0, "span", 42);
|
|
35
|
+
i0.ɵɵelement(1, "i", 51);
|
|
85
36
|
i0.ɵɵtext(2);
|
|
86
37
|
i0.ɵɵelementEnd();
|
|
87
38
|
} if (rf & 2) {
|
|
88
|
-
const
|
|
89
|
-
const
|
|
39
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
40
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
90
41
|
i0.ɵɵadvance(2);
|
|
91
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
42
|
+
i0.ɵɵtextInterpolate1(" ", label_r2.Entity ?? ctx_r2.ResolveEntityName(label_r2.EntityID), " ");
|
|
92
43
|
} }
|
|
93
|
-
function
|
|
94
|
-
i0.ɵɵelementStart(0, "span",
|
|
95
|
-
i0.ɵɵelement(1, "i",
|
|
44
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
+
i0.ɵɵelementStart(0, "span", 43);
|
|
46
|
+
i0.ɵɵelement(1, "i", 52);
|
|
96
47
|
i0.ɵɵtext(2);
|
|
97
48
|
i0.ɵɵpipe(3, "slice");
|
|
98
49
|
i0.ɵɵelementEnd();
|
|
99
50
|
} if (rf & 2) {
|
|
100
|
-
const
|
|
51
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
101
52
|
i0.ɵɵadvance(2);
|
|
102
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(3, 1,
|
|
53
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(3, 1, label_r2.RecordID, 0, 12), "... ");
|
|
103
54
|
} }
|
|
104
|
-
function
|
|
105
|
-
i0.ɵɵelementStart(0, "span",
|
|
106
|
-
i0.ɵɵelement(1, "i",
|
|
55
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
57
|
+
i0.ɵɵelement(1, "i", 53);
|
|
107
58
|
i0.ɵɵtext(2);
|
|
108
59
|
i0.ɵɵelementEnd();
|
|
109
60
|
} if (rf & 2) {
|
|
110
|
-
const
|
|
61
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
111
62
|
i0.ɵɵadvance(2);
|
|
112
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
63
|
+
i0.ɵɵtextInterpolate1(" ", label_r2.ItemCount, " items ");
|
|
113
64
|
} }
|
|
114
|
-
function
|
|
115
|
-
i0.ɵɵelementStart(0, "span",
|
|
116
|
-
i0.ɵɵelement(1, "i",
|
|
65
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
67
|
+
i0.ɵɵelement(1, "i", 53);
|
|
117
68
|
i0.ɵɵtext(2);
|
|
118
69
|
i0.ɵɵelementEnd();
|
|
119
70
|
} if (rf & 2) {
|
|
120
|
-
const
|
|
121
|
-
const
|
|
71
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
72
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
122
73
|
i0.ɵɵadvance(2);
|
|
123
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
74
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.GetItemCount(label_r2.ID), " items ");
|
|
124
75
|
} }
|
|
125
|
-
function
|
|
126
|
-
i0.ɵɵelementStart(0, "span",
|
|
127
|
-
i0.ɵɵelement(1, "i",
|
|
76
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
i0.ɵɵelementStart(0, "span", 45);
|
|
78
|
+
i0.ɵɵelement(1, "i", 54);
|
|
128
79
|
i0.ɵɵtext(2);
|
|
129
80
|
i0.ɵɵelementEnd();
|
|
130
81
|
} if (rf & 2) {
|
|
131
|
-
const
|
|
132
|
-
const
|
|
82
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
83
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
133
84
|
i0.ɵɵadvance(2);
|
|
134
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
85
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatDuration(label_r2.CreationDurationMS), " ");
|
|
135
86
|
} }
|
|
136
|
-
function
|
|
137
|
-
i0.ɵɵelementStart(0, "span",
|
|
138
|
-
i0.ɵɵelement(1, "i",
|
|
87
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
+
i0.ɵɵelementStart(0, "span", 46);
|
|
89
|
+
i0.ɵɵelement(1, "i", 55);
|
|
139
90
|
i0.ɵɵtext(2);
|
|
140
91
|
i0.ɵɵelementEnd();
|
|
141
92
|
} if (rf & 2) {
|
|
142
|
-
const
|
|
93
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
143
94
|
i0.ɵɵadvance(2);
|
|
144
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
95
|
+
i0.ɵɵtextInterpolate1(" ", label_r2.CreatedByUser, " ");
|
|
145
96
|
} }
|
|
146
|
-
function
|
|
147
|
-
i0.ɵɵelementStart(0, "p",
|
|
97
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
i0.ɵɵelementStart(0, "p", 49);
|
|
148
99
|
i0.ɵɵtext(1);
|
|
149
100
|
i0.ɵɵelementEnd();
|
|
150
101
|
} if (rf & 2) {
|
|
151
|
-
const
|
|
102
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
152
103
|
i0.ɵɵadvance();
|
|
153
|
-
i0.ɵɵtextInterpolate(
|
|
104
|
+
i0.ɵɵtextInterpolate(label_r2.Description);
|
|
154
105
|
} }
|
|
155
|
-
function
|
|
156
|
-
i0.ɵɵelementStart(0, "span",
|
|
106
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "span", 59);
|
|
157
108
|
i0.ɵɵtext(1);
|
|
158
109
|
i0.ɵɵpipe(2, "slice");
|
|
159
110
|
i0.ɵɵelementEnd();
|
|
160
111
|
} if (rf & 2) {
|
|
161
|
-
const
|
|
112
|
+
const child_r4 = i0.ɵɵnextContext().$implicit;
|
|
162
113
|
i0.ɵɵadvance();
|
|
163
|
-
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind3(2, 1,
|
|
114
|
+
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind3(2, 1, child_r4.RecordID, 0, 12), "...");
|
|
164
115
|
} }
|
|
165
|
-
function
|
|
166
|
-
i0.ɵɵelementStart(0, "span",
|
|
116
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
117
|
+
i0.ɵɵelementStart(0, "span", 60);
|
|
167
118
|
i0.ɵɵtext(1);
|
|
168
119
|
i0.ɵɵelementEnd();
|
|
169
120
|
} if (rf & 2) {
|
|
170
|
-
const
|
|
121
|
+
const child_r4 = i0.ɵɵnextContext().$implicit;
|
|
171
122
|
i0.ɵɵadvance();
|
|
172
|
-
i0.ɵɵtextInterpolate1("",
|
|
123
|
+
i0.ɵɵtextInterpolate1("", child_r4.ItemCount, " items");
|
|
173
124
|
} }
|
|
174
|
-
function
|
|
175
|
-
i0.ɵɵelementStart(0, "div",
|
|
176
|
-
i0.ɵɵelement(1, "i",
|
|
177
|
-
i0.ɵɵelementStart(2, "span",
|
|
125
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
127
|
+
i0.ɵɵelement(1, "i", 57);
|
|
128
|
+
i0.ɵɵelementStart(2, "span", 58);
|
|
178
129
|
i0.ɵɵtext(3);
|
|
179
130
|
i0.ɵɵelementEnd();
|
|
180
|
-
i0.ɵɵconditionalCreate(4,
|
|
181
|
-
i0.ɵɵconditionalCreate(5,
|
|
131
|
+
i0.ɵɵconditionalCreate(4, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_For_2_Conditional_4_Template, 3, 5, "span", 59);
|
|
132
|
+
i0.ɵɵconditionalCreate(5, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_For_2_Conditional_5_Template, 2, 1, "span", 60);
|
|
182
133
|
i0.ɵɵelementEnd();
|
|
183
134
|
} if (rf & 2) {
|
|
184
|
-
const
|
|
135
|
+
const child_r4 = ctx.$implicit;
|
|
185
136
|
i0.ɵɵadvance(3);
|
|
186
|
-
i0.ɵɵtextInterpolate(
|
|
137
|
+
i0.ɵɵtextInterpolate(child_r4.Name);
|
|
187
138
|
i0.ɵɵadvance();
|
|
188
|
-
i0.ɵɵconditional(
|
|
139
|
+
i0.ɵɵconditional(child_r4.RecordID ? 4 : -1);
|
|
189
140
|
i0.ɵɵadvance();
|
|
190
|
-
i0.ɵɵconditional(
|
|
141
|
+
i0.ɵɵconditional(child_r4.ItemCount ? 5 : -1);
|
|
191
142
|
} }
|
|
192
|
-
function
|
|
193
|
-
i0.ɵɵelementStart(0, "div",
|
|
194
|
-
i0.ɵɵrepeaterCreate(1,
|
|
143
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
145
|
+
i0.ɵɵrepeaterCreate(1, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_For_2_Template, 6, 3, "div", 56, i0.ɵɵrepeaterTrackByIdentity);
|
|
195
146
|
i0.ɵɵelementEnd();
|
|
196
147
|
} if (rf & 2) {
|
|
197
|
-
const
|
|
198
|
-
const
|
|
148
|
+
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
149
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
199
150
|
i0.ɵɵadvance();
|
|
200
|
-
i0.ɵɵrepeater(
|
|
151
|
+
i0.ɵɵrepeater(ctx_r2.GetChildLabels(label_r2.ID));
|
|
201
152
|
} }
|
|
202
|
-
function
|
|
203
|
-
const
|
|
204
|
-
i0.ɵɵelementStart(0, "div",
|
|
205
|
-
i0.ɵɵlistener("click", function
|
|
206
|
-
i0.ɵɵelementStart(1, "div",
|
|
207
|
-
i0.ɵɵelement(3, "i",
|
|
208
|
-
i0.ɵɵelementStart(4, "h3",
|
|
153
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
155
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
156
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Template_div_click_0_listener() { const label_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnLabelClick(label_r2)); });
|
|
157
|
+
i0.ɵɵelementStart(1, "div", 33)(2, "div", 34);
|
|
158
|
+
i0.ɵɵelement(3, "i", 35);
|
|
159
|
+
i0.ɵɵelementStart(4, "h3", 36);
|
|
209
160
|
i0.ɵɵtext(5);
|
|
210
161
|
i0.ɵɵelementEnd();
|
|
211
|
-
i0.ɵɵconditionalCreate(6,
|
|
212
|
-
i0.ɵɵelementStart(7, "span",
|
|
162
|
+
i0.ɵɵconditionalCreate(6, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_6_Template, 3, 1, "span", 37);
|
|
163
|
+
i0.ɵɵelementStart(7, "span", 38);
|
|
213
164
|
i0.ɵɵtext(8);
|
|
214
165
|
i0.ɵɵelementEnd()();
|
|
215
|
-
i0.ɵɵelementStart(9, "div",
|
|
216
|
-
i0.ɵɵelement(11, "i",
|
|
166
|
+
i0.ɵɵelementStart(9, "div", 39)(10, "span", 40);
|
|
167
|
+
i0.ɵɵelement(11, "i", 41);
|
|
217
168
|
i0.ɵɵtext(12);
|
|
218
169
|
i0.ɵɵelementEnd();
|
|
219
|
-
i0.ɵɵconditionalCreate(13,
|
|
220
|
-
i0.ɵɵconditionalCreate(14,
|
|
221
|
-
i0.ɵɵconditionalCreate(15,
|
|
222
|
-
i0.ɵɵconditionalCreate(16,
|
|
223
|
-
i0.ɵɵconditionalCreate(17,
|
|
224
|
-
i0.ɵɵconditionalCreate(18,
|
|
225
|
-
i0.ɵɵelementStart(19, "span",
|
|
226
|
-
i0.ɵɵelement(20, "i",
|
|
170
|
+
i0.ɵɵconditionalCreate(13, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_13_Template, 3, 1, "span", 42);
|
|
171
|
+
i0.ɵɵconditionalCreate(14, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_14_Template, 4, 5, "span", 43);
|
|
172
|
+
i0.ɵɵconditionalCreate(15, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_15_Template, 3, 1, "span", 44);
|
|
173
|
+
i0.ɵɵconditionalCreate(16, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_16_Template, 3, 1, "span", 44);
|
|
174
|
+
i0.ɵɵconditionalCreate(17, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_17_Template, 3, 1, "span", 45);
|
|
175
|
+
i0.ɵɵconditionalCreate(18, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_18_Template, 3, 1, "span", 46);
|
|
176
|
+
i0.ɵɵelementStart(19, "span", 47);
|
|
177
|
+
i0.ɵɵelement(20, "i", 48);
|
|
227
178
|
i0.ɵɵtext(21);
|
|
228
179
|
i0.ɵɵelementEnd()()();
|
|
229
|
-
i0.ɵɵconditionalCreate(22,
|
|
230
|
-
i0.ɵɵconditionalCreate(23,
|
|
180
|
+
i0.ɵɵconditionalCreate(22, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_22_Template, 2, 1, "p", 49);
|
|
181
|
+
i0.ɵɵconditionalCreate(23, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Conditional_23_Template, 3, 0, "div", 50);
|
|
231
182
|
i0.ɵɵelementEnd();
|
|
232
183
|
} if (rf & 2) {
|
|
233
|
-
const
|
|
234
|
-
const
|
|
235
|
-
i0.ɵɵclassProp("group-parent",
|
|
184
|
+
const label_r2 = ctx.$implicit;
|
|
185
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
186
|
+
i0.ɵɵclassProp("group-parent", ctx_r2.IsGroupParent(label_r2));
|
|
236
187
|
i0.ɵɵadvance(3);
|
|
237
|
-
i0.ɵɵclassMap(
|
|
188
|
+
i0.ɵɵclassMap(ctx_r2.GetScopeIcon(label_r2.Scope));
|
|
238
189
|
i0.ɵɵadvance(2);
|
|
239
|
-
i0.ɵɵtextInterpolate(
|
|
190
|
+
i0.ɵɵtextInterpolate(label_r2.Name);
|
|
240
191
|
i0.ɵɵadvance();
|
|
241
|
-
i0.ɵɵconditional(
|
|
192
|
+
i0.ɵɵconditional(ctx_r2.IsGroupParent(label_r2) ? 6 : -1);
|
|
242
193
|
i0.ɵɵadvance();
|
|
243
|
-
i0.ɵɵproperty("ngClass",
|
|
194
|
+
i0.ɵɵproperty("ngClass", ctx_r2.GetStatusClass(label_r2.Status));
|
|
244
195
|
i0.ɵɵadvance();
|
|
245
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
196
|
+
i0.ɵɵtextInterpolate1(" ", label_r2.Status, " ");
|
|
246
197
|
i0.ɵɵadvance(4);
|
|
247
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
198
|
+
i0.ɵɵtextInterpolate1(" ", label_r2.Scope, " ");
|
|
248
199
|
i0.ɵɵadvance();
|
|
249
|
-
i0.ɵɵconditional(
|
|
200
|
+
i0.ɵɵconditional(label_r2.Entity || label_r2.EntityID ? 13 : -1);
|
|
250
201
|
i0.ɵɵadvance();
|
|
251
|
-
i0.ɵɵconditional(
|
|
202
|
+
i0.ɵɵconditional(label_r2.RecordID ? 14 : -1);
|
|
252
203
|
i0.ɵɵadvance();
|
|
253
|
-
i0.ɵɵconditional(
|
|
204
|
+
i0.ɵɵconditional(label_r2.ItemCount ? 15 : -1);
|
|
254
205
|
i0.ɵɵadvance();
|
|
255
|
-
i0.ɵɵconditional(!
|
|
206
|
+
i0.ɵɵconditional(!label_r2.ItemCount ? 16 : -1);
|
|
256
207
|
i0.ɵɵadvance();
|
|
257
|
-
i0.ɵɵconditional(
|
|
208
|
+
i0.ɵɵconditional(label_r2.CreationDurationMS ? 17 : -1);
|
|
258
209
|
i0.ɵɵadvance();
|
|
259
|
-
i0.ɵɵconditional(
|
|
210
|
+
i0.ɵɵconditional(label_r2.CreatedByUser ? 18 : -1);
|
|
260
211
|
i0.ɵɵadvance(3);
|
|
261
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
212
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatDate(label_r2.__mj_CreatedAt), " ");
|
|
262
213
|
i0.ɵɵadvance();
|
|
263
|
-
i0.ɵɵconditional(
|
|
214
|
+
i0.ɵɵconditional(label_r2.Description ? 22 : -1);
|
|
264
215
|
i0.ɵɵadvance();
|
|
265
|
-
i0.ɵɵconditional(
|
|
216
|
+
i0.ɵɵconditional(ctx_r2.IsGroupParent(label_r2) && ctx_r2.GetChildLabels(label_r2.ID).length > 0 ? 23 : -1);
|
|
266
217
|
} }
|
|
267
|
-
function
|
|
268
|
-
i0.ɵɵelementStart(0, "div",
|
|
269
|
-
i0.ɵɵrepeaterCreate(1,
|
|
218
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
219
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
220
|
+
i0.ɵɵrepeaterCreate(1, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For_2_Template, 24, 18, "div", 31, i0.ɵɵrepeaterTrackByIdentity);
|
|
270
221
|
i0.ɵɵelementEnd();
|
|
271
222
|
} if (rf & 2) {
|
|
272
|
-
const
|
|
223
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
273
224
|
i0.ɵɵadvance();
|
|
274
|
-
i0.ɵɵrepeater(
|
|
225
|
+
i0.ɵɵrepeater(ctx_r2.FilteredLabels);
|
|
275
226
|
} }
|
|
276
|
-
function
|
|
277
|
-
i0.ɵɵelementStart(0, "span",
|
|
278
|
-
i0.ɵɵelement(1, "i",
|
|
227
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_For_19_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
228
|
+
i0.ɵɵelementStart(0, "span", 75);
|
|
229
|
+
i0.ɵɵelement(1, "i", 41);
|
|
279
230
|
i0.ɵɵtext(2);
|
|
280
231
|
i0.ɵɵelementEnd();
|
|
281
232
|
} if (rf & 2) {
|
|
282
|
-
const
|
|
283
|
-
const
|
|
233
|
+
const label_r7 = i0.ɵɵnextContext().$implicit;
|
|
234
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
284
235
|
i0.ɵɵadvance(2);
|
|
285
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
236
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.GetChildLabels(label_r7.ID).length, " ");
|
|
286
237
|
} }
|
|
287
|
-
function
|
|
288
|
-
const
|
|
289
|
-
i0.ɵɵelementStart(0, "div",
|
|
290
|
-
i0.ɵɵlistener("click", function
|
|
291
|
-
i0.ɵɵelementStart(1, "span",
|
|
292
|
-
i0.ɵɵelement(2, "i",
|
|
293
|
-
i0.ɵɵelementEnd();
|
|
294
|
-
i0.ɵɵelementStart(3, "span",
|
|
238
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_For_19_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
240
|
+
i0.ɵɵelementStart(0, "div", 71);
|
|
241
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_For_19_Template_div_click_0_listener() { const label_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnLabelClick(label_r7)); });
|
|
242
|
+
i0.ɵɵelementStart(1, "span", 62);
|
|
243
|
+
i0.ɵɵelement(2, "i", 72);
|
|
244
|
+
i0.ɵɵelementEnd();
|
|
245
|
+
i0.ɵɵelementStart(3, "span", 73)(4, "span", 74);
|
|
295
246
|
i0.ɵɵtext(5);
|
|
296
247
|
i0.ɵɵelementEnd();
|
|
297
|
-
i0.ɵɵconditionalCreate(6,
|
|
248
|
+
i0.ɵɵconditionalCreate(6, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_For_19_Conditional_6_Template, 3, 1, "span", 75);
|
|
298
249
|
i0.ɵɵelementEnd();
|
|
299
|
-
i0.ɵɵelementStart(7, "span",
|
|
250
|
+
i0.ɵɵelementStart(7, "span", 65);
|
|
300
251
|
i0.ɵɵtext(8);
|
|
301
252
|
i0.ɵɵelementEnd();
|
|
302
|
-
i0.ɵɵelementStart(9, "span",
|
|
253
|
+
i0.ɵɵelementStart(9, "span", 76)(10, "span", 77);
|
|
303
254
|
i0.ɵɵtext(11);
|
|
304
255
|
i0.ɵɵelementEnd()();
|
|
305
|
-
i0.ɵɵelementStart(12, "span",
|
|
256
|
+
i0.ɵɵelementStart(12, "span", 78);
|
|
306
257
|
i0.ɵɵtext(13);
|
|
307
258
|
i0.ɵɵelementEnd();
|
|
308
|
-
i0.ɵɵelementStart(14, "span",
|
|
259
|
+
i0.ɵɵelementStart(14, "span", 79);
|
|
309
260
|
i0.ɵɵtext(15);
|
|
310
261
|
i0.ɵɵelementEnd();
|
|
311
|
-
i0.ɵɵelementStart(16, "span",
|
|
312
|
-
i0.ɵɵelement(17, "i",
|
|
262
|
+
i0.ɵɵelementStart(16, "span", 69);
|
|
263
|
+
i0.ɵɵelement(17, "i", 80);
|
|
313
264
|
i0.ɵɵelementEnd()();
|
|
314
265
|
} if (rf & 2) {
|
|
315
|
-
const
|
|
316
|
-
const
|
|
266
|
+
const label_r7 = ctx.$implicit;
|
|
267
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
317
268
|
i0.ɵɵadvance(2);
|
|
318
|
-
i0.ɵɵclassMap(
|
|
269
|
+
i0.ɵɵclassMap(ctx_r2.GetScopeIcon(label_r7.Scope));
|
|
319
270
|
i0.ɵɵadvance(3);
|
|
320
|
-
i0.ɵɵtextInterpolate(
|
|
271
|
+
i0.ɵɵtextInterpolate(label_r7.Name);
|
|
321
272
|
i0.ɵɵadvance();
|
|
322
|
-
i0.ɵɵconditional(
|
|
273
|
+
i0.ɵɵconditional(ctx_r2.IsGroupParent(label_r7) ? 6 : -1);
|
|
323
274
|
i0.ɵɵadvance(2);
|
|
324
|
-
i0.ɵɵtextInterpolate(
|
|
275
|
+
i0.ɵɵtextInterpolate(label_r7.Entity ?? ctx_r2.ResolveEntityName(label_r7.EntityID));
|
|
325
276
|
i0.ɵɵadvance(2);
|
|
326
|
-
i0.ɵɵproperty("ngClass",
|
|
277
|
+
i0.ɵɵproperty("ngClass", ctx_r2.GetStatusClass(label_r7.Status));
|
|
327
278
|
i0.ɵɵadvance();
|
|
328
|
-
i0.ɵɵtextInterpolate(
|
|
279
|
+
i0.ɵɵtextInterpolate(label_r7.Status);
|
|
329
280
|
i0.ɵɵadvance(2);
|
|
330
|
-
i0.ɵɵtextInterpolate(
|
|
281
|
+
i0.ɵɵtextInterpolate(label_r7.ItemCount || ctx_r2.GetItemCount(label_r7.ID));
|
|
331
282
|
i0.ɵɵadvance(2);
|
|
332
|
-
i0.ɵɵtextInterpolate(
|
|
283
|
+
i0.ɵɵtextInterpolate(ctx_r2.FormatDate(label_r7.__mj_CreatedAt));
|
|
333
284
|
} }
|
|
334
|
-
function
|
|
335
|
-
const
|
|
336
|
-
i0.ɵɵelementStart(0, "div",
|
|
337
|
-
i0.ɵɵelement(2, "span",
|
|
338
|
-
i0.ɵɵelementStart(3, "span",
|
|
339
|
-
i0.ɵɵlistener("click", function
|
|
285
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
286
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
287
|
+
i0.ɵɵelementStart(0, "div", 29)(1, "div", 61);
|
|
288
|
+
i0.ɵɵelement(2, "span", 62);
|
|
289
|
+
i0.ɵɵelementStart(3, "span", 63);
|
|
290
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Name")); });
|
|
340
291
|
i0.ɵɵtext(4, " Name ");
|
|
341
|
-
i0.ɵɵelement(5, "i",
|
|
292
|
+
i0.ɵɵelement(5, "i", 64);
|
|
342
293
|
i0.ɵɵelementEnd();
|
|
343
|
-
i0.ɵɵelementStart(6, "span",
|
|
294
|
+
i0.ɵɵelementStart(6, "span", 65);
|
|
344
295
|
i0.ɵɵtext(7, "Entity");
|
|
345
296
|
i0.ɵɵelementEnd();
|
|
346
|
-
i0.ɵɵelementStart(8, "span",
|
|
347
|
-
i0.ɵɵlistener("click", function
|
|
297
|
+
i0.ɵɵelementStart(8, "span", 66);
|
|
298
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Status")); });
|
|
348
299
|
i0.ɵɵtext(9, " Status ");
|
|
349
|
-
i0.ɵɵelement(10, "i",
|
|
300
|
+
i0.ɵɵelement(10, "i", 64);
|
|
350
301
|
i0.ɵɵelementEnd();
|
|
351
|
-
i0.ɵɵelementStart(11, "span",
|
|
352
|
-
i0.ɵɵlistener("click", function
|
|
302
|
+
i0.ɵɵelementStart(11, "span", 67);
|
|
303
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_Template_span_click_11_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Items")); });
|
|
353
304
|
i0.ɵɵtext(12, " Items ");
|
|
354
|
-
i0.ɵɵelement(13, "i",
|
|
305
|
+
i0.ɵɵelement(13, "i", 64);
|
|
355
306
|
i0.ɵɵelementEnd();
|
|
356
|
-
i0.ɵɵelementStart(14, "span",
|
|
357
|
-
i0.ɵɵlistener("click", function
|
|
307
|
+
i0.ɵɵelementStart(14, "span", 68);
|
|
308
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_Template_span_click_14_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Date")); });
|
|
358
309
|
i0.ɵɵtext(15, " Created ");
|
|
359
|
-
i0.ɵɵelement(16, "i",
|
|
310
|
+
i0.ɵɵelement(16, "i", 64);
|
|
360
311
|
i0.ɵɵelementEnd();
|
|
361
|
-
i0.ɵɵelement(17, "span",
|
|
312
|
+
i0.ɵɵelement(17, "span", 69);
|
|
362
313
|
i0.ɵɵelementEnd();
|
|
363
|
-
i0.ɵɵrepeaterCreate(18,
|
|
314
|
+
i0.ɵɵrepeaterCreate(18, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_For_19_Template, 18, 9, "div", 70, i0.ɵɵrepeaterTrackByIdentity);
|
|
364
315
|
i0.ɵɵelementEnd();
|
|
365
316
|
} if (rf & 2) {
|
|
366
|
-
const
|
|
317
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
367
318
|
i0.ɵɵadvance(5);
|
|
368
|
-
i0.ɵɵclassMap(
|
|
319
|
+
i0.ɵɵclassMap(ctx_r2.GetSortIcon("Name"));
|
|
369
320
|
i0.ɵɵadvance(5);
|
|
370
|
-
i0.ɵɵclassMap(
|
|
321
|
+
i0.ɵɵclassMap(ctx_r2.GetSortIcon("Status"));
|
|
371
322
|
i0.ɵɵadvance(3);
|
|
372
|
-
i0.ɵɵclassMap(
|
|
323
|
+
i0.ɵɵclassMap(ctx_r2.GetSortIcon("Items"));
|
|
373
324
|
i0.ɵɵadvance(3);
|
|
374
|
-
i0.ɵɵclassMap(
|
|
325
|
+
i0.ɵɵclassMap(ctx_r2.GetSortIcon("Date"));
|
|
375
326
|
i0.ɵɵadvance(2);
|
|
376
|
-
i0.ɵɵrepeater(
|
|
327
|
+
i0.ɵɵrepeater(ctx_r2.FilteredLabels);
|
|
377
328
|
} }
|
|
378
|
-
function
|
|
329
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
379
330
|
i0.ɵɵelementStart(0, "p");
|
|
380
331
|
i0.ɵɵtext(1, " Try adjusting your filters or search criteria. ");
|
|
381
332
|
i0.ɵɵelementEnd();
|
|
382
333
|
} }
|
|
383
|
-
function
|
|
334
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
384
335
|
i0.ɵɵelementStart(0, "p");
|
|
385
336
|
i0.ɵɵtext(1, " No version labels have been created yet. ");
|
|
386
337
|
i0.ɵɵelementEnd();
|
|
387
338
|
} }
|
|
388
|
-
function
|
|
389
|
-
const
|
|
390
|
-
i0.ɵɵelementStart(0, "button",
|
|
391
|
-
i0.ɵɵlistener("click", function
|
|
392
|
-
i0.ɵɵelement(1, "i",
|
|
339
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
340
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
341
|
+
i0.ɵɵelementStart(0, "button", 83);
|
|
342
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OpenCreateDialog()); });
|
|
343
|
+
i0.ɵɵelement(1, "i", 9);
|
|
393
344
|
i0.ɵɵelementStart(2, "span");
|
|
394
345
|
i0.ɵɵtext(3, "Create Your First Label");
|
|
395
346
|
i0.ɵɵelementEnd()();
|
|
396
347
|
} }
|
|
397
|
-
function
|
|
398
|
-
i0.ɵɵelementStart(0, "div",
|
|
399
|
-
i0.ɵɵelement(1, "i",
|
|
348
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
349
|
+
i0.ɵɵelementStart(0, "div", 30);
|
|
350
|
+
i0.ɵɵelement(1, "i", 81);
|
|
400
351
|
i0.ɵɵelementStart(2, "h3");
|
|
401
352
|
i0.ɵɵtext(3, "No labels found");
|
|
402
353
|
i0.ɵɵelementEnd();
|
|
403
|
-
i0.ɵɵconditionalCreate(4,
|
|
404
|
-
i0.ɵɵconditionalCreate(5,
|
|
405
|
-
i0.ɵɵconditionalCreate(6,
|
|
354
|
+
i0.ɵɵconditionalCreate(4, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Conditional_4_Template, 2, 0, "p");
|
|
355
|
+
i0.ɵɵconditionalCreate(5, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Conditional_5_Template, 2, 0, "p");
|
|
356
|
+
i0.ɵɵconditionalCreate(6, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Conditional_6_Template, 4, 0, "button", 82);
|
|
406
357
|
i0.ɵɵelementEnd();
|
|
407
358
|
} if (rf & 2) {
|
|
408
|
-
const
|
|
359
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
409
360
|
i0.ɵɵadvance(4);
|
|
410
|
-
i0.ɵɵconditional(
|
|
361
|
+
i0.ɵɵconditional(ctx_r2.SearchText || ctx_r2.ScopeFilter || ctx_r2.StatusFilter ? 4 : -1);
|
|
411
362
|
i0.ɵɵadvance();
|
|
412
|
-
i0.ɵɵconditional(!
|
|
363
|
+
i0.ɵɵconditional(!ctx_r2.SearchText && !ctx_r2.ScopeFilter && !ctx_r2.StatusFilter ? 5 : -1);
|
|
413
364
|
i0.ɵɵadvance();
|
|
414
|
-
i0.ɵɵconditional(!
|
|
365
|
+
i0.ɵɵconditional(!ctx_r2.SearchText && !ctx_r2.ScopeFilter && !ctx_r2.StatusFilter ? 6 : -1);
|
|
415
366
|
} }
|
|
416
|
-
function
|
|
417
|
-
|
|
418
|
-
i0.ɵɵ
|
|
419
|
-
i0.ɵɵtext(3, "Version Labels");
|
|
420
|
-
i0.ɵɵelementEnd();
|
|
421
|
-
i0.ɵɵelementStart(4, "p", 7);
|
|
422
|
-
i0.ɵɵtext(5, "Manage versioning snapshots across your system");
|
|
423
|
-
i0.ɵɵelementEnd()();
|
|
424
|
-
i0.ɵɵelementStart(6, "div", 8)(7, "div", 9)(8, "button", 10);
|
|
425
|
-
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_2_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetViewMode("card")); });
|
|
426
|
-
i0.ɵɵelement(9, "i", 11);
|
|
427
|
-
i0.ɵɵelementEnd();
|
|
428
|
-
i0.ɵɵelementStart(10, "button", 12);
|
|
429
|
-
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_2_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetViewMode("list")); });
|
|
430
|
-
i0.ɵɵelement(11, "i", 13);
|
|
431
|
-
i0.ɵɵelementEnd()();
|
|
432
|
-
i0.ɵɵelementStart(12, "button", 14);
|
|
433
|
-
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_2_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenCreateDialog()); });
|
|
434
|
-
i0.ɵɵelement(13, "i", 15);
|
|
435
|
-
i0.ɵɵelementStart(14, "span");
|
|
436
|
-
i0.ɵɵtext(15, "Create Label");
|
|
437
|
-
i0.ɵɵelementEnd()();
|
|
438
|
-
i0.ɵɵelementStart(16, "button", 16);
|
|
439
|
-
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_2_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Refresh()); });
|
|
440
|
-
i0.ɵɵelement(17, "i", 17);
|
|
441
|
-
i0.ɵɵelementEnd()()();
|
|
442
|
-
i0.ɵɵelementStart(18, "div", 18)(19, "div", 19)(20, "div", 20);
|
|
443
|
-
i0.ɵɵelement(21, "i", 21);
|
|
367
|
+
function VersionHistoryLabelsResourceComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
368
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 16)(2, "div", 17);
|
|
369
|
+
i0.ɵɵelement(3, "i", 18);
|
|
444
370
|
i0.ɵɵelementEnd();
|
|
445
|
-
i0.ɵɵelementStart(
|
|
446
|
-
i0.ɵɵtext(
|
|
371
|
+
i0.ɵɵelementStart(4, "div", 19)(5, "div", 20);
|
|
372
|
+
i0.ɵɵtext(6);
|
|
447
373
|
i0.ɵɵelementEnd();
|
|
448
|
-
i0.ɵɵelementStart(
|
|
449
|
-
i0.ɵɵtext(
|
|
374
|
+
i0.ɵɵelementStart(7, "div", 21);
|
|
375
|
+
i0.ɵɵtext(8, "Total Labels");
|
|
450
376
|
i0.ɵɵelementEnd()()();
|
|
451
|
-
i0.ɵɵelementStart(
|
|
452
|
-
i0.ɵɵelement(
|
|
377
|
+
i0.ɵɵelementStart(9, "div", 16)(10, "div", 22);
|
|
378
|
+
i0.ɵɵelement(11, "i", 23);
|
|
453
379
|
i0.ɵɵelementEnd();
|
|
454
|
-
i0.ɵɵelementStart(
|
|
455
|
-
i0.ɵɵtext(
|
|
380
|
+
i0.ɵɵelementStart(12, "div", 19)(13, "div", 20);
|
|
381
|
+
i0.ɵɵtext(14);
|
|
456
382
|
i0.ɵɵelementEnd();
|
|
457
|
-
i0.ɵɵelementStart(
|
|
458
|
-
i0.ɵɵtext(
|
|
383
|
+
i0.ɵɵelementStart(15, "div", 21);
|
|
384
|
+
i0.ɵɵtext(16, "Active");
|
|
459
385
|
i0.ɵɵelementEnd()()();
|
|
460
|
-
i0.ɵɵelementStart(
|
|
461
|
-
i0.ɵɵelement(
|
|
386
|
+
i0.ɵɵelementStart(17, "div", 16)(18, "div", 24);
|
|
387
|
+
i0.ɵɵelement(19, "i", 25);
|
|
462
388
|
i0.ɵɵelementEnd();
|
|
463
|
-
i0.ɵɵelementStart(
|
|
464
|
-
i0.ɵɵtext(
|
|
389
|
+
i0.ɵɵelementStart(20, "div", 19)(21, "div", 20);
|
|
390
|
+
i0.ɵɵtext(22);
|
|
465
391
|
i0.ɵɵelementEnd();
|
|
466
|
-
i0.ɵɵelementStart(
|
|
467
|
-
i0.ɵɵtext(
|
|
392
|
+
i0.ɵɵelementStart(23, "div", 21);
|
|
393
|
+
i0.ɵɵtext(24, "Archived");
|
|
468
394
|
i0.ɵɵelementEnd()()();
|
|
469
|
-
i0.ɵɵelementStart(
|
|
470
|
-
i0.ɵɵelement(
|
|
395
|
+
i0.ɵɵelementStart(25, "div", 16)(26, "div", 26);
|
|
396
|
+
i0.ɵɵelement(27, "i", 27);
|
|
471
397
|
i0.ɵɵelementEnd();
|
|
472
|
-
i0.ɵɵelementStart(
|
|
473
|
-
i0.ɵɵtext(
|
|
398
|
+
i0.ɵɵelementStart(28, "div", 19)(29, "div", 20);
|
|
399
|
+
i0.ɵɵtext(30);
|
|
474
400
|
i0.ɵɵelementEnd();
|
|
475
|
-
i0.ɵɵelementStart(
|
|
476
|
-
i0.ɵɵtext(
|
|
401
|
+
i0.ɵɵelementStart(31, "div", 21);
|
|
402
|
+
i0.ɵɵtext(32, "Restored");
|
|
477
403
|
i0.ɵɵelementEnd()()()();
|
|
478
|
-
i0.ɵɵ
|
|
479
|
-
i0.ɵɵ
|
|
480
|
-
i0.ɵɵ
|
|
481
|
-
i0.ɵɵelementEnd();
|
|
482
|
-
i0.ɵɵelementStart(56, "div", 34);
|
|
483
|
-
i0.ɵɵelement(57, "i", 35);
|
|
484
|
-
i0.ɵɵelementStart(58, "input", 36);
|
|
485
|
-
i0.ɵɵlistener("ngModelChange", function VersionHistoryLabelsResourceComponent_Conditional_2_Template_input_ngModelChange_58_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSearchChange($event)); });
|
|
486
|
-
i0.ɵɵelementEnd();
|
|
487
|
-
i0.ɵɵconditionalCreate(59, VersionHistoryLabelsResourceComponent_Conditional_2_Conditional_59_Template, 2, 0, "button", 37);
|
|
488
|
-
i0.ɵɵelementEnd();
|
|
489
|
-
i0.ɵɵconditionalCreate(60, VersionHistoryLabelsResourceComponent_Conditional_2_Conditional_60_Template, 3, 0, "div", 38);
|
|
490
|
-
i0.ɵɵconditionalCreate(61, VersionHistoryLabelsResourceComponent_Conditional_2_Conditional_61_Template, 20, 8, "div", 39);
|
|
491
|
-
i0.ɵɵconditionalCreate(62, VersionHistoryLabelsResourceComponent_Conditional_2_Conditional_62_Template, 7, 3, "div", 40);
|
|
404
|
+
i0.ɵɵconditionalCreate(33, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_Template, 3, 0, "div", 28);
|
|
405
|
+
i0.ɵɵconditionalCreate(34, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_Template, 20, 8, "div", 29);
|
|
406
|
+
i0.ɵɵconditionalCreate(35, VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Template, 7, 3, "div", 30);
|
|
492
407
|
} if (rf & 2) {
|
|
493
|
-
const
|
|
408
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
409
|
+
i0.ɵɵadvance(6);
|
|
410
|
+
i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(ctx_r2.TotalLabels));
|
|
494
411
|
i0.ɵɵadvance(8);
|
|
495
|
-
i0.ɵɵ
|
|
496
|
-
i0.ɵɵadvance(2);
|
|
497
|
-
i0.ɵɵclassProp("active", ctx_r1.ViewMode === "list");
|
|
498
|
-
i0.ɵɵadvance(14);
|
|
499
|
-
i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(ctx_r1.TotalLabels));
|
|
500
|
-
i0.ɵɵadvance(8);
|
|
501
|
-
i0.ɵɵtextInterpolate(ctx_r1.FormatNumber(ctx_r1.ActiveLabels));
|
|
412
|
+
i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(ctx_r2.ActiveLabels));
|
|
502
413
|
i0.ɵɵadvance(8);
|
|
503
|
-
i0.ɵɵtextInterpolate(
|
|
414
|
+
i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(ctx_r2.ArchivedLabels));
|
|
504
415
|
i0.ɵɵadvance(8);
|
|
505
|
-
i0.ɵɵtextInterpolate(
|
|
506
|
-
i0.ɵɵadvance(
|
|
507
|
-
i0.ɵɵ
|
|
508
|
-
i0.ɵɵadvance(2);
|
|
509
|
-
i0.ɵɵrepeater(ctx_r1.StatusStats);
|
|
510
|
-
i0.ɵɵadvance(4);
|
|
511
|
-
i0.ɵɵproperty("ngModel", ctx_r1.SearchText);
|
|
512
|
-
i0.ɵɵadvance();
|
|
513
|
-
i0.ɵɵconditional(ctx_r1.SearchText ? 59 : -1);
|
|
514
|
-
i0.ɵɵadvance();
|
|
515
|
-
i0.ɵɵconditional(ctx_r1.FilteredLabels.length > 0 && ctx_r1.ViewMode === "card" ? 60 : -1);
|
|
416
|
+
i0.ɵɵtextInterpolate(ctx_r2.FormatNumber(ctx_r2.RestoredLabels));
|
|
417
|
+
i0.ɵɵadvance(3);
|
|
418
|
+
i0.ɵɵconditional(ctx_r2.FilteredLabels.length > 0 && ctx_r2.ViewMode === "card" ? 33 : -1);
|
|
516
419
|
i0.ɵɵadvance();
|
|
517
|
-
i0.ɵɵconditional(
|
|
420
|
+
i0.ɵɵconditional(ctx_r2.FilteredLabels.length > 0 && ctx_r2.ViewMode === "list" ? 34 : -1);
|
|
518
421
|
i0.ɵɵadvance();
|
|
519
|
-
i0.ɵɵconditional(
|
|
422
|
+
i0.ɵɵconditional(ctx_r2.FilteredLabels.length === 0 && !ctx_r2.IsLoading ? 35 : -1);
|
|
520
423
|
} }
|
|
521
|
-
function
|
|
522
|
-
const
|
|
523
|
-
i0.ɵɵelementStart(0, "div",
|
|
524
|
-
i0.ɵɵlistener("click", function
|
|
525
|
-
i0.ɵɵelementStart(1, "div",
|
|
526
|
-
i0.ɵɵlistener("click", function
|
|
527
|
-
i0.ɵɵelementStart(2, "div",
|
|
528
|
-
i0.ɵɵelement(4, "i",
|
|
424
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
425
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
426
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
427
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnCreateWizardCancel()); });
|
|
428
|
+
i0.ɵɵelementStart(1, "div", 85);
|
|
429
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r9); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
430
|
+
i0.ɵɵelementStart(2, "div", 86)(3, "h3", 87);
|
|
431
|
+
i0.ɵɵelement(4, "i", 88);
|
|
529
432
|
i0.ɵɵtext(5, " Create Version Label ");
|
|
530
433
|
i0.ɵɵelementEnd();
|
|
531
|
-
i0.ɵɵelementStart(6, "button",
|
|
532
|
-
i0.ɵɵlistener("click", function
|
|
533
|
-
i0.ɵɵelement(7, "i",
|
|
434
|
+
i0.ɵɵelementStart(6, "button", 89);
|
|
435
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnCreateWizardCancel()); });
|
|
436
|
+
i0.ɵɵelement(7, "i", 90);
|
|
534
437
|
i0.ɵɵelementEnd()();
|
|
535
|
-
i0.ɵɵelementStart(8, "div",
|
|
536
|
-
i0.ɵɵlistener("Created", function
|
|
438
|
+
i0.ɵɵelementStart(8, "div", 91)(9, "mj-label-create", 92);
|
|
439
|
+
i0.ɵɵlistener("Created", function VersionHistoryLabelsResourceComponent_Conditional_17_Template_mj_label_create_Created_9_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnLabelCreated($event)); })("Cancel", function VersionHistoryLabelsResourceComponent_Conditional_17_Template_mj_label_create_Cancel_9_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnCreateWizardCancel()); });
|
|
537
440
|
i0.ɵɵelementEnd()()()();
|
|
538
441
|
} }
|
|
539
|
-
function
|
|
540
|
-
const
|
|
541
|
-
i0.ɵɵelementStart(0, "mj-label-detail-panel",
|
|
542
|
-
i0.ɵɵlistener("Close", function
|
|
442
|
+
function VersionHistoryLabelsResourceComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
443
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
444
|
+
i0.ɵɵelementStart(0, "mj-label-detail-panel", 93);
|
|
445
|
+
i0.ɵɵlistener("Close", function VersionHistoryLabelsResourceComponent_Conditional_18_Template_mj_label_detail_panel_Close_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnDetailPanelClose()); })("LabelUpdated", function VersionHistoryLabelsResourceComponent_Conditional_18_Template_mj_label_detail_panel_LabelUpdated_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnLabelUpdated()); })("EntityLinkClick", function VersionHistoryLabelsResourceComponent_Conditional_18_Template_mj_label_detail_panel_EntityLinkClick_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnEntityLinkClick($event)); });
|
|
543
446
|
i0.ɵɵelementEnd();
|
|
544
447
|
} if (rf & 2) {
|
|
545
|
-
const
|
|
546
|
-
i0.ɵɵproperty("Label",
|
|
448
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
449
|
+
i0.ɵɵproperty("Label", ctx_r2.SelectedLabel)("AllLabels", ctx_r2.Labels)("ItemCountMap", ctx_r2.ItemCountMap);
|
|
547
450
|
} }
|
|
548
451
|
let VersionHistoryLabelsResourceComponent = class VersionHistoryLabelsResourceComponent extends BaseResourceComponent {
|
|
549
452
|
static { VersionHistoryLabelsResourceComponent_1 = this; }
|
|
@@ -579,6 +482,64 @@ let VersionHistoryLabelsResourceComponent = class VersionHistoryLabelsResourceCo
|
|
|
579
482
|
ShowCreateWizard = false;
|
|
580
483
|
metadata = this.ProviderToUse;
|
|
581
484
|
destroy$ = new Subject();
|
|
485
|
+
viewOptions = [
|
|
486
|
+
{ key: 'card', icon: 'fa-solid fa-grip', title: 'Card view' },
|
|
487
|
+
{ key: 'list', icon: 'fa-solid fa-list', title: 'List view' }
|
|
488
|
+
];
|
|
489
|
+
get FilterFields() {
|
|
490
|
+
const scopeOptions = [
|
|
491
|
+
{ text: 'All Scopes', value: '' },
|
|
492
|
+
...this.ScopeStats.map(s => ({ text: `${s.Scope} (${s.Count})`, value: s.Scope }))
|
|
493
|
+
];
|
|
494
|
+
const statusOptions = [
|
|
495
|
+
{ text: 'All Statuses', value: '' },
|
|
496
|
+
...this.StatusStats.map(s => ({ text: `${s.Status} (${s.Count})`, value: s.Status }))
|
|
497
|
+
];
|
|
498
|
+
return [
|
|
499
|
+
{
|
|
500
|
+
key: 'scopeFilter',
|
|
501
|
+
type: 'dropdown',
|
|
502
|
+
label: 'Scope',
|
|
503
|
+
icon: 'fa-solid fa-layer-group',
|
|
504
|
+
placeholder: 'All Scopes',
|
|
505
|
+
options: scopeOptions
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
key: 'statusFilter',
|
|
509
|
+
type: 'dropdown',
|
|
510
|
+
label: 'Status',
|
|
511
|
+
icon: 'fa-solid fa-circle-info',
|
|
512
|
+
placeholder: 'All Statuses',
|
|
513
|
+
options: statusOptions
|
|
514
|
+
}
|
|
515
|
+
];
|
|
516
|
+
}
|
|
517
|
+
get FilterValues() {
|
|
518
|
+
return { scopeFilter: this.ScopeFilter, statusFilter: this.StatusFilter };
|
|
519
|
+
}
|
|
520
|
+
get ActiveFilterCount() {
|
|
521
|
+
let n = 0;
|
|
522
|
+
if (this.ScopeFilter)
|
|
523
|
+
n++;
|
|
524
|
+
if (this.StatusFilter)
|
|
525
|
+
n++;
|
|
526
|
+
return n;
|
|
527
|
+
}
|
|
528
|
+
onFilterValuesChange(v) {
|
|
529
|
+
const next = (v ?? {});
|
|
530
|
+
if ((next.scopeFilter ?? '') !== this.ScopeFilter) {
|
|
531
|
+
this.OnScopeFilterChange(next.scopeFilter ?? '');
|
|
532
|
+
}
|
|
533
|
+
if ((next.statusFilter ?? '') !== this.StatusFilter) {
|
|
534
|
+
this.OnStatusFilterChange(next.statusFilter ?? '');
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
resetFilters() {
|
|
538
|
+
if (this.ScopeFilter)
|
|
539
|
+
this.OnScopeFilterChange('');
|
|
540
|
+
if (this.StatusFilter)
|
|
541
|
+
this.OnStatusFilterChange('');
|
|
542
|
+
}
|
|
582
543
|
constructor(cdr) {
|
|
583
544
|
super();
|
|
584
545
|
this.cdr = cdr;
|
|
@@ -937,23 +898,58 @@ let VersionHistoryLabelsResourceComponent = class VersionHistoryLabelsResourceCo
|
|
|
937
898
|
return this.Labels.filter(l => UUIDsEqual(l.ParentID, parentId));
|
|
938
899
|
}
|
|
939
900
|
static ɵfac = function VersionHistoryLabelsResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || VersionHistoryLabelsResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
940
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryLabelsResourceComponent, selectors: [["mj-version-history-labels-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
941
|
-
i0.ɵɵelementStart(0, "
|
|
942
|
-
i0.ɵɵ
|
|
943
|
-
i0.ɵɵ
|
|
944
|
-
i0.ɵɵ
|
|
945
|
-
i0.ɵɵ
|
|
901
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryLabelsResourceComponent, selectors: [["mj-version-history-labels-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 14, consts: [["Title", "Version Labels", "Icon", "fa-solid fa-tags", "Subtitle", "Manage versioning snapshots across your system"], ["meta", ""], ["Label", "labels", 3, "Count", "Total"], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "KeyChange", "Options", "ActiveKey"], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search labels by name, description, or entity...", 3, "ValueChange", "Value"], ["text", "Loading version labels..."], [1, "create-wizard-overlay"], [3, "Label", "AllLabels", "ItemCountMap"], [1, "kpi-row"], [1, "kpi-card"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-tags"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-success) 10%, transparent)", "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-circle-check"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-text-muted) 10%, transparent)", "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-box-archive"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-warning) 10%, transparent)", "color", "var(--mj-status-warning)"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "labels-list"], [1, "labels-table"], [1, "empty-state"], [1, "label-card", "clickable", 3, "group-parent"], [1, "label-card", "clickable", 3, "click"], [1, "label-header"], [1, "label-title-row"], [1, "label-scope-icon"], [1, "label-name"], [1, "group-badge"], [1, "label-status", 3, "ngClass"], [1, "label-meta"], ["title", "Scope", 1, "meta-item"], [1, "fa-solid", "fa-layer-group"], ["title", "Entity", 1, "meta-item"], ["title", "Record ID", 1, "meta-item"], ["title", "Items captured", 1, "meta-item"], ["title", "Creation time", 1, "meta-item"], ["title", "Created by", 1, "meta-item"], ["title", "Created", 1, "meta-item"], [1, "fa-regular", "fa-clock"], [1, "label-description"], [1, "child-labels"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-fingerprint"], [1, "fa-solid", "fa-camera"], [1, "fa-solid", "fa-stopwatch"], [1, "fa-solid", "fa-user"], [1, "child-label"], [1, "fa-solid", "fa-tag", "child-icon"], [1, "child-name"], [1, "child-record"], [1, "child-items"], [1, "list-header-row"], [1, "list-col-icon"], [1, "list-col-name", "sortable-header", 3, "click"], [1, "sort-icon"], [1, "list-col-entity"], [1, "list-col-status", "sortable-header", 3, "click"], [1, "list-col-items", "sortable-header", 3, "click"], [1, "list-col-date", "sortable-header", 3, "click"], [1, "list-col-arrow"], [1, "list-row", "clickable"], [1, "list-row", "clickable", 3, "click"], [1, "list-scope-icon"], [1, "list-col-name"], [1, "list-label-name"], [1, "list-group-badge"], [1, "list-col-status"], [1, "label-status", "small", 3, "ngClass"], [1, "list-col-items"], [1, "list-col-date"], [1, "fa-solid", "fa-chevron-right", "list-arrow"], [1, "fa-solid", "fa-tags", "empty-icon"], [1, "btn-primary", "empty-cta"], [1, "btn-primary", "empty-cta", 3, "click"], [1, "create-wizard-overlay", 3, "click"], [1, "create-wizard-container", 3, "click"], [1, "create-wizard-header"], [1, "create-wizard-title"], [1, "fa-solid", "fa-tag"], ["title", "Close", 1, "create-wizard-close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "create-wizard-body"], [3, "Created", "Cancel"], [3, "Close", "LabelUpdated", "EntityLinkClick", "Label", "AllLabels", "ItemCountMap"]], template: function VersionHistoryLabelsResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
902
|
+
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
|
|
903
|
+
i0.ɵɵelement(3, "mj-stat-badge", 2);
|
|
904
|
+
i0.ɵɵelementEnd();
|
|
905
|
+
i0.ɵɵelementStart(4, "div", 3)(5, "mj-filter-popover", 4);
|
|
906
|
+
i0.ɵɵlistener("ClearAllRequested", function VersionHistoryLabelsResourceComponent_Template_mj_filter_popover_ClearAllRequested_5_listener() { return ctx.resetFilters(); });
|
|
907
|
+
i0.ɵɵelementStart(6, "mj-filter-panel", 5);
|
|
908
|
+
i0.ɵɵlistener("ValuesChange", function VersionHistoryLabelsResourceComponent_Template_mj_filter_panel_ValuesChange_6_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function VersionHistoryLabelsResourceComponent_Template_mj_filter_panel_Reset_6_listener() { return ctx.resetFilters(); });
|
|
909
|
+
i0.ɵɵelementEnd()();
|
|
910
|
+
i0.ɵɵelementStart(7, "mj-view-toggle", 6);
|
|
911
|
+
i0.ɵɵlistener("KeyChange", function VersionHistoryLabelsResourceComponent_Template_mj_view_toggle_KeyChange_7_listener($event) { return ctx.SetViewMode($event); });
|
|
912
|
+
i0.ɵɵelementEnd();
|
|
913
|
+
i0.ɵɵelementStart(8, "mj-refresh-button", 7);
|
|
914
|
+
i0.ɵɵlistener("Clicked", function VersionHistoryLabelsResourceComponent_Template_mj_refresh_button_Clicked_8_listener() { return ctx.Refresh(); });
|
|
915
|
+
i0.ɵɵelementEnd();
|
|
916
|
+
i0.ɵɵelementStart(9, "button", 8);
|
|
917
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Template_button_click_9_listener() { return ctx.OpenCreateDialog(); });
|
|
918
|
+
i0.ɵɵelement(10, "i", 9);
|
|
919
|
+
i0.ɵɵtext(11, " Create Label ");
|
|
920
|
+
i0.ɵɵelementEnd()();
|
|
921
|
+
i0.ɵɵelementStart(12, "div", 10)(13, "mj-page-search", 11);
|
|
922
|
+
i0.ɵɵlistener("ValueChange", function VersionHistoryLabelsResourceComponent_Template_mj_page_search_ValueChange_13_listener($event) { return ctx.OnSearchChange($event); });
|
|
923
|
+
i0.ɵɵelementEnd()()();
|
|
924
|
+
i0.ɵɵelementStart(14, "mj-page-body");
|
|
925
|
+
i0.ɵɵconditionalCreate(15, VersionHistoryLabelsResourceComponent_Conditional_15_Template, 1, 0, "mj-loading", 12);
|
|
926
|
+
i0.ɵɵconditionalCreate(16, VersionHistoryLabelsResourceComponent_Conditional_16_Template, 36, 7);
|
|
927
|
+
i0.ɵɵconditionalCreate(17, VersionHistoryLabelsResourceComponent_Conditional_17_Template, 10, 0, "div", 13);
|
|
928
|
+
i0.ɵɵelementEnd();
|
|
929
|
+
i0.ɵɵconditionalCreate(18, VersionHistoryLabelsResourceComponent_Conditional_18_Template, 1, 3, "mj-label-detail-panel", 14);
|
|
946
930
|
i0.ɵɵelementEnd();
|
|
947
931
|
} if (rf & 2) {
|
|
932
|
+
i0.ɵɵadvance(3);
|
|
933
|
+
i0.ɵɵproperty("Count", ctx.FilteredLabels.length)("Total", ctx.Labels.length);
|
|
934
|
+
i0.ɵɵadvance(2);
|
|
935
|
+
i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
|
|
936
|
+
i0.ɵɵadvance();
|
|
937
|
+
i0.ɵɵproperty("Fields", ctx.FilterFields)("Values", ctx.FilterValues);
|
|
938
|
+
i0.ɵɵadvance();
|
|
939
|
+
i0.ɵɵproperty("Options", ctx.viewOptions)("ActiveKey", ctx.ViewMode);
|
|
948
940
|
i0.ɵɵadvance();
|
|
949
|
-
i0.ɵɵ
|
|
941
|
+
i0.ɵɵproperty("Loading", ctx.IsLoading);
|
|
942
|
+
i0.ɵɵadvance(5);
|
|
943
|
+
i0.ɵɵproperty("Value", ctx.SearchText);
|
|
944
|
+
i0.ɵɵadvance(2);
|
|
945
|
+
i0.ɵɵconditional(ctx.IsLoading ? 15 : -1);
|
|
950
946
|
i0.ɵɵadvance();
|
|
951
|
-
i0.ɵɵconditional(!ctx.IsLoading ?
|
|
947
|
+
i0.ɵɵconditional(!ctx.IsLoading ? 16 : -1);
|
|
952
948
|
i0.ɵɵadvance();
|
|
953
|
-
i0.ɵɵconditional(ctx.ShowCreateWizard ?
|
|
949
|
+
i0.ɵɵconditional(ctx.ShowCreateWizard ? 17 : -1);
|
|
954
950
|
i0.ɵɵadvance();
|
|
955
|
-
i0.ɵɵconditional(ctx.ShowDetailPanel && ctx.SelectedLabel ?
|
|
956
|
-
} }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i4.MjLabelCreateComponent, i4.MjLabelDetailComponent, i1.SlicePipe], styles: [".labels-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n\n\n.page-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.header-left[_ngcontent-%COMP%] { flex: 1; }\n\n.page-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n}\n\n.page-subtitle[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-secondary);\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.scope-chips[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.scope-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 20px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.scope-chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.scope-chip.active[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.scope-chip.active[_ngcontent-%COMP%] .chip-count[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n color: var(--mj-text-inverse);\n}\n\n.chip-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n.search-bar[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 40px 10px 40px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 10px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.2s ease;\n box-sizing: border-box;\n}\n\n.search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.btn-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n color: var(--mj-text-secondary);\n cursor: pointer;\n border-radius: 4px;\n}\n\n.btn-clear[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.labels-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.label-card[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n transition: all 0.2s ease;\n}\n\n.label-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.label-card.group-parent[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.label-header[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.label-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.label-scope-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n}\n\n.label-name[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n flex: 1;\n}\n\n.group-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 3px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.label-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-archived[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-restored[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n}\n\n.label-meta[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 4px;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.7;\n}\n\n.label-description[_ngcontent-%COMP%] {\n margin: 10px 0 0 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n\n\n.child-labels[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.child-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.child-label[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.child-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.child-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n}\n\n.child-record[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.child-items[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 12px;\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: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\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;\n max-width: 400px;\n}\n\n.empty-cta[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n\n\n\n\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.dialog-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.step-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.dialog-search[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.dialog-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.dialog-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.entity-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty[_ngcontent-%COMP%] {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n\n\n.records-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text[_ngcontent-%COMP%] {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.record-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n\n\n.details-summary[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.summary-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.details-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n.creating-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.creating-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title[_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.creating-progress[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.progress-container[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track[_ngcontent-%COMP%] {\n width: 100%;\n height: 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.progress-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.done-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title[_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.done-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n font-size: 14px;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n\n.toggle-btn[_ngcontent-%COMP%] + .toggle-btn[_ngcontent-%COMP%] {\n border-left: 1px solid var(--mj-border-default);\n}\n\n\n\n.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.label-card.clickable[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n\n\n.labels-table[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.list-header-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.list-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n transition: all 0.15s ease;\n}\n\n.list-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.list-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.list-scope-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.list-col-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n.list-label-name[_ngcontent-%COMP%] {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-group-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.list-col-entity[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 13px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-col-items[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-arrow[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.list-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.list-row[_ngcontent-%COMP%]:hover .list-arrow[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n transform: translateX(2px);\n}\n\n.label-status.small[_ngcontent-%COMP%] {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n\n\n.sortable-header[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: color 0.15s ease;\n}\n\n.sortable-header[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity 0.15s ease;\n}\n\n.sortable-header[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n\n@media (max-width: 768px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .list-header-row[_ngcontent-%COMP%], \n .list-row[_ngcontent-%COMP%] {\n grid-template-columns: 36px 1fr 80px 60px 32px;\n }\n\n .list-col-entity[_ngcontent-%COMP%], \n .list-col-date[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n\n\n\n.create-wizard-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 10000;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease;\n}\n\n.create-wizard-container[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-lg);\n width: 90%;\n max-width: 600px;\n max-height: 85vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.create-wizard-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.create-wizard-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.create-wizard-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.create-wizard-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.create-wizard-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.create-wizard-body[_ngcontent-%COMP%] {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}"], changeDetection: 0 });
|
|
951
|
+
i0.ɵɵconditional(ctx.ShowDetailPanel && ctx.SelectedLabel ? 18 : -1);
|
|
952
|
+
} }, dependencies: [i1.NgClass, i2.MJButtonDirective, i2.MJPageHeaderComponent, i2.MJPageLayoutComponent, i2.MJPageBodyComponent, i2.MJPageSearchComponent, i2.MJFilterPopoverComponent, i2.MJFilterPanelComponent, i2.MJViewToggleComponent, i2.MJStatBadgeComponent, i2.MJRefreshButtonComponent, i3.LoadingComponent, i4.MjLabelCreateComponent, i4.MjLabelDetailComponent, i1.SlicePipe], styles: ["\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.labels-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.label-card[_ngcontent-%COMP%] {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n transition: all 0.2s ease;\n}\n\n.label-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.label-card.group-parent[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.label-header[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.label-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.label-scope-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n}\n\n.label-name[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n flex: 1;\n}\n\n.group-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 3px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.label-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-archived[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-restored[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n}\n\n.label-meta[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 4px;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.meta-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n opacity: 0.7;\n}\n\n.label-description[_ngcontent-%COMP%] {\n margin: 10px 0 0 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n\n\n.child-labels[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.child-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.child-label[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.child-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.child-name[_ngcontent-%COMP%] {\n flex: 1;\n color: var(--mj-text-primary);\n}\n\n.child-record[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.child-items[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 12px;\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: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\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;\n max-width: 400px;\n}\n\n.empty-cta[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n\n\n\n\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n.dialog-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.step-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n\n\n.dialog-search[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.dialog-search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.dialog-search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.entity-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty[_ngcontent-%COMP%] {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n\n\n.records-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text[_ngcontent-%COMP%] {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.record-option[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n\n\n.details-summary[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.summary-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.details-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n\n\n.creating-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.creating-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title[_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.creating-progress[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.progress-container[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track[_ngcontent-%COMP%] {\n width: 100%;\n height: 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.progress-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.done-step[_ngcontent-%COMP%] {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title[_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.done-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.error-text[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.label-card.clickable[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n\n\n.labels-table[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.list-header-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.list-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n transition: all 0.15s ease;\n}\n\n.list-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.list-row[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.list-scope-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.list-col-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n.list-label-name[_ngcontent-%COMP%] {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-group-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.list-col-entity[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 13px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-col-items[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-arrow[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.list-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.list-row[_ngcontent-%COMP%]:hover .list-arrow[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n transform: translateX(2px);\n}\n\n.label-status.small[_ngcontent-%COMP%] {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n\n\n.sortable-header[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: color 0.15s ease;\n}\n\n.sortable-header[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n}\n\n.sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity 0.15s ease;\n}\n\n.sortable-header[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n opacity: 0.8;\n}\n\n\n\n@media (max-width: 768px) {\n .kpi-row[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .list-header-row[_ngcontent-%COMP%], \n .list-row[_ngcontent-%COMP%] {\n grid-template-columns: 36px 1fr 80px 60px 32px;\n }\n\n .list-col-entity[_ngcontent-%COMP%], \n .list-col-date[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n\n\n\n\n\n\n\n.create-wizard-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 10000;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease;\n}\n\n.create-wizard-container[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-lg);\n width: 90%;\n max-width: 600px;\n max-height: 85vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.create-wizard-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.create-wizard-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.create-wizard-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.create-wizard-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.create-wizard-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.create-wizard-body[_ngcontent-%COMP%] {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}"], changeDetection: 0 });
|
|
957
953
|
};
|
|
958
954
|
VersionHistoryLabelsResourceComponent = VersionHistoryLabelsResourceComponent_1 = __decorate([
|
|
959
955
|
RegisterClass(BaseResourceComponent, 'VersionHistoryLabelsResource')
|
|
@@ -961,7 +957,7 @@ VersionHistoryLabelsResourceComponent = VersionHistoryLabelsResourceComponent_1
|
|
|
961
957
|
export { VersionHistoryLabelsResourceComponent };
|
|
962
958
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VersionHistoryLabelsResourceComponent, [{
|
|
963
959
|
type: Component,
|
|
964
|
-
args: [{ standalone: false, selector: 'mj-version-history-labels-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"labels-container\">\n @if (IsLoading) {\n <mj-loading text=\"Loading version labels...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- Header -->\n <div class=\"page-header\">\n <div class=\"header-left\">\n <h2 class=\"page-title\">Version Labels</h2>\n <p class=\"page-subtitle\">Manage versioning snapshots across your system</p>\n </div>\n <div class=\"header-actions\">\n <div class=\"view-toggle\">\n <button class=\"toggle-btn\" [class.active]=\"ViewMode === 'card'\" (click)=\"SetViewMode('card')\" title=\"Card view\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n <button class=\"toggle-btn\" [class.active]=\"ViewMode === 'list'\" (click)=\"SetViewMode('list')\" title=\"List view\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n </div>\n <button class=\"btn-primary\" (click)=\"OpenCreateDialog()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Create Label</span>\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 <!-- KPI Cards -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-tags\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(TotalLabels)}}</div>\n <div class=\"kpi-label\">Total Labels</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success);\">\n <i class=\"fa-solid fa-circle-check\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(ActiveLabels)}}</div>\n <div class=\"kpi-label\">Active</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent); color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-box-archive\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(ArchivedLabels)}}</div>\n <div class=\"kpi-label\">Archived</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning);\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(RestoredLabels)}}</div>\n <div class=\"kpi-label\">Restored</div>\n </div>\n </div>\n </div>\n <!-- Scope breakdown -->\n <div class=\"scope-chips\">\n @for (stat of ScopeStats; track stat) {\n <button class=\"scope-chip\"\n [class.active]=\"ScopeFilter === stat.Scope\"\n (click)=\"OnScopeFilterChange(stat.Scope)\">\n <i [class]=\"stat.Icon\"></i>\n <span>{{stat.Scope}}</span>\n <span class=\"chip-count\">{{stat.Count}}</span>\n </button>\n }\n @for (stat of StatusStats; track stat) {\n <button class=\"scope-chip\"\n [class.active]=\"StatusFilter === stat.Status\"\n [ngClass]=\"GetStatusClass(stat.Status)\"\n (click)=\"OnStatusFilterChange(stat.Status)\">\n <span>{{stat.Status}}</span>\n <span class=\"chip-count\">{{stat.Count}}</span>\n </button>\n }\n </div>\n <!-- Search -->\n <div class=\"search-bar\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search labels by name, description, or entity...\"\n [ngModel]=\"SearchText\"\n (ngModelChange)=\"OnSearchChange($event)\" />\n @if (SearchText) {\n <button class=\"btn-clear\" (click)=\"OnSearchChange('')\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n <!-- Labels Card View -->\n @if (FilteredLabels.length > 0 && ViewMode === 'card') {\n <div class=\"labels-list\">\n @for (label of FilteredLabels; track label) {\n <div class=\"label-card clickable\"\n [class.group-parent]=\"IsGroupParent(label)\"\n (click)=\"OnLabelClick(label)\">\n <div class=\"label-header\">\n <div class=\"label-title-row\">\n <i [class]=\"GetScopeIcon(label.Scope)\" class=\"label-scope-icon\"></i>\n <h3 class=\"label-name\">{{label.Name}}</h3>\n @if (IsGroupParent(label)) {\n <span class=\"group-badge\">\n <i class=\"fa-solid fa-layer-group\"></i>\n {{GetChildLabels(label.ID).length}} records\n </span>\n }\n <span class=\"label-status\" [ngClass]=\"GetStatusClass(label.Status)\">\n {{label.Status}}\n </span>\n </div>\n <div class=\"label-meta\">\n <span class=\"meta-item\" title=\"Scope\">\n <i class=\"fa-solid fa-layer-group\"></i> {{label.Scope}}\n </span>\n @if (label.Entity || label.EntityID) {\n <span class=\"meta-item\" title=\"Entity\">\n <i class=\"fa-solid fa-table\"></i> {{label.Entity ?? ResolveEntityName(label.EntityID)}}\n </span>\n }\n @if (label.RecordID) {\n <span class=\"meta-item\" title=\"Record ID\">\n <i class=\"fa-solid fa-fingerprint\"></i> {{label.RecordID | slice:0:12}}...\n </span>\n }\n @if (label.ItemCount) {\n <span class=\"meta-item\" title=\"Items captured\">\n <i class=\"fa-solid fa-camera\"></i> {{label.ItemCount}} items\n </span>\n }\n @if (!label.ItemCount) {\n <span class=\"meta-item\" title=\"Items captured\">\n <i class=\"fa-solid fa-camera\"></i> {{GetItemCount(label.ID)}} items\n </span>\n }\n @if (label.CreationDurationMS) {\n <span class=\"meta-item\" title=\"Creation time\">\n <i class=\"fa-solid fa-stopwatch\"></i> {{FormatDuration(label.CreationDurationMS)}}\n </span>\n }\n @if (label.CreatedByUser) {\n <span class=\"meta-item\" title=\"Created by\">\n <i class=\"fa-solid fa-user\"></i> {{label.CreatedByUser}}\n </span>\n }\n <span class=\"meta-item\" title=\"Created\">\n <i class=\"fa-regular fa-clock\"></i> {{FormatDate(label.__mj_CreatedAt)}}\n </span>\n </div>\n </div>\n @if (label.Description) {\n <p class=\"label-description\">{{label.Description}}</p>\n }\n <!-- Child labels for group parents -->\n @if (IsGroupParent(label) && GetChildLabels(label.ID).length > 0) {\n <div class=\"child-labels\">\n @for (child of GetChildLabels(label.ID); track child) {\n <div class=\"child-label\">\n <i class=\"fa-solid fa-tag child-icon\"></i>\n <span class=\"child-name\">{{child.Name}}</span>\n @if (child.RecordID) {\n <span class=\"child-record\">{{child.RecordID | slice:0:12}}...</span>\n }\n @if (child.ItemCount) {\n <span class=\"child-items\">{{child.ItemCount}} items</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Labels List View -->\n @if (FilteredLabels.length > 0 && ViewMode === 'list') {\n <div class=\"labels-table\">\n <div class=\"list-header-row\">\n <span class=\"list-col-icon\"></span>\n <span class=\"list-col-name sortable-header\" (click)=\"OnSortChange('Name')\">\n Name <i [class]=\"GetSortIcon('Name')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-entity\">Entity</span>\n <span class=\"list-col-status sortable-header\" (click)=\"OnSortChange('Status')\">\n Status <i [class]=\"GetSortIcon('Status')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-items sortable-header\" (click)=\"OnSortChange('Items')\">\n Items <i [class]=\"GetSortIcon('Items')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-date sortable-header\" (click)=\"OnSortChange('Date')\">\n Created <i [class]=\"GetSortIcon('Date')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-arrow\"></span>\n </div>\n @for (label of FilteredLabels; track label) {\n <div class=\"list-row clickable\"\n (click)=\"OnLabelClick(label)\">\n <span class=\"list-col-icon\">\n <i [class]=\"GetScopeIcon(label.Scope)\" class=\"list-scope-icon\"></i>\n </span>\n <span class=\"list-col-name\">\n <span class=\"list-label-name\">{{label.Name}}</span>\n @if (IsGroupParent(label)) {\n <span class=\"list-group-badge\">\n <i class=\"fa-solid fa-layer-group\"></i> {{GetChildLabels(label.ID).length}}\n </span>\n }\n </span>\n <span class=\"list-col-entity\">{{label.Entity ?? ResolveEntityName(label.EntityID)}}</span>\n <span class=\"list-col-status\">\n <span class=\"label-status small\" [ngClass]=\"GetStatusClass(label.Status)\">{{label.Status}}</span>\n </span>\n <span class=\"list-col-items\">{{label.ItemCount || GetItemCount(label.ID)}}</span>\n <span class=\"list-col-date\">{{FormatDate(label.__mj_CreatedAt)}}</span>\n <span class=\"list-col-arrow\">\n <i class=\"fa-solid fa-chevron-right list-arrow\"></i>\n </span>\n </div>\n }\n </div>\n }\n <!-- Empty state -->\n @if (FilteredLabels.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-tags empty-icon\"></i>\n <h3>No labels found</h3>\n @if (SearchText || ScopeFilter || StatusFilter) {\n <p>\n Try adjusting your filters or search criteria.\n </p>\n }\n @if (!SearchText && !ScopeFilter && !StatusFilter) {\n <p>\n No version labels have been created yet.\n </p>\n }\n @if (!SearchText && !ScopeFilter && !StatusFilter) {\n <button class=\"btn-primary empty-cta\"\n (click)=\"OpenCreateDialog()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Create Your First Label</span>\n </button>\n }\n </div>\n }\n }\n\n <!-- Create Label Wizard -->\n @if (ShowCreateWizard) {\n <div class=\"create-wizard-overlay\" (click)=\"OnCreateWizardCancel()\">\n <div class=\"create-wizard-container\" (click)=\"$event.stopPropagation()\">\n <div class=\"create-wizard-header\">\n <h3 class=\"create-wizard-title\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Version Label\n </h3>\n <button class=\"create-wizard-close\" (click)=\"OnCreateWizardCancel()\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"create-wizard-body\">\n <mj-label-create\n (Created)=\"OnLabelCreated($event)\"\n (Cancel)=\"OnCreateWizardCancel()\">\n </mj-label-create>\n </div>\n </div>\n </div>\n }\n\n <!-- Detail panel -->\n @if (ShowDetailPanel && SelectedLabel) {\n <mj-label-detail-panel\n [Label]=\"SelectedLabel\"\n [AllLabels]=\"Labels\"\n [ItemCountMap]=\"ItemCountMap\"\n (Close)=\"OnDetailPanelClose()\"\n (LabelUpdated)=\"OnLabelUpdated()\"\n (EntityLinkClick)=\"OnEntityLinkClick($event)\">\n </mj-label-detail-panel>\n }\n</div>\n", styles: [".labels-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n}\n\n/* Header */\n.page-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 24px;\n}\n\n.header-left { flex: 1; }\n\n.page-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 4px 0;\n}\n\n.page-subtitle {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.header-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n.btn-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-secondary);\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* KPI Row */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Scope Chips */\n.scope-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.scope-chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 20px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.scope-chip:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.scope-chip.active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.scope-chip.active .chip-count {\n background: color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n color: var(--mj-text-inverse);\n}\n\n.chip-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* Search Bar */\n.search-bar {\n position: relative;\n margin-bottom: 20px;\n}\n\n.search-icon {\n position: absolute;\n left: 14px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.search-input {\n width: 100%;\n padding: 10px 40px 10px 40px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 10px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n transition: border-color 0.2s ease;\n box-sizing: border-box;\n}\n\n.search-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.search-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.btn-clear {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n color: var(--mj-text-secondary);\n cursor: pointer;\n border-radius: 4px;\n}\n\n.btn-clear:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Labels List */\n.labels-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.label-card {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n transition: all 0.2s ease;\n}\n\n.label-card:hover {\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.label-card.group-parent {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.label-header {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.label-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.label-scope-icon {\n color: var(--mj-brand-primary);\n font-size: 16px;\n}\n\n.label-name {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n flex: 1;\n}\n\n.group-badge {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 3px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.label-status {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-archived {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-restored {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n}\n\n.label-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 4px;\n}\n\n.meta-item {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.meta-item i {\n font-size: 12px;\n opacity: 0.7;\n}\n\n.label-description {\n margin: 10px 0 0 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n/* Child labels */\n.child-labels {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.child-label {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.child-label:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.child-icon {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.child-name {\n flex: 1;\n color: var(--mj-text-primary);\n}\n\n.child-record {\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.child-items {\n color: var(--mj-text-secondary);\n font-size: 12px;\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: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\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;\n max-width: 400px;\n}\n\n.empty-cta {\n margin-top: 20px;\n}\n\n/* ==================================================================== */\n/* Create Label Dialog */\n/* ==================================================================== */\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.step.active .step-label {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: var(--mj-status-success);\n}\n\n/* Dialog Step Content */\n.dialog-step {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.step-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Dialog Search */\n.dialog-search {\n position: relative;\n}\n\n.dialog-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.dialog-search-input {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n/* Entity List */\n.entity-list {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option:last-child {\n border-bottom: none;\n}\n\n.entity-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow {\n color: var(--mj-text-muted);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n/* Records */\n.records-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option:last-child {\n border-bottom: none;\n}\n\n.record-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n}\n\n.record-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected .record-checkbox {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n/* Details step */\n.details-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.summary-item i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.form-textarea {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea::placeholder {\n color: var(--mj-text-muted);\n}\n\n.details-footer {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* Creating state */\n.creating-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation {\n margin-bottom: 16px;\n}\n\n.creating-icon {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Progress bar */\n.progress-container {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track {\n width: 100%;\n height: 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.progress-stat i {\n font-size: 11px;\n}\n\n/* Done state */\n.done-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.error-text {\n color: var(--mj-status-error);\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.toggle-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n font-size: 14px;\n}\n\n.toggle-btn:hover {\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.toggle-btn.active {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n\n.toggle-btn + .toggle-btn {\n border-left: 1px solid var(--mj-border-default);\n}\n\n/* Clickable cards/rows */\n.clickable {\n cursor: pointer;\n}\n\n.label-card.clickable:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n/* Labels Table (List View) */\n.labels-table {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.list-header-row {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.list-row {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n transition: all 0.15s ease;\n}\n\n.list-row:last-child {\n border-bottom: none;\n}\n\n.list-row:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.list-scope-icon {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.list-col-name {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n.list-label-name {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-group-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.list-col-entity {\n color: var(--mj-text-secondary);\n font-size: 13px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-col-items {\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-date {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.list-arrow {\n color: var(--mj-text-muted);\n font-size: 12px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.list-row:hover .list-arrow {\n color: var(--mj-brand-primary);\n transform: translateX(2px);\n}\n\n.label-status.small {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n/* Sortable headers */\n.sortable-header {\n cursor: pointer;\n user-select: none;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: color 0.15s ease;\n}\n\n.sortable-header:hover {\n color: var(--mj-brand-primary);\n}\n\n.sort-icon {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity 0.15s ease;\n}\n\n.sortable-header:hover .sort-icon {\n opacity: 0.8;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .list-header-row,\n .list-row {\n grid-template-columns: 36px 1fr 80px 60px 32px;\n }\n\n .list-col-entity,\n .list-col-date {\n display: none;\n }\n}\n\n/* ================================================================= */\n/* CREATE WIZARD OVERLAY */\n/* ================================================================= */\n\n.create-wizard-overlay {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 10000;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: fadeIn 0.15s ease;\n}\n\n.create-wizard-container {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-lg);\n width: 90%;\n max-width: 600px;\n max-height: 85vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.create-wizard-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.create-wizard-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.create-wizard-title i {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.create-wizard-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.create-wizard-close:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.create-wizard-body {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n"] }]
|
|
960
|
+
args: [{ standalone: false, selector: 'mj-version-history-labels-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Version Labels\"\n Icon=\"fa-solid fa-tags\"\n Subtitle=\"Manage versioning snapshots across your system\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredLabels.length\"\n [Total]=\"Labels.length\"\n Label=\"labels\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"viewOptions\"\n [ActiveKey]=\"ViewMode\"\n (KeyChange)=\"SetViewMode($any($event))\">\n </mj-view-toggle>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"OpenCreateDialog()\">\n <i class=\"fa-solid fa-plus\"></i> Create Label\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search labels by name, description, or entity...\"\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 version labels...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- KPI Cards -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-tags\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(TotalLabels)}}</div>\n <div class=\"kpi-label\">Total Labels</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success);\">\n <i class=\"fa-solid fa-circle-check\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(ActiveLabels)}}</div>\n <div class=\"kpi-label\">Active</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent); color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-box-archive\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(ArchivedLabels)}}</div>\n <div class=\"kpi-label\">Archived</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning);\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FormatNumber(RestoredLabels)}}</div>\n <div class=\"kpi-label\">Restored</div>\n </div>\n </div>\n </div>\n <!-- Labels Card View -->\n @if (FilteredLabels.length > 0 && ViewMode === 'card') {\n <div class=\"labels-list\">\n @for (label of FilteredLabels; track label) {\n <div class=\"label-card clickable\"\n [class.group-parent]=\"IsGroupParent(label)\"\n (click)=\"OnLabelClick(label)\">\n <div class=\"label-header\">\n <div class=\"label-title-row\">\n <i [class]=\"GetScopeIcon(label.Scope)\" class=\"label-scope-icon\"></i>\n <h3 class=\"label-name\">{{label.Name}}</h3>\n @if (IsGroupParent(label)) {\n <span class=\"group-badge\">\n <i class=\"fa-solid fa-layer-group\"></i>\n {{GetChildLabels(label.ID).length}} records\n </span>\n }\n <span class=\"label-status\" [ngClass]=\"GetStatusClass(label.Status)\">\n {{label.Status}}\n </span>\n </div>\n <div class=\"label-meta\">\n <span class=\"meta-item\" title=\"Scope\">\n <i class=\"fa-solid fa-layer-group\"></i> {{label.Scope}}\n </span>\n @if (label.Entity || label.EntityID) {\n <span class=\"meta-item\" title=\"Entity\">\n <i class=\"fa-solid fa-table\"></i> {{label.Entity ?? ResolveEntityName(label.EntityID)}}\n </span>\n }\n @if (label.RecordID) {\n <span class=\"meta-item\" title=\"Record ID\">\n <i class=\"fa-solid fa-fingerprint\"></i> {{label.RecordID | slice:0:12}}...\n </span>\n }\n @if (label.ItemCount) {\n <span class=\"meta-item\" title=\"Items captured\">\n <i class=\"fa-solid fa-camera\"></i> {{label.ItemCount}} items\n </span>\n }\n @if (!label.ItemCount) {\n <span class=\"meta-item\" title=\"Items captured\">\n <i class=\"fa-solid fa-camera\"></i> {{GetItemCount(label.ID)}} items\n </span>\n }\n @if (label.CreationDurationMS) {\n <span class=\"meta-item\" title=\"Creation time\">\n <i class=\"fa-solid fa-stopwatch\"></i> {{FormatDuration(label.CreationDurationMS)}}\n </span>\n }\n @if (label.CreatedByUser) {\n <span class=\"meta-item\" title=\"Created by\">\n <i class=\"fa-solid fa-user\"></i> {{label.CreatedByUser}}\n </span>\n }\n <span class=\"meta-item\" title=\"Created\">\n <i class=\"fa-regular fa-clock\"></i> {{FormatDate(label.__mj_CreatedAt)}}\n </span>\n </div>\n </div>\n @if (label.Description) {\n <p class=\"label-description\">{{label.Description}}</p>\n }\n <!-- Child labels for group parents -->\n @if (IsGroupParent(label) && GetChildLabels(label.ID).length > 0) {\n <div class=\"child-labels\">\n @for (child of GetChildLabels(label.ID); track child) {\n <div class=\"child-label\">\n <i class=\"fa-solid fa-tag child-icon\"></i>\n <span class=\"child-name\">{{child.Name}}</span>\n @if (child.RecordID) {\n <span class=\"child-record\">{{child.RecordID | slice:0:12}}...</span>\n }\n @if (child.ItemCount) {\n <span class=\"child-items\">{{child.ItemCount}} items</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Labels List View -->\n @if (FilteredLabels.length > 0 && ViewMode === 'list') {\n <div class=\"labels-table\">\n <div class=\"list-header-row\">\n <span class=\"list-col-icon\"></span>\n <span class=\"list-col-name sortable-header\" (click)=\"OnSortChange('Name')\">\n Name <i [class]=\"GetSortIcon('Name')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-entity\">Entity</span>\n <span class=\"list-col-status sortable-header\" (click)=\"OnSortChange('Status')\">\n Status <i [class]=\"GetSortIcon('Status')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-items sortable-header\" (click)=\"OnSortChange('Items')\">\n Items <i [class]=\"GetSortIcon('Items')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-date sortable-header\" (click)=\"OnSortChange('Date')\">\n Created <i [class]=\"GetSortIcon('Date')\" class=\"sort-icon\"></i>\n </span>\n <span class=\"list-col-arrow\"></span>\n </div>\n @for (label of FilteredLabels; track label) {\n <div class=\"list-row clickable\"\n (click)=\"OnLabelClick(label)\">\n <span class=\"list-col-icon\">\n <i [class]=\"GetScopeIcon(label.Scope)\" class=\"list-scope-icon\"></i>\n </span>\n <span class=\"list-col-name\">\n <span class=\"list-label-name\">{{label.Name}}</span>\n @if (IsGroupParent(label)) {\n <span class=\"list-group-badge\">\n <i class=\"fa-solid fa-layer-group\"></i> {{GetChildLabels(label.ID).length}}\n </span>\n }\n </span>\n <span class=\"list-col-entity\">{{label.Entity ?? ResolveEntityName(label.EntityID)}}</span>\n <span class=\"list-col-status\">\n <span class=\"label-status small\" [ngClass]=\"GetStatusClass(label.Status)\">{{label.Status}}</span>\n </span>\n <span class=\"list-col-items\">{{label.ItemCount || GetItemCount(label.ID)}}</span>\n <span class=\"list-col-date\">{{FormatDate(label.__mj_CreatedAt)}}</span>\n <span class=\"list-col-arrow\">\n <i class=\"fa-solid fa-chevron-right list-arrow\"></i>\n </span>\n </div>\n }\n </div>\n }\n <!-- Empty state -->\n @if (FilteredLabels.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-tags empty-icon\"></i>\n <h3>No labels found</h3>\n @if (SearchText || ScopeFilter || StatusFilter) {\n <p>\n Try adjusting your filters or search criteria.\n </p>\n }\n @if (!SearchText && !ScopeFilter && !StatusFilter) {\n <p>\n No version labels have been created yet.\n </p>\n }\n @if (!SearchText && !ScopeFilter && !StatusFilter) {\n <button class=\"btn-primary empty-cta\"\n (click)=\"OpenCreateDialog()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Create Your First Label</span>\n </button>\n }\n </div>\n }\n }\n\n <!-- Create Label Wizard -->\n @if (ShowCreateWizard) {\n <div class=\"create-wizard-overlay\" (click)=\"OnCreateWizardCancel()\">\n <div class=\"create-wizard-container\" (click)=\"$event.stopPropagation()\">\n <div class=\"create-wizard-header\">\n <h3 class=\"create-wizard-title\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Version Label\n </h3>\n <button class=\"create-wizard-close\" (click)=\"OnCreateWizardCancel()\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n <div class=\"create-wizard-body\">\n <mj-label-create\n (Created)=\"OnLabelCreated($event)\"\n (Cancel)=\"OnCreateWizardCancel()\">\n </mj-label-create>\n </div>\n </div>\n </div>\n }\n\n </mj-page-body>\n\n <!-- Detail panel -->\n @if (ShowDetailPanel && SelectedLabel) {\n <mj-label-detail-panel\n [Label]=\"SelectedLabel\"\n [AllLabels]=\"Labels\"\n [ItemCountMap]=\"ItemCountMap\"\n (Close)=\"OnDetailPanelClose()\"\n (LabelUpdated)=\"OnLabelUpdated()\"\n (EntityLinkClick)=\"OnEntityLinkClick($event)\">\n </mj-label-detail-panel>\n }\n</mj-page-layout>\n", styles: ["/* KPI Row */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Labels List */\n.labels-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.label-card {\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n transition: all 0.2s ease;\n}\n\n.label-card:hover {\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.label-card.group-parent {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.label-header {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.label-title-row {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.label-scope-icon {\n color: var(--mj-brand-primary);\n font-size: 16px;\n}\n\n.label-name {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n flex: 1;\n}\n\n.group-badge {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 3px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.label-status {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.status-archived {\n background: color-mix(in srgb, var(--mj-text-muted) 10%, transparent);\n color: var(--mj-text-muted);\n}\n\n.status-restored {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n}\n\n.label-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n margin-top: 4px;\n}\n\n.meta-item {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.meta-item i {\n font-size: 12px;\n opacity: 0.7;\n}\n\n.label-description {\n margin: 10px 0 0 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n/* Child labels */\n.child-labels {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.child-label {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.child-label:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.child-icon {\n color: var(--mj-text-muted);\n font-size: 11px;\n}\n\n.child-name {\n flex: 1;\n color: var(--mj-text-primary);\n}\n\n.child-record {\n color: var(--mj-text-muted);\n font-size: 12px;\n font-family: monospace;\n}\n\n.child-items {\n color: var(--mj-text-secondary);\n font-size: 12px;\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: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\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;\n max-width: 400px;\n}\n\n.empty-cta {\n margin-top: 20px;\n}\n\n/* ==================================================================== */\n/* Create Label Dialog */\n/* ==================================================================== */\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n margin-bottom: 24px;\n padding: 0 20px;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n font-size: 13px;\n font-weight: 700;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n\n.step.active .step-label {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step.completed .step-label {\n color: var(--mj-status-success);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 8px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: var(--mj-status-success);\n}\n\n/* Dialog Step Content */\n.dialog-step {\n display: flex;\n flex-direction: column;\n gap: 16px;\n min-height: 300px;\n}\n\n.step-description {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.step-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.btn-back {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.btn-back:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n/* Dialog Search */\n.dialog-search {\n position: relative;\n}\n\n.dialog-search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.dialog-search-input {\n width: 100%;\n padding: 9px 12px 9px 36px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.15s ease;\n}\n\n.dialog-search-input:focus {\n border-color: var(--mj-brand-primary);\n}\n\n.dialog-search-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n/* Entity List */\n.entity-list {\n flex: 1;\n overflow-y: auto;\n max-height: 320px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.entity-option {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.entity-option:last-child {\n border-bottom: none;\n}\n\n.entity-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.entity-option-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.entity-option-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.entity-option-desc {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.entity-option-arrow {\n color: var(--mj-text-muted);\n font-size: 12px;\n flex-shrink: 0;\n}\n\n.entity-list-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 14px;\n}\n\n/* Records */\n.records-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.selection-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.btn-text {\n padding: 6px 12px;\n background: none;\n border: none;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-brand-primary);\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.15s ease;\n}\n\n.btn-text:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.record-list {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n}\n\n.record-option {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.record-option:last-child {\n border-bottom: none;\n}\n\n.record-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.record-option.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n}\n\n.record-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: transparent;\n transition: all 0.15s ease;\n flex-shrink: 0;\n}\n\n.record-option.selected .record-checkbox {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.record-name {\n font-size: 14px;\n color: var(--mj-text-primary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.records-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-top: 8px;\n}\n\n.selection-count {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n\n/* Details step */\n.details-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n padding: 14px 16px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n}\n\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.summary-item i {\n color: var(--mj-brand-primary);\n font-size: 13px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.form-input {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n transition: border-color 0.15s ease;\n}\n\n.form-input:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.form-textarea {\n padding: 10px 14px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 8px;\n font-size: 14px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n outline: none;\n resize: vertical;\n font-family: inherit;\n transition: border-color 0.15s ease;\n}\n\n.form-textarea:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-textarea::placeholder {\n color: var(--mj-text-muted);\n}\n\n.details-footer {\n display: flex;\n gap: 12px;\n padding-top: 8px;\n}\n\n/* Creating state */\n.creating-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.creating-animation {\n margin-bottom: 16px;\n}\n\n.creating-icon {\n font-size: 40px;\n color: var(--mj-brand-primary);\n}\n\n.creating-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.creating-progress {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Progress bar */\n.progress-container {\n width: 100%;\n max-width: 420px;\n margin: 16px auto 0;\n text-align: left;\n}\n\n.progress-bar-track {\n width: 100%;\n height: 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n overflow: hidden;\n}\n\n.progress-bar-fill {\n height: 100%;\n background: var(--mj-brand-primary);\n border-radius: 4px;\n transition: width 0.3s ease;\n}\n\n.progress-details {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n}\n\n.progress-message {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n margin-right: 12px;\n}\n\n.progress-pct {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.progress-stats {\n display: flex;\n gap: 16px;\n margin-top: 6px;\n}\n\n.progress-stat {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.progress-stat i {\n font-size: 11px;\n}\n\n/* Done state */\n.done-step {\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 20px;\n}\n\n.done-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n margin-bottom: 16px;\n}\n\n.done-icon-wrap.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, transparent);\n color: var(--mj-status-success);\n}\n\n.done-icon-wrap.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, transparent);\n color: var(--mj-status-error);\n}\n\n.done-title {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.done-message {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.error-text {\n color: var(--mj-status-error);\n}\n\n/* Clickable cards/rows */\n.clickable {\n cursor: pointer;\n}\n\n.label-card.clickable:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 12px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n transform: translateY(-1px);\n}\n\n/* Labels Table (List View) */\n.labels-table {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n}\n\n.list-header-row {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 10px 16px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.list-row {\n display: grid;\n grid-template-columns: 40px 1fr 160px 90px 60px 100px 32px;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n transition: all 0.15s ease;\n}\n\n.list-row:last-child {\n border-bottom: none;\n}\n\n.list-row:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.list-scope-icon {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.list-col-name {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n.list-label-name {\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-group-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.list-col-entity {\n color: var(--mj-text-secondary);\n font-size: 13px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.list-col-items {\n text-align: center;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-date {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.list-col-arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.list-arrow {\n color: var(--mj-text-muted);\n font-size: 12px;\n transition: transform 0.15s ease, color 0.15s ease;\n}\n\n.list-row:hover .list-arrow {\n color: var(--mj-brand-primary);\n transform: translateX(2px);\n}\n\n.label-status.small {\n padding: 2px 8px;\n font-size: 11px;\n}\n\n/* Sortable headers */\n.sortable-header {\n cursor: pointer;\n user-select: none;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: color 0.15s ease;\n}\n\n.sortable-header:hover {\n color: var(--mj-brand-primary);\n}\n\n.sort-icon {\n font-size: 10px;\n opacity: 0.4;\n transition: opacity 0.15s ease;\n}\n\n.sortable-header:hover .sort-icon {\n opacity: 0.8;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .kpi-row {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .list-header-row,\n .list-row {\n grid-template-columns: 36px 1fr 80px 60px 32px;\n }\n\n .list-col-entity,\n .list-col-date {\n display: none;\n }\n}\n\n/* ================================================================= */\n/* CREATE WIZARD OVERLAY */\n/* ================================================================= */\n\n.create-wizard-overlay {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 10000;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: fadeIn 0.15s ease;\n}\n\n.create-wizard-container {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-lg);\n width: 90%;\n max-width: 600px;\n max-height: 85vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.create-wizard-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.create-wizard-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.create-wizard-title i {\n color: var(--mj-brand-primary);\n font-size: 15px;\n}\n\n.create-wizard-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: none;\n border-radius: 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.create-wizard-close:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n}\n\n.create-wizard-body {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n"] }]
|
|
965
961
|
}], () => [{ type: i0.ChangeDetectorRef }], null); })();
|
|
966
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryLabelsResourceComponent, { className: "VersionHistoryLabelsResourceComponent", filePath: "src/VersionHistory/components/labels-resource.component.ts", lineNumber:
|
|
962
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryLabelsResourceComponent, { className: "VersionHistoryLabelsResourceComponent", filePath: "src/VersionHistory/components/labels-resource.component.ts", lineNumber: 41 }); })();
|
|
967
963
|
//# sourceMappingURL=labels-resource.component.js.map
|