@memberjunction/ng-dashboards 5.38.0 → 5.40.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/README.md +14 -7
- package/dist/AI/components/agents/agent-configuration.component.js +199 -198
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
- 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 +166 -58
- package/dist/AI/components/analytics/cost-budget/cost-budget.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 +2 -1
- 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 +1 -0
- 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 +55 -36
- 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 +9 -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 +158 -117
- 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 +1 -0
- 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 +22 -8
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
- package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
- package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +1 -1
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +209 -208
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +130 -128
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +17 -17
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +578 -538
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
- package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js +14 -2
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/AI/services/cache-metrics.d.ts +50 -0
- package/dist/AI/services/cache-metrics.d.ts.map +1 -0
- package/dist/AI/services/cache-metrics.js +43 -0
- package/dist/AI/services/cache-metrics.js.map +1 -0
- package/dist/APIKeys/api-applications-panel.component.js +2 -2
- package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
- package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
- package/dist/APIKeys/api-keys-resource.component.js +132 -131
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +141 -141
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +15 -15
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +2 -2
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +2 -2
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +2 -2
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +72 -50
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +103 -102
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +52 -51
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +39 -38
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +92 -89
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +18 -17
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -85
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +155 -150
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +245 -243
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +18 -17
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +2 -2
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +236 -229
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +390 -389
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +2 -2
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +525 -566
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +135 -134
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js +443 -438
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +436 -427
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +1 -1
- package/dist/Testing/components/testing-runs.component.js +116 -115
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +6 -7
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +173 -172
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +116 -92
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +57 -35
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +80 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +1 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +7 -1
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +12 -14
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +5 -14
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +4 -5
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +7 -5
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +57 -54
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
|
@@ -16,12 +16,12 @@ import * as i1 from "@angular/common";
|
|
|
16
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_16_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelement(0, "mj-loading", 13);
|
|
21
21
|
} }
|
|
22
|
-
function
|
|
23
|
-
i0.ɵɵelementStart(0, "span",
|
|
24
|
-
i0.ɵɵelement(1, "i",
|
|
22
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
24
|
+
i0.ɵɵelement(1, "i", 42);
|
|
25
25
|
i0.ɵɵtext(2);
|
|
26
26
|
i0.ɵɵelementEnd();
|
|
27
27
|
} if (rf & 2) {
|
|
@@ -30,9 +30,9 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
30
30
|
i0.ɵɵadvance(2);
|
|
31
31
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.GetChildLabels(label_r2.ID).length, " records ");
|
|
32
32
|
} }
|
|
33
|
-
function
|
|
34
|
-
i0.ɵɵelementStart(0, "span",
|
|
35
|
-
i0.ɵɵelement(1, "i",
|
|
33
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵelementStart(0, "span", 43);
|
|
35
|
+
i0.ɵɵelement(1, "i", 52);
|
|
36
36
|
i0.ɵɵtext(2);
|
|
37
37
|
i0.ɵɵelementEnd();
|
|
38
38
|
} if (rf & 2) {
|
|
@@ -41,9 +41,9 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
41
41
|
i0.ɵɵadvance(2);
|
|
42
42
|
i0.ɵɵtextInterpolate1(" ", label_r2.Entity ?? ctx_r2.ResolveEntityName(label_r2.EntityID), " ");
|
|
43
43
|
} }
|
|
44
|
-
function
|
|
45
|
-
i0.ɵɵelementStart(0, "span",
|
|
46
|
-
i0.ɵɵelement(1, "i",
|
|
44
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
45
|
+
i0.ɵɵelementStart(0, "span", 44);
|
|
46
|
+
i0.ɵɵelement(1, "i", 53);
|
|
47
47
|
i0.ɵɵtext(2);
|
|
48
48
|
i0.ɵɵpipe(3, "slice");
|
|
49
49
|
i0.ɵɵelementEnd();
|
|
@@ -52,9 +52,9 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
52
52
|
i0.ɵɵadvance(2);
|
|
53
53
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(3, 1, label_r2.RecordID, 0, 12), "... ");
|
|
54
54
|
} }
|
|
55
|
-
function
|
|
56
|
-
i0.ɵɵelementStart(0, "span",
|
|
57
|
-
i0.ɵɵelement(1, "i",
|
|
55
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
i0.ɵɵelementStart(0, "span", 45);
|
|
57
|
+
i0.ɵɵelement(1, "i", 54);
|
|
58
58
|
i0.ɵɵtext(2);
|
|
59
59
|
i0.ɵɵelementEnd();
|
|
60
60
|
} if (rf & 2) {
|
|
@@ -62,9 +62,9 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
62
62
|
i0.ɵɵadvance(2);
|
|
63
63
|
i0.ɵɵtextInterpolate1(" ", label_r2.ItemCount, " items ");
|
|
64
64
|
} }
|
|
65
|
-
function
|
|
66
|
-
i0.ɵɵelementStart(0, "span",
|
|
67
|
-
i0.ɵɵelement(1, "i",
|
|
65
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelementStart(0, "span", 45);
|
|
67
|
+
i0.ɵɵelement(1, "i", 54);
|
|
68
68
|
i0.ɵɵtext(2);
|
|
69
69
|
i0.ɵɵelementEnd();
|
|
70
70
|
} if (rf & 2) {
|
|
@@ -73,9 +73,9 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
73
73
|
i0.ɵɵadvance(2);
|
|
74
74
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.GetItemCount(label_r2.ID), " items ");
|
|
75
75
|
} }
|
|
76
|
-
function
|
|
77
|
-
i0.ɵɵelementStart(0, "span",
|
|
78
|
-
i0.ɵɵelement(1, "i",
|
|
76
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
i0.ɵɵelementStart(0, "span", 46);
|
|
78
|
+
i0.ɵɵelement(1, "i", 55);
|
|
79
79
|
i0.ɵɵtext(2);
|
|
80
80
|
i0.ɵɵelementEnd();
|
|
81
81
|
} if (rf & 2) {
|
|
@@ -84,9 +84,9 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
84
84
|
i0.ɵɵadvance(2);
|
|
85
85
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.FormatDuration(label_r2.CreationDurationMS), " ");
|
|
86
86
|
} }
|
|
87
|
-
function
|
|
88
|
-
i0.ɵɵelementStart(0, "span",
|
|
89
|
-
i0.ɵɵelement(1, "i",
|
|
87
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
+
i0.ɵɵelementStart(0, "span", 47);
|
|
89
|
+
i0.ɵɵelement(1, "i", 56);
|
|
90
90
|
i0.ɵɵtext(2);
|
|
91
91
|
i0.ɵɵelementEnd();
|
|
92
92
|
} if (rf & 2) {
|
|
@@ -94,8 +94,8 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
94
94
|
i0.ɵɵadvance(2);
|
|
95
95
|
i0.ɵɵtextInterpolate1(" ", label_r2.CreatedByUser, " ");
|
|
96
96
|
} }
|
|
97
|
-
function
|
|
98
|
-
i0.ɵɵelementStart(0, "p",
|
|
97
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
i0.ɵɵelementStart(0, "p", 50);
|
|
99
99
|
i0.ɵɵtext(1);
|
|
100
100
|
i0.ɵɵelementEnd();
|
|
101
101
|
} if (rf & 2) {
|
|
@@ -103,8 +103,8 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
103
103
|
i0.ɵɵadvance();
|
|
104
104
|
i0.ɵɵtextInterpolate(label_r2.Description);
|
|
105
105
|
} }
|
|
106
|
-
function
|
|
107
|
-
i0.ɵɵelementStart(0, "span",
|
|
106
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "span", 60);
|
|
108
108
|
i0.ɵɵtext(1);
|
|
109
109
|
i0.ɵɵpipe(2, "slice");
|
|
110
110
|
i0.ɵɵelementEnd();
|
|
@@ -113,8 +113,8 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
113
113
|
i0.ɵɵadvance();
|
|
114
114
|
i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind3(2, 1, child_r4.RecordID, 0, 12), "...");
|
|
115
115
|
} }
|
|
116
|
-
function
|
|
117
|
-
i0.ɵɵelementStart(0, "span",
|
|
116
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
117
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
118
118
|
i0.ɵɵtext(1);
|
|
119
119
|
i0.ɵɵelementEnd();
|
|
120
120
|
} if (rf & 2) {
|
|
@@ -122,14 +122,14 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
122
122
|
i0.ɵɵadvance();
|
|
123
123
|
i0.ɵɵtextInterpolate1("", child_r4.ItemCount, " items");
|
|
124
124
|
} }
|
|
125
|
-
function
|
|
126
|
-
i0.ɵɵelementStart(0, "div",
|
|
127
|
-
i0.ɵɵelement(1, "i",
|
|
128
|
-
i0.ɵɵelementStart(2, "span",
|
|
125
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
127
|
+
i0.ɵɵelement(1, "i", 58);
|
|
128
|
+
i0.ɵɵelementStart(2, "span", 59);
|
|
129
129
|
i0.ɵɵtext(3);
|
|
130
130
|
i0.ɵɵelementEnd();
|
|
131
|
-
i0.ɵɵconditionalCreate(4,
|
|
132
|
-
i0.ɵɵconditionalCreate(5,
|
|
131
|
+
i0.ɵɵconditionalCreate(4, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_For_2_Conditional_4_Template, 3, 5, "span", 60);
|
|
132
|
+
i0.ɵɵconditionalCreate(5, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_For_2_Conditional_5_Template, 2, 1, "span", 61);
|
|
133
133
|
i0.ɵɵelementEnd();
|
|
134
134
|
} if (rf & 2) {
|
|
135
135
|
const child_r4 = ctx.$implicit;
|
|
@@ -140,9 +140,9 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
140
140
|
i0.ɵɵadvance();
|
|
141
141
|
i0.ɵɵconditional(child_r4.ItemCount ? 5 : -1);
|
|
142
142
|
} }
|
|
143
|
-
function
|
|
144
|
-
i0.ɵɵelementStart(0, "div",
|
|
145
|
-
i0.ɵɵrepeaterCreate(1,
|
|
143
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
145
|
+
i0.ɵɵrepeaterCreate(1, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_For_2_Template, 6, 3, "div", 57, i0.ɵɵrepeaterTrackByIdentity);
|
|
146
146
|
i0.ɵɵelementEnd();
|
|
147
147
|
} if (rf & 2) {
|
|
148
148
|
const label_r2 = i0.ɵɵnextContext().$implicit;
|
|
@@ -150,35 +150,35 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
150
150
|
i0.ɵɵadvance();
|
|
151
151
|
i0.ɵɵrepeater(ctx_r2.GetChildLabels(label_r2.ID));
|
|
152
152
|
} }
|
|
153
|
-
function
|
|
153
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
154
154
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
155
|
-
i0.ɵɵelementStart(0, "div",
|
|
156
|
-
i0.ɵɵlistener("click", function
|
|
157
|
-
i0.ɵɵelementStart(1, "div",
|
|
158
|
-
i0.ɵɵelement(3, "i",
|
|
159
|
-
i0.ɵɵelementStart(4, "h3",
|
|
155
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
156
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_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", 34)(2, "div", 35);
|
|
158
|
+
i0.ɵɵelement(3, "i", 36);
|
|
159
|
+
i0.ɵɵelementStart(4, "h3", 37);
|
|
160
160
|
i0.ɵɵtext(5);
|
|
161
161
|
i0.ɵɵelementEnd();
|
|
162
|
-
i0.ɵɵconditionalCreate(6,
|
|
163
|
-
i0.ɵɵelementStart(7, "span",
|
|
162
|
+
i0.ɵɵconditionalCreate(6, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_6_Template, 3, 1, "span", 38);
|
|
163
|
+
i0.ɵɵelementStart(7, "span", 39);
|
|
164
164
|
i0.ɵɵtext(8);
|
|
165
165
|
i0.ɵɵelementEnd()();
|
|
166
|
-
i0.ɵɵelementStart(9, "div",
|
|
167
|
-
i0.ɵɵelement(11, "i",
|
|
166
|
+
i0.ɵɵelementStart(9, "div", 40)(10, "span", 41);
|
|
167
|
+
i0.ɵɵelement(11, "i", 42);
|
|
168
168
|
i0.ɵɵtext(12);
|
|
169
169
|
i0.ɵɵelementEnd();
|
|
170
|
-
i0.ɵɵconditionalCreate(13,
|
|
171
|
-
i0.ɵɵconditionalCreate(14,
|
|
172
|
-
i0.ɵɵconditionalCreate(15,
|
|
173
|
-
i0.ɵɵconditionalCreate(16,
|
|
174
|
-
i0.ɵɵconditionalCreate(17,
|
|
175
|
-
i0.ɵɵconditionalCreate(18,
|
|
176
|
-
i0.ɵɵelementStart(19, "span",
|
|
177
|
-
i0.ɵɵelement(20, "i",
|
|
170
|
+
i0.ɵɵconditionalCreate(13, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_13_Template, 3, 1, "span", 43);
|
|
171
|
+
i0.ɵɵconditionalCreate(14, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_14_Template, 4, 5, "span", 44);
|
|
172
|
+
i0.ɵɵconditionalCreate(15, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_15_Template, 3, 1, "span", 45);
|
|
173
|
+
i0.ɵɵconditionalCreate(16, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_16_Template, 3, 1, "span", 45);
|
|
174
|
+
i0.ɵɵconditionalCreate(17, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_17_Template, 3, 1, "span", 46);
|
|
175
|
+
i0.ɵɵconditionalCreate(18, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_18_Template, 3, 1, "span", 47);
|
|
176
|
+
i0.ɵɵelementStart(19, "span", 48);
|
|
177
|
+
i0.ɵɵelement(20, "i", 49);
|
|
178
178
|
i0.ɵɵtext(21);
|
|
179
179
|
i0.ɵɵelementEnd()()();
|
|
180
|
-
i0.ɵɵconditionalCreate(22,
|
|
181
|
-
i0.ɵɵconditionalCreate(23,
|
|
180
|
+
i0.ɵɵconditionalCreate(22, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_22_Template, 2, 1, "p", 50);
|
|
181
|
+
i0.ɵɵconditionalCreate(23, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Conditional_23_Template, 3, 0, "div", 51);
|
|
182
182
|
i0.ɵɵelementEnd();
|
|
183
183
|
} if (rf & 2) {
|
|
184
184
|
const label_r2 = ctx.$implicit;
|
|
@@ -215,18 +215,18 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_33_For
|
|
|
215
215
|
i0.ɵɵadvance();
|
|
216
216
|
i0.ɵɵconditional(ctx_r2.IsGroupParent(label_r2) && ctx_r2.GetChildLabels(label_r2.ID).length > 0 ? 23 : -1);
|
|
217
217
|
} }
|
|
218
|
-
function
|
|
219
|
-
i0.ɵɵelementStart(0, "div",
|
|
220
|
-
i0.ɵɵrepeaterCreate(1,
|
|
218
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
219
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
220
|
+
i0.ɵɵrepeaterCreate(1, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_For_2_Template, 24, 18, "div", 32, i0.ɵɵrepeaterTrackByIdentity);
|
|
221
221
|
i0.ɵɵelementEnd();
|
|
222
222
|
} if (rf & 2) {
|
|
223
223
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
224
224
|
i0.ɵɵadvance();
|
|
225
225
|
i0.ɵɵrepeater(ctx_r2.FilteredLabels);
|
|
226
226
|
} }
|
|
227
|
-
function
|
|
228
|
-
i0.ɵɵelementStart(0, "span",
|
|
229
|
-
i0.ɵɵelement(1, "i",
|
|
227
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_For_19_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
228
|
+
i0.ɵɵelementStart(0, "span", 76);
|
|
229
|
+
i0.ɵɵelement(1, "i", 42);
|
|
230
230
|
i0.ɵɵtext(2);
|
|
231
231
|
i0.ɵɵelementEnd();
|
|
232
232
|
} if (rf & 2) {
|
|
@@ -235,32 +235,32 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_For
|
|
|
235
235
|
i0.ɵɵadvance(2);
|
|
236
236
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.GetChildLabels(label_r7.ID).length, " ");
|
|
237
237
|
} }
|
|
238
|
-
function
|
|
238
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_For_19_Template(rf, ctx) { if (rf & 1) {
|
|
239
239
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
240
|
-
i0.ɵɵelementStart(0, "div",
|
|
241
|
-
i0.ɵɵlistener("click", function
|
|
242
|
-
i0.ɵɵelementStart(1, "span",
|
|
243
|
-
i0.ɵɵelement(2, "i",
|
|
240
|
+
i0.ɵɵelementStart(0, "div", 72);
|
|
241
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_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", 63);
|
|
243
|
+
i0.ɵɵelement(2, "i", 73);
|
|
244
244
|
i0.ɵɵelementEnd();
|
|
245
|
-
i0.ɵɵelementStart(3, "span",
|
|
245
|
+
i0.ɵɵelementStart(3, "span", 74)(4, "span", 75);
|
|
246
246
|
i0.ɵɵtext(5);
|
|
247
247
|
i0.ɵɵelementEnd();
|
|
248
|
-
i0.ɵɵconditionalCreate(6,
|
|
248
|
+
i0.ɵɵconditionalCreate(6, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_For_19_Conditional_6_Template, 3, 1, "span", 76);
|
|
249
249
|
i0.ɵɵelementEnd();
|
|
250
|
-
i0.ɵɵelementStart(7, "span",
|
|
250
|
+
i0.ɵɵelementStart(7, "span", 66);
|
|
251
251
|
i0.ɵɵtext(8);
|
|
252
252
|
i0.ɵɵelementEnd();
|
|
253
|
-
i0.ɵɵelementStart(9, "span",
|
|
253
|
+
i0.ɵɵelementStart(9, "span", 77)(10, "span", 78);
|
|
254
254
|
i0.ɵɵtext(11);
|
|
255
255
|
i0.ɵɵelementEnd()();
|
|
256
|
-
i0.ɵɵelementStart(12, "span",
|
|
256
|
+
i0.ɵɵelementStart(12, "span", 79);
|
|
257
257
|
i0.ɵɵtext(13);
|
|
258
258
|
i0.ɵɵelementEnd();
|
|
259
|
-
i0.ɵɵelementStart(14, "span",
|
|
259
|
+
i0.ɵɵelementStart(14, "span", 80);
|
|
260
260
|
i0.ɵɵtext(15);
|
|
261
261
|
i0.ɵɵelementEnd();
|
|
262
|
-
i0.ɵɵelementStart(16, "span",
|
|
263
|
-
i0.ɵɵelement(17, "i",
|
|
262
|
+
i0.ɵɵelementStart(16, "span", 70);
|
|
263
|
+
i0.ɵɵelement(17, "i", 81);
|
|
264
264
|
i0.ɵɵelementEnd()();
|
|
265
265
|
} if (rf & 2) {
|
|
266
266
|
const label_r7 = ctx.$implicit;
|
|
@@ -282,36 +282,36 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_For
|
|
|
282
282
|
i0.ɵɵadvance(2);
|
|
283
283
|
i0.ɵɵtextInterpolate(ctx_r2.FormatDate(label_r7.__mj_CreatedAt));
|
|
284
284
|
} }
|
|
285
|
-
function
|
|
285
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
286
286
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
287
|
-
i0.ɵɵelementStart(0, "div",
|
|
288
|
-
i0.ɵɵelement(2, "span",
|
|
289
|
-
i0.ɵɵelementStart(3, "span",
|
|
290
|
-
i0.ɵɵlistener("click", function
|
|
287
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "div", 62);
|
|
288
|
+
i0.ɵɵelement(2, "span", 63);
|
|
289
|
+
i0.ɵɵelementStart(3, "span", 64);
|
|
290
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_Template_span_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Name")); });
|
|
291
291
|
i0.ɵɵtext(4, " Name ");
|
|
292
|
-
i0.ɵɵelement(5, "i",
|
|
292
|
+
i0.ɵɵelement(5, "i", 65);
|
|
293
293
|
i0.ɵɵelementEnd();
|
|
294
|
-
i0.ɵɵelementStart(6, "span",
|
|
294
|
+
i0.ɵɵelementStart(6, "span", 66);
|
|
295
295
|
i0.ɵɵtext(7, "Entity");
|
|
296
296
|
i0.ɵɵelementEnd();
|
|
297
|
-
i0.ɵɵelementStart(8, "span",
|
|
298
|
-
i0.ɵɵlistener("click", function
|
|
297
|
+
i0.ɵɵelementStart(8, "span", 67);
|
|
298
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Status")); });
|
|
299
299
|
i0.ɵɵtext(9, " Status ");
|
|
300
|
-
i0.ɵɵelement(10, "i",
|
|
300
|
+
i0.ɵɵelement(10, "i", 65);
|
|
301
301
|
i0.ɵɵelementEnd();
|
|
302
|
-
i0.ɵɵelementStart(11, "span",
|
|
303
|
-
i0.ɵɵlistener("click", function
|
|
302
|
+
i0.ɵɵelementStart(11, "span", 68);
|
|
303
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_Template_span_click_11_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Items")); });
|
|
304
304
|
i0.ɵɵtext(12, " Items ");
|
|
305
|
-
i0.ɵɵelement(13, "i",
|
|
305
|
+
i0.ɵɵelement(13, "i", 65);
|
|
306
306
|
i0.ɵɵelementEnd();
|
|
307
|
-
i0.ɵɵelementStart(14, "span",
|
|
308
|
-
i0.ɵɵlistener("click", function
|
|
307
|
+
i0.ɵɵelementStart(14, "span", 69);
|
|
308
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_Template_span_click_14_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnSortChange("Date")); });
|
|
309
309
|
i0.ɵɵtext(15, " Created ");
|
|
310
|
-
i0.ɵɵelement(16, "i",
|
|
310
|
+
i0.ɵɵelement(16, "i", 65);
|
|
311
311
|
i0.ɵɵelementEnd();
|
|
312
|
-
i0.ɵɵelement(17, "span",
|
|
312
|
+
i0.ɵɵelement(17, "span", 70);
|
|
313
313
|
i0.ɵɵelementEnd();
|
|
314
|
-
i0.ɵɵrepeaterCreate(18,
|
|
314
|
+
i0.ɵɵrepeaterCreate(18, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_For_19_Template, 18, 9, "div", 71, i0.ɵɵrepeaterTrackByIdentity);
|
|
315
315
|
i0.ɵɵelementEnd();
|
|
316
316
|
} if (rf & 2) {
|
|
317
317
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -326,34 +326,34 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_34_Tem
|
|
|
326
326
|
i0.ɵɵadvance(2);
|
|
327
327
|
i0.ɵɵrepeater(ctx_r2.FilteredLabels);
|
|
328
328
|
} }
|
|
329
|
-
function
|
|
329
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
330
330
|
i0.ɵɵelementStart(0, "p");
|
|
331
331
|
i0.ɵɵtext(1, " Try adjusting your filters or search criteria. ");
|
|
332
332
|
i0.ɵɵelementEnd();
|
|
333
333
|
} }
|
|
334
|
-
function
|
|
334
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
335
335
|
i0.ɵɵelementStart(0, "p");
|
|
336
336
|
i0.ɵɵtext(1, " No version labels have been created yet. ");
|
|
337
337
|
i0.ɵɵelementEnd();
|
|
338
338
|
} }
|
|
339
|
-
function
|
|
339
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
340
340
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
341
|
-
i0.ɵɵelementStart(0, "button",
|
|
342
|
-
i0.ɵɵlistener("click", function
|
|
343
|
-
i0.ɵɵelement(1, "i",
|
|
341
|
+
i0.ɵɵelementStart(0, "button", 84);
|
|
342
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_17_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", 6);
|
|
344
344
|
i0.ɵɵelementStart(2, "span");
|
|
345
345
|
i0.ɵɵtext(3, "Create Your First Label");
|
|
346
346
|
i0.ɵɵelementEnd()();
|
|
347
347
|
} }
|
|
348
|
-
function
|
|
349
|
-
i0.ɵɵelementStart(0, "div",
|
|
350
|
-
i0.ɵɵelement(1, "i",
|
|
348
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
349
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
350
|
+
i0.ɵɵelement(1, "i", 82);
|
|
351
351
|
i0.ɵɵelementStart(2, "h3");
|
|
352
352
|
i0.ɵɵtext(3, "No labels found");
|
|
353
353
|
i0.ɵɵelementEnd();
|
|
354
|
-
i0.ɵɵconditionalCreate(4,
|
|
355
|
-
i0.ɵɵconditionalCreate(5,
|
|
356
|
-
i0.ɵɵconditionalCreate(6,
|
|
354
|
+
i0.ɵɵconditionalCreate(4, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Conditional_4_Template, 2, 0, "p");
|
|
355
|
+
i0.ɵɵconditionalCreate(5, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Conditional_5_Template, 2, 0, "p");
|
|
356
|
+
i0.ɵɵconditionalCreate(6, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Conditional_6_Template, 4, 0, "button", 83);
|
|
357
357
|
i0.ɵɵelementEnd();
|
|
358
358
|
} if (rf & 2) {
|
|
359
359
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -364,46 +364,46 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Conditional_35_Tem
|
|
|
364
364
|
i0.ɵɵadvance();
|
|
365
365
|
i0.ɵɵconditional(!ctx_r2.SearchText && !ctx_r2.ScopeFilter && !ctx_r2.StatusFilter ? 6 : -1);
|
|
366
366
|
} }
|
|
367
|
-
function
|
|
368
|
-
i0.ɵɵelementStart(0, "div",
|
|
369
|
-
i0.ɵɵelement(3, "i",
|
|
367
|
+
function VersionHistoryLabelsResourceComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
368
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "div", 17)(2, "div", 18);
|
|
369
|
+
i0.ɵɵelement(3, "i", 19);
|
|
370
370
|
i0.ɵɵelementEnd();
|
|
371
|
-
i0.ɵɵelementStart(4, "div",
|
|
371
|
+
i0.ɵɵelementStart(4, "div", 20)(5, "div", 21);
|
|
372
372
|
i0.ɵɵtext(6);
|
|
373
373
|
i0.ɵɵelementEnd();
|
|
374
|
-
i0.ɵɵelementStart(7, "div",
|
|
374
|
+
i0.ɵɵelementStart(7, "div", 22);
|
|
375
375
|
i0.ɵɵtext(8, "Total Labels");
|
|
376
376
|
i0.ɵɵelementEnd()()();
|
|
377
|
-
i0.ɵɵelementStart(9, "div",
|
|
378
|
-
i0.ɵɵelement(11, "i",
|
|
377
|
+
i0.ɵɵelementStart(9, "div", 17)(10, "div", 23);
|
|
378
|
+
i0.ɵɵelement(11, "i", 24);
|
|
379
379
|
i0.ɵɵelementEnd();
|
|
380
|
-
i0.ɵɵelementStart(12, "div",
|
|
380
|
+
i0.ɵɵelementStart(12, "div", 20)(13, "div", 21);
|
|
381
381
|
i0.ɵɵtext(14);
|
|
382
382
|
i0.ɵɵelementEnd();
|
|
383
|
-
i0.ɵɵelementStart(15, "div",
|
|
383
|
+
i0.ɵɵelementStart(15, "div", 22);
|
|
384
384
|
i0.ɵɵtext(16, "Active");
|
|
385
385
|
i0.ɵɵelementEnd()()();
|
|
386
|
-
i0.ɵɵelementStart(17, "div",
|
|
387
|
-
i0.ɵɵelement(19, "i",
|
|
386
|
+
i0.ɵɵelementStart(17, "div", 17)(18, "div", 25);
|
|
387
|
+
i0.ɵɵelement(19, "i", 26);
|
|
388
388
|
i0.ɵɵelementEnd();
|
|
389
|
-
i0.ɵɵelementStart(20, "div",
|
|
389
|
+
i0.ɵɵelementStart(20, "div", 20)(21, "div", 21);
|
|
390
390
|
i0.ɵɵtext(22);
|
|
391
391
|
i0.ɵɵelementEnd();
|
|
392
|
-
i0.ɵɵelementStart(23, "div",
|
|
392
|
+
i0.ɵɵelementStart(23, "div", 22);
|
|
393
393
|
i0.ɵɵtext(24, "Archived");
|
|
394
394
|
i0.ɵɵelementEnd()()();
|
|
395
|
-
i0.ɵɵelementStart(25, "div",
|
|
396
|
-
i0.ɵɵelement(27, "i",
|
|
395
|
+
i0.ɵɵelementStart(25, "div", 17)(26, "div", 27);
|
|
396
|
+
i0.ɵɵelement(27, "i", 28);
|
|
397
397
|
i0.ɵɵelementEnd();
|
|
398
|
-
i0.ɵɵelementStart(28, "div",
|
|
398
|
+
i0.ɵɵelementStart(28, "div", 20)(29, "div", 21);
|
|
399
399
|
i0.ɵɵtext(30);
|
|
400
400
|
i0.ɵɵelementEnd();
|
|
401
|
-
i0.ɵɵelementStart(31, "div",
|
|
401
|
+
i0.ɵɵelementStart(31, "div", 22);
|
|
402
402
|
i0.ɵɵtext(32, "Restored");
|
|
403
403
|
i0.ɵɵelementEnd()()()();
|
|
404
|
-
i0.ɵɵconditionalCreate(33,
|
|
405
|
-
i0.ɵɵconditionalCreate(34,
|
|
406
|
-
i0.ɵɵconditionalCreate(35,
|
|
404
|
+
i0.ɵɵconditionalCreate(33, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_33_Template, 3, 0, "div", 29);
|
|
405
|
+
i0.ɵɵconditionalCreate(34, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_34_Template, 20, 8, "div", 30);
|
|
406
|
+
i0.ɵɵconditionalCreate(35, VersionHistoryLabelsResourceComponent_Conditional_17_Conditional_35_Template, 7, 3, "div", 31);
|
|
407
407
|
} if (rf & 2) {
|
|
408
408
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
409
409
|
i0.ɵɵadvance(6);
|
|
@@ -421,28 +421,28 @@ function VersionHistoryLabelsResourceComponent_Conditional_16_Template(rf, ctx)
|
|
|
421
421
|
i0.ɵɵadvance();
|
|
422
422
|
i0.ɵɵconditional(ctx_r2.FilteredLabels.length === 0 && !ctx_r2.IsLoading ? 35 : -1);
|
|
423
423
|
} }
|
|
424
|
-
function
|
|
424
|
+
function VersionHistoryLabelsResourceComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
425
425
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
426
|
-
i0.ɵɵelementStart(0, "div",
|
|
427
|
-
i0.ɵɵlistener("click", function
|
|
428
|
-
i0.ɵɵelementStart(1, "div",
|
|
429
|
-
i0.ɵɵlistener("click", function
|
|
430
|
-
i0.ɵɵelementStart(2, "div",
|
|
431
|
-
i0.ɵɵelement(4, "i",
|
|
426
|
+
i0.ɵɵelementStart(0, "div", 85);
|
|
427
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_18_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnCreateWizardCancel()); });
|
|
428
|
+
i0.ɵɵelementStart(1, "div", 86);
|
|
429
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_18_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r9); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
430
|
+
i0.ɵɵelementStart(2, "div", 87)(3, "h3", 88);
|
|
431
|
+
i0.ɵɵelement(4, "i", 89);
|
|
432
432
|
i0.ɵɵtext(5, " Create Version Label ");
|
|
433
433
|
i0.ɵɵelementEnd();
|
|
434
|
-
i0.ɵɵelementStart(6, "button",
|
|
435
|
-
i0.ɵɵlistener("click", function
|
|
436
|
-
i0.ɵɵelement(7, "i",
|
|
434
|
+
i0.ɵɵelementStart(6, "button", 90);
|
|
435
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Conditional_18_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnCreateWizardCancel()); });
|
|
436
|
+
i0.ɵɵelement(7, "i", 91);
|
|
437
437
|
i0.ɵɵelementEnd()();
|
|
438
|
-
i0.ɵɵelementStart(8, "div",
|
|
439
|
-
i0.ɵɵlistener("Created", function
|
|
438
|
+
i0.ɵɵelementStart(8, "div", 92)(9, "mj-label-create", 93);
|
|
439
|
+
i0.ɵɵlistener("Created", function VersionHistoryLabelsResourceComponent_Conditional_18_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_18_Template_mj_label_create_Cancel_9_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnCreateWizardCancel()); });
|
|
440
440
|
i0.ɵɵelementEnd()()()();
|
|
441
441
|
} }
|
|
442
|
-
function
|
|
442
|
+
function VersionHistoryLabelsResourceComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
443
443
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
444
|
-
i0.ɵɵelementStart(0, "mj-label-detail-panel",
|
|
445
|
-
i0.ɵɵlistener("Close", function
|
|
444
|
+
i0.ɵɵelementStart(0, "mj-label-detail-panel", 94);
|
|
445
|
+
i0.ɵɵlistener("Close", function VersionHistoryLabelsResourceComponent_Conditional_19_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_19_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_19_Template_mj_label_detail_panel_EntityLinkClick_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnEntityLinkClick($event)); });
|
|
446
446
|
i0.ɵɵelementEnd();
|
|
447
447
|
} if (rf & 2) {
|
|
448
448
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -898,57 +898,58 @@ let VersionHistoryLabelsResourceComponent = class VersionHistoryLabelsResourceCo
|
|
|
898
898
|
return this.Labels.filter(l => UUIDsEqual(l.ParentID, parentId));
|
|
899
899
|
}
|
|
900
900
|
static ɵfac = function VersionHistoryLabelsResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || VersionHistoryLabelsResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
901
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryLabelsResourceComponent, selectors: [["mj-version-history-labels-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
901
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryLabelsResourceComponent, selectors: [["mj-version-history-labels-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 20, 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, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "action-btn-label"], ["toolbar", ""], ["Placeholder", "Search labels by name, description, or entity...", 3, "ValueChange", "Value"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "KeyChange", "Options", "ActiveKey"], ["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
902
|
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
|
|
903
903
|
i0.ɵɵelement(3, "mj-stat-badge", 2);
|
|
904
904
|
i0.ɵɵelementEnd();
|
|
905
|
-
i0.ɵɵelementStart(4, "div", 3)(5, "mj-
|
|
906
|
-
i0.ɵɵlistener("
|
|
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); });
|
|
905
|
+
i0.ɵɵelementStart(4, "div", 3)(5, "mj-refresh-button", 4);
|
|
906
|
+
i0.ɵɵlistener("Clicked", function VersionHistoryLabelsResourceComponent_Template_mj_refresh_button_Clicked_5_listener() { return ctx.Refresh(); });
|
|
912
907
|
i0.ɵɵelementEnd();
|
|
913
|
-
i0.ɵɵelementStart(
|
|
914
|
-
i0.ɵɵlistener("
|
|
908
|
+
i0.ɵɵelementStart(6, "button", 5);
|
|
909
|
+
i0.ɵɵlistener("click", function VersionHistoryLabelsResourceComponent_Template_button_click_6_listener() { return ctx.OpenCreateDialog(); });
|
|
910
|
+
i0.ɵɵelement(7, "i", 6);
|
|
911
|
+
i0.ɵɵelementStart(8, "span", 7);
|
|
912
|
+
i0.ɵɵtext(9, "Create Label");
|
|
913
|
+
i0.ɵɵelementEnd()()();
|
|
914
|
+
i0.ɵɵelementStart(10, "div", 8)(11, "mj-page-search", 9);
|
|
915
|
+
i0.ɵɵlistener("ValueChange", function VersionHistoryLabelsResourceComponent_Template_mj_page_search_ValueChange_11_listener($event) { return ctx.OnSearchChange($event); });
|
|
915
916
|
i0.ɵɵelementEnd();
|
|
916
|
-
i0.ɵɵelementStart(
|
|
917
|
-
i0.ɵɵlistener("
|
|
918
|
-
i0.ɵɵ
|
|
919
|
-
i0.ɵɵ
|
|
917
|
+
i0.ɵɵelementStart(12, "mj-filter-popover", 10);
|
|
918
|
+
i0.ɵɵlistener("ClearAllRequested", function VersionHistoryLabelsResourceComponent_Template_mj_filter_popover_ClearAllRequested_12_listener() { return ctx.resetFilters(); });
|
|
919
|
+
i0.ɵɵelementStart(13, "mj-filter-panel", 11);
|
|
920
|
+
i0.ɵɵlistener("ValuesChange", function VersionHistoryLabelsResourceComponent_Template_mj_filter_panel_ValuesChange_13_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function VersionHistoryLabelsResourceComponent_Template_mj_filter_panel_Reset_13_listener() { return ctx.resetFilters(); });
|
|
920
921
|
i0.ɵɵelementEnd()();
|
|
921
|
-
i0.ɵɵelementStart(
|
|
922
|
-
i0.ɵɵlistener("
|
|
922
|
+
i0.ɵɵelementStart(14, "mj-view-toggle", 12);
|
|
923
|
+
i0.ɵɵlistener("KeyChange", function VersionHistoryLabelsResourceComponent_Template_mj_view_toggle_KeyChange_14_listener($event) { return ctx.SetViewMode($event); });
|
|
923
924
|
i0.ɵɵelementEnd()()();
|
|
924
|
-
i0.ɵɵelementStart(
|
|
925
|
-
i0.ɵɵconditionalCreate(
|
|
926
|
-
i0.ɵɵconditionalCreate(
|
|
927
|
-
i0.ɵɵconditionalCreate(
|
|
925
|
+
i0.ɵɵelementStart(15, "mj-page-body");
|
|
926
|
+
i0.ɵɵconditionalCreate(16, VersionHistoryLabelsResourceComponent_Conditional_16_Template, 1, 0, "mj-loading", 13);
|
|
927
|
+
i0.ɵɵconditionalCreate(17, VersionHistoryLabelsResourceComponent_Conditional_17_Template, 36, 7);
|
|
928
|
+
i0.ɵɵconditionalCreate(18, VersionHistoryLabelsResourceComponent_Conditional_18_Template, 10, 0, "div", 14);
|
|
928
929
|
i0.ɵɵelementEnd();
|
|
929
|
-
i0.ɵɵconditionalCreate(
|
|
930
|
+
i0.ɵɵconditionalCreate(19, VersionHistoryLabelsResourceComponent_Conditional_19_Template, 1, 3, "mj-label-detail-panel", 15);
|
|
930
931
|
i0.ɵɵelementEnd();
|
|
931
932
|
} if (rf & 2) {
|
|
932
933
|
i0.ɵɵadvance(3);
|
|
933
934
|
i0.ɵɵproperty("Count", ctx.FilteredLabels.length)("Total", ctx.Labels.length);
|
|
934
935
|
i0.ɵɵadvance(2);
|
|
936
|
+
i0.ɵɵproperty("Loading", ctx.IsLoading);
|
|
937
|
+
i0.ɵɵadvance(6);
|
|
938
|
+
i0.ɵɵproperty("Value", ctx.SearchText);
|
|
939
|
+
i0.ɵɵadvance();
|
|
935
940
|
i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
|
|
936
941
|
i0.ɵɵadvance();
|
|
937
942
|
i0.ɵɵproperty("Fields", ctx.FilterFields)("Values", ctx.FilterValues);
|
|
938
943
|
i0.ɵɵadvance();
|
|
939
944
|
i0.ɵɵproperty("Options", ctx.viewOptions)("ActiveKey", ctx.ViewMode);
|
|
940
|
-
i0.ɵɵadvance();
|
|
941
|
-
i0.ɵɵproperty("Loading", ctx.IsLoading);
|
|
942
|
-
i0.ɵɵadvance(5);
|
|
943
|
-
i0.ɵɵproperty("Value", ctx.SearchText);
|
|
944
945
|
i0.ɵɵadvance(2);
|
|
945
|
-
i0.ɵɵconditional(ctx.IsLoading ?
|
|
946
|
+
i0.ɵɵconditional(ctx.IsLoading ? 16 : -1);
|
|
946
947
|
i0.ɵɵadvance();
|
|
947
|
-
i0.ɵɵconditional(!ctx.IsLoading ?
|
|
948
|
+
i0.ɵɵconditional(!ctx.IsLoading ? 17 : -1);
|
|
948
949
|
i0.ɵɵadvance();
|
|
949
|
-
i0.ɵɵconditional(ctx.ShowCreateWizard ?
|
|
950
|
+
i0.ɵɵconditional(ctx.ShowCreateWizard ? 18 : -1);
|
|
950
951
|
i0.ɵɵadvance();
|
|
951
|
-
i0.ɵɵconditional(ctx.ShowDetailPanel && ctx.SelectedLabel ?
|
|
952
|
+
i0.ɵɵconditional(ctx.ShowDetailPanel && ctx.SelectedLabel ? 19 : -1);
|
|
952
953
|
} }, 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 });
|
|
953
954
|
};
|
|
954
955
|
VersionHistoryLabelsResourceComponent = VersionHistoryLabelsResourceComponent_1 = __decorate([
|
|
@@ -957,7 +958,7 @@ VersionHistoryLabelsResourceComponent = VersionHistoryLabelsResourceComponent_1
|
|
|
957
958
|
export { VersionHistoryLabelsResourceComponent };
|
|
958
959
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VersionHistoryLabelsResourceComponent, [{
|
|
959
960
|
type: Component,
|
|
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"] }]
|
|
961
|
+
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-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> <span class=\"action-btn-label\">Create Label</span>\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 <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 </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"] }]
|
|
961
962
|
}], () => [{ type: i0.ChangeDetectorRef }], null); })();
|
|
962
963
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryLabelsResourceComponent, { className: "VersionHistoryLabelsResourceComponent", filePath: "src/VersionHistory/components/labels-resource.component.ts", lineNumber: 41 }); })();
|
|
963
964
|
//# sourceMappingURL=labels-resource.component.js.map
|