@memberjunction/ng-dashboards 5.23.0 → 5.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +15 -33
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +233 -493
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +2 -2
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +7 -7
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +717 -8
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +7166 -1889
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +50 -4
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +759 -491
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts +4 -5
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +14 -15
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +4 -4
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +5 -5
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +4 -4
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +5 -5
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +2 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +1 -0
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +2 -3
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +9 -11
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +62 -7
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +825 -359
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +2 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +2 -0
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +4 -5
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +11 -12
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.d.ts +2 -3
- package/dist/Actions/components/code-management.component.d.ts.map +1 -1
- package/dist/Actions/components/code-management.component.js +4 -6
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.d.ts +2 -3
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +4 -6
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +4 -5
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +10 -11
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +13 -12
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +39 -66
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.d.ts +2 -3
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +4 -6
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.d.ts +2 -3
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +4 -6
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.d.ts +112 -0
- package/dist/ApplicationRoles/application-roles-resource.component.d.ts.map +1 -0
- package/dist/ApplicationRoles/application-roles-resource.component.js +532 -0
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -0
- package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
- package/dist/Communication/communication-dashboard.component.js +1 -0
- package/dist/Communication/communication-dashboard.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +4 -1
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +4 -1
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +4 -1
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +4 -1
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +4 -1
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +2 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +2 -0
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts +2 -3
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +10 -11
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +2 -0
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts +4 -4
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +8 -9
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +2 -3
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +11 -12
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +1 -0
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +2 -3
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +9 -10
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +2 -2
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +23 -15
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +167 -213
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +68 -32
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +470 -437
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts +10 -3
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +35 -11
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.d.ts +12 -3
- package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.js +5 -1
- package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +4 -4
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +4 -5
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +2 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +3 -0
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -0
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +3 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +3 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +3 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +412 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +4267 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +39 -4
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +187 -13
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +13 -2
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +329 -224
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +76 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +602 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/index.d.ts +2 -1
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +2 -1
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +2 -0
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +2 -0
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +2 -0
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +2 -0
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +7 -28
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +25 -107
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
- package/dist/MCP/mcp-resource.component.js +1 -0
- package/dist/MCP/mcp-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +10 -23
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +41 -103
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -4
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +9 -10
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +2 -0
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +2 -0
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +2 -0
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +2 -0
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +2 -0
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -1
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +1 -0
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts +4 -4
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +9 -10
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts +2 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +2 -0
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +4 -4
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +10 -11
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +2 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +2 -0
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/__tests__/analytics-resource.test.d.ts +2 -0
- package/dist/__tests__/analytics-resource.test.d.ts.map +1 -0
- package/dist/__tests__/analytics-resource.test.js +181 -0
- package/dist/__tests__/analytics-resource.test.js.map +1 -0
- package/dist/__tests__/scheduling.test.d.ts +2 -0
- package/dist/__tests__/scheduling.test.d.ts.map +1 -0
- package/dist/__tests__/scheduling.test.js +205 -0
- package/dist/__tests__/scheduling.test.js.map +1 -0
- package/dist/ai-dashboards.module.d.ts +22 -18
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +29 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +19 -18
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +8 -0
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +2 -1
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +7 -3
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -1
- package/dist/public-api.js.map +1 -1
- package/dist/shared/entity-field-display.d.ts +44 -0
- package/dist/shared/entity-field-display.d.ts.map +1 -0
- package/dist/shared/entity-field-display.js +118 -0
- package/dist/shared/entity-field-display.js.map +1 -0
- package/package.json +47 -46
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +0 -85
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +0 -1
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +0 -461
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +0 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
2
2
|
import { Metadata, CompositeKey } from '@memberjunction/core';
|
|
3
|
+
import { UUIDsEqual } from '@memberjunction/global';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "@memberjunction/ng-trees";
|
|
7
|
+
const _c0 = ["entityTree"];
|
|
5
8
|
const _forTrack0 = ($index, $item) => $item.displayName;
|
|
6
9
|
const _forTrack1 = ($index, $item) => $item.compositeKeyString;
|
|
7
|
-
const _forTrack2 = ($index, $item) => $item.applicationId;
|
|
8
|
-
const _forTrack3 = ($index, $item) => $item.ID;
|
|
9
10
|
function NavigationPanelComponent_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
-
i0.ɵɵelementStart(0, "span",
|
|
11
|
+
i0.ɵɵelementStart(0, "span", 10);
|
|
11
12
|
i0.ɵɵtext(1);
|
|
12
13
|
i0.ɵɵelementEnd();
|
|
13
14
|
} if (rf & 2) {
|
|
@@ -16,16 +17,16 @@ function NavigationPanelComponent_Conditional_3_Conditional_6_Template(rf, ctx)
|
|
|
16
17
|
i0.ɵɵtextInterpolate1("(", ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length, ")");
|
|
17
18
|
} }
|
|
18
19
|
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
-
i0.ɵɵelementStart(0, "div",
|
|
20
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "span");
|
|
20
21
|
i0.ɵɵtext(2, "No favorites yet");
|
|
21
22
|
i0.ɵɵelementEnd()();
|
|
22
23
|
} }
|
|
23
24
|
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
24
25
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
25
|
-
i0.ɵɵelementStart(0, "div",
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
26
27
|
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template_div_click_0_listener() { const favorite_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFavoriteClick(favorite_r4)); });
|
|
27
28
|
i0.ɵɵelement(1, "i");
|
|
28
|
-
i0.ɵɵelementStart(2, "span",
|
|
29
|
+
i0.ɵɵelementStart(2, "span", 23);
|
|
29
30
|
i0.ɵɵtext(3);
|
|
30
31
|
i0.ɵɵelementEnd()();
|
|
31
32
|
} if (rf & 2) {
|
|
@@ -39,10 +40,10 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_
|
|
|
39
40
|
} }
|
|
40
41
|
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
41
42
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
42
|
-
i0.ɵɵelementStart(0, "div",
|
|
43
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
43
44
|
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template_div_click_0_listener() { const favorite_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFavoriteClick(favorite_r6)); });
|
|
44
45
|
i0.ɵɵelement(1, "i");
|
|
45
|
-
i0.ɵɵelementStart(2, "span",
|
|
46
|
+
i0.ɵɵelementStart(2, "span", 23);
|
|
46
47
|
i0.ɵɵtext(3);
|
|
47
48
|
i0.ɵɵelementEnd()();
|
|
48
49
|
} if (rf & 2) {
|
|
@@ -55,9 +56,9 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_
|
|
|
55
56
|
i0.ɵɵtextInterpolate(favorite_r6.displayName);
|
|
56
57
|
} }
|
|
57
58
|
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
58
|
-
i0.ɵɵelementStart(0, "div",
|
|
59
|
-
i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template, 4, 4, "div",
|
|
60
|
-
i0.ɵɵrepeaterCreate(4, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template, 4, 4, "div",
|
|
59
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "div", 20);
|
|
60
|
+
i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template, 4, 4, "div", 21, _forTrack0);
|
|
61
|
+
i0.ɵɵrepeaterCreate(4, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template, 4, 4, "div", 21, _forTrack0);
|
|
61
62
|
i0.ɵɵelementEnd()();
|
|
62
63
|
} if (rf & 2) {
|
|
63
64
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -67,8 +68,8 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Temp
|
|
|
67
68
|
i0.ɵɵrepeater(ctx_r1.favoriteRecords);
|
|
68
69
|
} }
|
|
69
70
|
function NavigationPanelComponent_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
70
|
-
i0.ɵɵelementStart(0, "div",
|
|
71
|
-
i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template, 3, 0, "div",
|
|
71
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
72
|
+
i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template, 3, 0, "div", 18)(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template, 6, 0, "div", 19);
|
|
72
73
|
i0.ɵɵelementEnd();
|
|
73
74
|
} if (rf & 2) {
|
|
74
75
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -76,7 +77,7 @@ function NavigationPanelComponent_Conditional_3_Conditional_8_Template(rf, ctx)
|
|
|
76
77
|
i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length === 0 ? 1 : 2);
|
|
77
78
|
} }
|
|
78
79
|
function NavigationPanelComponent_Conditional_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
79
|
-
i0.ɵɵelementStart(0, "span",
|
|
80
|
+
i0.ɵɵelementStart(0, "span", 10);
|
|
80
81
|
i0.ɵɵtext(1);
|
|
81
82
|
i0.ɵɵelementEnd();
|
|
82
83
|
} if (rf & 2) {
|
|
@@ -85,19 +86,19 @@ function NavigationPanelComponent_Conditional_3_Conditional_14_Template(rf, ctx)
|
|
|
85
86
|
i0.ɵɵtextInterpolate1("(", ctx_r1.filteredRecentItems.length, ")");
|
|
86
87
|
} }
|
|
87
88
|
function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
88
|
-
i0.ɵɵelementStart(0, "div",
|
|
89
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "span");
|
|
89
90
|
i0.ɵɵtext(2, "No recent items");
|
|
90
91
|
i0.ɵɵelementEnd()();
|
|
91
92
|
} }
|
|
92
93
|
function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
93
94
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
94
|
-
i0.ɵɵelementStart(0, "div",
|
|
95
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
95
96
|
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template_div_click_0_listener() { const item_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onRecentClick(item_r8)); });
|
|
96
97
|
i0.ɵɵelement(1, "i");
|
|
97
|
-
i0.ɵɵelementStart(2, "div",
|
|
98
|
+
i0.ɵɵelementStart(2, "div", 24)(3, "span", 23);
|
|
98
99
|
i0.ɵɵtext(4);
|
|
99
100
|
i0.ɵɵelementEnd();
|
|
100
|
-
i0.ɵɵelementStart(5, "span",
|
|
101
|
+
i0.ɵɵelementStart(5, "span", 25);
|
|
101
102
|
i0.ɵɵtext(6);
|
|
102
103
|
i0.ɵɵelementEnd()()();
|
|
103
104
|
} if (rf & 2) {
|
|
@@ -112,8 +113,8 @@ function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For
|
|
|
112
113
|
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(item_r8.timestamp));
|
|
113
114
|
} }
|
|
114
115
|
function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
115
|
-
i0.ɵɵelementStart(0, "div",
|
|
116
|
-
i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template, 7, 5, "div",
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "div", 20);
|
|
117
|
+
i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template, 7, 5, "div", 21, _forTrack1);
|
|
117
118
|
i0.ɵɵelementEnd()();
|
|
118
119
|
} if (rf & 2) {
|
|
119
120
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -121,8 +122,8 @@ function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Tem
|
|
|
121
122
|
i0.ɵɵrepeater(ctx_r1.filteredRecentItems);
|
|
122
123
|
} }
|
|
123
124
|
function NavigationPanelComponent_Conditional_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
-
i0.ɵɵelementStart(0, "div",
|
|
125
|
-
i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template, 3, 0, "div",
|
|
125
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
126
|
+
i0.ɵɵconditionalCreate(1, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template, 3, 0, "div", 18)(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template, 4, 0, "div", 19);
|
|
126
127
|
i0.ɵɵelementEnd();
|
|
127
128
|
} if (rf & 2) {
|
|
128
129
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -132,166 +133,68 @@ function NavigationPanelComponent_Conditional_3_Conditional_16_Template(rf, ctx)
|
|
|
132
133
|
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
133
134
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
134
135
|
i0.ɵɵelementStart(0, "button", 31);
|
|
135
|
-
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.
|
|
136
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearEntitySearch()); });
|
|
136
137
|
i0.ɵɵelement(1, "i", 32);
|
|
137
138
|
i0.ɵɵelementEnd();
|
|
138
139
|
} }
|
|
139
|
-
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
-
const _r13 = i0.ɵɵgetCurrentView();
|
|
141
|
-
i0.ɵɵelementStart(0, "div", 41);
|
|
142
|
-
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_For_2_Template_div_click_0_listener() { const entity_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r1.onEntityClick(entity_r14)); });
|
|
143
|
-
i0.ɵɵelement(1, "i");
|
|
144
|
-
i0.ɵɵelementStart(2, "span", 22);
|
|
145
|
-
i0.ɵɵtext(3);
|
|
146
|
-
i0.ɵɵelementEnd()();
|
|
147
|
-
} if (rf & 2) {
|
|
148
|
-
const entity_r14 = ctx.$implicit;
|
|
149
|
-
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
150
|
-
i0.ɵɵclassProp("selected", ctx_r1.isEntitySelected(entity_r14));
|
|
151
|
-
i0.ɵɵproperty("title", entity_r14.Description || entity_r14.DisplayNameOrName);
|
|
152
|
-
i0.ɵɵadvance();
|
|
153
|
-
i0.ɵɵclassMap(ctx_r1.getEntityIcon(entity_r14));
|
|
154
|
-
i0.ɵɵadvance(2);
|
|
155
|
-
i0.ɵɵtextInterpolate(entity_r14.DisplayNameOrName);
|
|
156
|
-
} }
|
|
157
|
-
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
-
i0.ɵɵelementStart(0, "div", 39);
|
|
159
|
-
i0.ɵɵrepeaterCreate(1, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_For_2_Template, 4, 6, "div", 40, _forTrack3);
|
|
160
|
-
i0.ɵɵelementEnd();
|
|
161
|
-
} if (rf & 2) {
|
|
162
|
-
const group_r12 = i0.ɵɵnextContext().$implicit;
|
|
163
|
-
i0.ɵɵadvance();
|
|
164
|
-
i0.ɵɵrepeater(group_r12.entities);
|
|
165
|
-
} }
|
|
166
|
-
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
|
168
|
-
i0.ɵɵelementStart(0, "div", 33)(1, "div", 34);
|
|
169
|
-
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Template_div_click_1_listener() { const group_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onNavGroupToggle(group_r12.applicationId)); });
|
|
170
|
-
i0.ɵɵelement(2, "i", 35);
|
|
171
|
-
i0.ɵɵelementStart(3, "span", 36);
|
|
172
|
-
i0.ɵɵtext(4);
|
|
173
|
-
i0.ɵɵelementEnd();
|
|
174
|
-
i0.ɵɵelementStart(5, "span", 37);
|
|
175
|
-
i0.ɵɵtext(6);
|
|
176
|
-
i0.ɵɵelementEnd();
|
|
177
|
-
i0.ɵɵelement(7, "i", 38);
|
|
178
|
-
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵconditionalCreate(8, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Conditional_8_Template, 3, 0, "div", 39);
|
|
180
|
-
i0.ɵɵelementEnd();
|
|
181
|
-
} if (rf & 2) {
|
|
182
|
-
const group_r12 = ctx.$implicit;
|
|
183
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
184
|
-
i0.ɵɵadvance(2);
|
|
185
|
-
i0.ɵɵclassMap(group_r12.applicationIcon || "fa-solid fa-folder");
|
|
186
|
-
i0.ɵɵstyleProp("color", group_r12.applicationColor || null);
|
|
187
|
-
i0.ɵɵadvance(2);
|
|
188
|
-
i0.ɵɵtextInterpolate(group_r12.applicationName);
|
|
189
|
-
i0.ɵɵadvance(2);
|
|
190
|
-
i0.ɵɵtextInterpolate(group_r12.entities.length);
|
|
191
|
-
i0.ɵɵadvance();
|
|
192
|
-
i0.ɵɵclassProp("expanded", ctx_r1.isNavGroupExpanded(group_r12.applicationId));
|
|
193
|
-
i0.ɵɵadvance();
|
|
194
|
-
i0.ɵɵconditional(ctx_r1.isNavGroupExpanded(group_r12.applicationId) ? 8 : -1);
|
|
195
|
-
} }
|
|
196
|
-
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
197
|
-
i0.ɵɵrepeaterCreate(0, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_7_For_1_Template, 9, 9, "div", 33, _forTrack2);
|
|
198
|
-
} if (rf & 2) {
|
|
199
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
200
|
-
i0.ɵɵrepeater(ctx_r1.filteredNavGroups);
|
|
201
|
-
} }
|
|
202
|
-
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
-
const _r15 = i0.ɵɵgetCurrentView();
|
|
204
|
-
i0.ɵɵelementStart(0, "div", 41);
|
|
205
|
-
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_For_1_Template_div_click_0_listener() { const entity_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onEntityClick(entity_r16)); });
|
|
206
|
-
i0.ɵɵelement(1, "i");
|
|
207
|
-
i0.ɵɵelementStart(2, "span", 22);
|
|
208
|
-
i0.ɵɵtext(3);
|
|
209
|
-
i0.ɵɵelementEnd()();
|
|
210
|
-
} if (rf & 2) {
|
|
211
|
-
const entity_r16 = ctx.$implicit;
|
|
212
|
-
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
213
|
-
i0.ɵɵclassProp("selected", ctx_r1.isEntitySelected(entity_r16));
|
|
214
|
-
i0.ɵɵproperty("title", entity_r16.Description || entity_r16.DisplayNameOrName);
|
|
215
|
-
i0.ɵɵadvance();
|
|
216
|
-
i0.ɵɵclassMap(ctx_r1.getEntityIcon(entity_r16));
|
|
217
|
-
i0.ɵɵadvance(2);
|
|
218
|
-
i0.ɵɵtextInterpolate(entity_r16.DisplayNameOrName);
|
|
219
|
-
} }
|
|
220
|
-
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
221
|
-
i0.ɵɵrepeaterCreate(0, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_8_For_1_Template, 4, 6, "div", 40, _forTrack3);
|
|
222
|
-
} if (rf & 2) {
|
|
223
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
224
|
-
i0.ɵɵrepeater(ctx_r1.filteredEntities);
|
|
225
|
-
} }
|
|
226
|
-
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
-
i0.ɵɵelementStart(0, "div", 17)(1, "span");
|
|
228
|
-
i0.ɵɵtext(2);
|
|
229
|
-
i0.ɵɵelementEnd()();
|
|
230
|
-
} if (rf & 2) {
|
|
231
|
-
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
232
|
-
i0.ɵɵadvance(2);
|
|
233
|
-
i0.ɵɵtextInterpolate1("No entities match \"", ctx_r1.entitySearchTerm, "\"");
|
|
234
|
-
} }
|
|
235
140
|
function NavigationPanelComponent_Conditional_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
236
141
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
237
|
-
i0.ɵɵelementStart(0, "div",
|
|
238
|
-
i0.ɵɵelement(2, "i",
|
|
239
|
-
i0.ɵɵelementStart(3, "input",
|
|
142
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "div", 26);
|
|
143
|
+
i0.ɵɵelement(2, "i", 27);
|
|
144
|
+
i0.ɵɵelementStart(3, "input", 28);
|
|
240
145
|
i0.ɵɵtwoWayListener("ngModelChange", function NavigationPanelComponent_Conditional_3_Conditional_25_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.entitySearchTerm, $event) || (ctx_r1.entitySearchTerm = $event); return i0.ɵɵresetView($event); });
|
|
146
|
+
i0.ɵɵlistener("ngModelChange", function NavigationPanelComponent_Conditional_3_Conditional_25_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onEntitySearchChanged()); });
|
|
241
147
|
i0.ɵɵelementEnd();
|
|
242
|
-
i0.ɵɵconditionalCreate(4, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template, 2, 0, "button",
|
|
148
|
+
i0.ɵɵconditionalCreate(4, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template, 2, 0, "button", 29);
|
|
243
149
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(5, "
|
|
245
|
-
i0.ɵɵ
|
|
246
|
-
i0.ɵɵ
|
|
247
|
-
i0.ɵɵelementEnd()()();
|
|
150
|
+
i0.ɵɵelementStart(5, "mj-tree", 30, 0);
|
|
151
|
+
i0.ɵɵlistener("SelectionChange", function NavigationPanelComponent_Conditional_3_Conditional_25_Template_mj_tree_SelectionChange_5_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTreeEntitySelected($event)); });
|
|
152
|
+
i0.ɵɵelementEnd()();
|
|
248
153
|
} if (rf & 2) {
|
|
249
154
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
250
155
|
i0.ɵɵadvance(3);
|
|
251
156
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.entitySearchTerm);
|
|
252
157
|
i0.ɵɵadvance();
|
|
253
158
|
i0.ɵɵconditional(ctx_r1.entitySearchTerm ? 4 : -1);
|
|
254
|
-
i0.ɵɵadvance(
|
|
255
|
-
i0.ɵɵ
|
|
256
|
-
i0.ɵɵadvance(2);
|
|
257
|
-
i0.ɵɵconditional(ctx_r1.filteredEntities.length === 0 && ctx_r1.entitySearchTerm ? 9 : -1);
|
|
159
|
+
i0.ɵɵadvance();
|
|
160
|
+
i0.ɵɵproperty("BranchConfig", ctx_r1.treeBranchConfig)("LeafConfig", ctx_r1.treeLeafConfig)("SelectionMode", "single")("SelectableTypes", "leaf")("SelectedIDs", ctx_r1.selectedEntityIds)("ShowIcons", true)("ShowExpandCollapseAll", false)("AnimateExpandCollapse", true)("EmptyMessage", ctx_r1.entitySearchTerm ? "No matches for: " + ctx_r1.entitySearchTerm : "No entities available")("EmptyIcon", "fa-solid fa-database");
|
|
258
161
|
} }
|
|
259
162
|
function NavigationPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
260
163
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
261
|
-
i0.ɵɵelementStart(0, "div",
|
|
164
|
+
i0.ɵɵelementStart(0, "div", 4)(1, "div", 6)(2, "div", 7);
|
|
262
165
|
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("favorites")); });
|
|
263
|
-
i0.ɵɵelement(3, "i",
|
|
264
|
-
i0.ɵɵelementStart(4, "span",
|
|
166
|
+
i0.ɵɵelement(3, "i", 8);
|
|
167
|
+
i0.ɵɵelementStart(4, "span", 9);
|
|
265
168
|
i0.ɵɵtext(5, "Favorites");
|
|
266
169
|
i0.ɵɵelementEnd();
|
|
267
|
-
i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_3_Conditional_6_Template, 2, 1, "span",
|
|
268
|
-
i0.ɵɵelement(7, "i",
|
|
170
|
+
i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_3_Conditional_6_Template, 2, 1, "span", 10);
|
|
171
|
+
i0.ɵɵelement(7, "i", 11);
|
|
269
172
|
i0.ɵɵelementEnd();
|
|
270
|
-
i0.ɵɵconditionalCreate(8, NavigationPanelComponent_Conditional_3_Conditional_8_Template, 3, 1, "div",
|
|
173
|
+
i0.ɵɵconditionalCreate(8, NavigationPanelComponent_Conditional_3_Conditional_8_Template, 3, 1, "div", 12);
|
|
271
174
|
i0.ɵɵelementEnd();
|
|
272
|
-
i0.ɵɵelementStart(9, "div",
|
|
175
|
+
i0.ɵɵelementStart(9, "div", 13)(10, "div", 7);
|
|
273
176
|
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("recent")); });
|
|
274
|
-
i0.ɵɵelement(11, "i",
|
|
275
|
-
i0.ɵɵelementStart(12, "span",
|
|
177
|
+
i0.ɵɵelement(11, "i", 14);
|
|
178
|
+
i0.ɵɵelementStart(12, "span", 9);
|
|
276
179
|
i0.ɵɵtext(13, "Recent");
|
|
277
180
|
i0.ɵɵelementEnd();
|
|
278
|
-
i0.ɵɵconditionalCreate(14, NavigationPanelComponent_Conditional_3_Conditional_14_Template, 2, 1, "span",
|
|
279
|
-
i0.ɵɵelement(15, "i",
|
|
181
|
+
i0.ɵɵconditionalCreate(14, NavigationPanelComponent_Conditional_3_Conditional_14_Template, 2, 1, "span", 10);
|
|
182
|
+
i0.ɵɵelement(15, "i", 11);
|
|
280
183
|
i0.ɵɵelementEnd();
|
|
281
|
-
i0.ɵɵconditionalCreate(16, NavigationPanelComponent_Conditional_3_Conditional_16_Template, 3, 1, "div",
|
|
184
|
+
i0.ɵɵconditionalCreate(16, NavigationPanelComponent_Conditional_3_Conditional_16_Template, 3, 1, "div", 12);
|
|
282
185
|
i0.ɵɵelementEnd();
|
|
283
|
-
i0.ɵɵelementStart(17, "div",
|
|
186
|
+
i0.ɵɵelementStart(17, "div", 15)(18, "div", 7);
|
|
284
187
|
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("entities")); });
|
|
285
|
-
i0.ɵɵelement(19, "i",
|
|
286
|
-
i0.ɵɵelementStart(20, "span",
|
|
188
|
+
i0.ɵɵelement(19, "i", 16);
|
|
189
|
+
i0.ɵɵelementStart(20, "span", 9);
|
|
287
190
|
i0.ɵɵtext(21, "Entities");
|
|
288
191
|
i0.ɵɵelementEnd();
|
|
289
|
-
i0.ɵɵelementStart(22, "span",
|
|
192
|
+
i0.ɵɵelementStart(22, "span", 10);
|
|
290
193
|
i0.ɵɵtext(23);
|
|
291
194
|
i0.ɵɵelementEnd();
|
|
292
|
-
i0.ɵɵelement(24, "i",
|
|
195
|
+
i0.ɵɵelement(24, "i", 11);
|
|
293
196
|
i0.ɵɵelementEnd();
|
|
294
|
-
i0.ɵɵconditionalCreate(25, NavigationPanelComponent_Conditional_3_Conditional_25_Template,
|
|
197
|
+
i0.ɵɵconditionalCreate(25, NavigationPanelComponent_Conditional_3_Conditional_25_Template, 7, 12, "div", 17);
|
|
295
198
|
i0.ɵɵelementEnd()();
|
|
296
199
|
} if (rf & 2) {
|
|
297
200
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -315,7 +218,7 @@ function NavigationPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1)
|
|
|
315
218
|
i0.ɵɵconditional(ctx_r1.entitiesSectionExpanded ? 25 : -1);
|
|
316
219
|
} }
|
|
317
220
|
function NavigationPanelComponent_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
318
|
-
i0.ɵɵelementStart(0, "span",
|
|
221
|
+
i0.ɵɵelementStart(0, "span", 35);
|
|
319
222
|
i0.ɵɵtext(1);
|
|
320
223
|
i0.ɵɵelementEnd();
|
|
321
224
|
} if (rf & 2) {
|
|
@@ -324,7 +227,7 @@ function NavigationPanelComponent_Conditional_4_Conditional_3_Template(rf, ctx)
|
|
|
324
227
|
i0.ɵɵtextInterpolate(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length);
|
|
325
228
|
} }
|
|
326
229
|
function NavigationPanelComponent_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
327
|
-
i0.ɵɵelementStart(0, "span",
|
|
230
|
+
i0.ɵɵelementStart(0, "span", 35);
|
|
328
231
|
i0.ɵɵtext(1);
|
|
329
232
|
i0.ɵɵelementEnd();
|
|
330
233
|
} if (rf & 2) {
|
|
@@ -333,21 +236,21 @@ function NavigationPanelComponent_Conditional_4_Conditional_6_Template(rf, ctx)
|
|
|
333
236
|
i0.ɵɵtextInterpolate(ctx_r1.filteredRecentItems.length);
|
|
334
237
|
} }
|
|
335
238
|
function NavigationPanelComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
336
|
-
const
|
|
337
|
-
i0.ɵɵelementStart(0, "div",
|
|
338
|
-
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
339
|
-
i0.ɵɵelement(2, "i",
|
|
340
|
-
i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_4_Conditional_3_Template, 2, 1, "span",
|
|
239
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
240
|
+
i0.ɵɵelementStart(0, "div", 5)(1, "button", 33);
|
|
241
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("favorites")); });
|
|
242
|
+
i0.ɵɵelement(2, "i", 34);
|
|
243
|
+
i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_4_Conditional_3_Template, 2, 1, "span", 35);
|
|
341
244
|
i0.ɵɵelementEnd();
|
|
342
|
-
i0.ɵɵelementStart(4, "button",
|
|
343
|
-
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(
|
|
344
|
-
i0.ɵɵelement(5, "i",
|
|
345
|
-
i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_4_Conditional_6_Template, 2, 1, "span",
|
|
245
|
+
i0.ɵɵelementStart(4, "button", 36);
|
|
246
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("recent")); });
|
|
247
|
+
i0.ɵɵelement(5, "i", 37);
|
|
248
|
+
i0.ɵɵconditionalCreate(6, NavigationPanelComponent_Conditional_4_Conditional_6_Template, 2, 1, "span", 35);
|
|
346
249
|
i0.ɵɵelementEnd();
|
|
347
|
-
i0.ɵɵelementStart(7, "button",
|
|
348
|
-
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_7_listener() { i0.ɵɵrestoreView(
|
|
349
|
-
i0.ɵɵelement(8, "i",
|
|
350
|
-
i0.ɵɵelementStart(9, "span",
|
|
250
|
+
i0.ɵɵelementStart(7, "button", 38);
|
|
251
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("entities")); });
|
|
252
|
+
i0.ɵɵelement(8, "i", 39);
|
|
253
|
+
i0.ɵɵelementStart(9, "span", 35);
|
|
351
254
|
i0.ɵɵtext(10);
|
|
352
255
|
i0.ɵɵelementEnd()()();
|
|
353
256
|
} if (rf & 2) {
|
|
@@ -372,6 +275,8 @@ export class NavigationPanelComponent {
|
|
|
372
275
|
allowedEntityNames = null;
|
|
373
276
|
/** Application-based entity groups from the parent dashboard */
|
|
374
277
|
appEntityGroups = [];
|
|
278
|
+
/** Optional application ID filter for the tree */
|
|
279
|
+
applicationIdFilter = null;
|
|
375
280
|
// Section expansion states
|
|
376
281
|
favoritesSectionExpanded = true;
|
|
377
282
|
recentSectionExpanded = true;
|
|
@@ -388,64 +293,103 @@ export class NavigationPanelComponent {
|
|
|
388
293
|
/** Emitted when a nav panel app group is toggled */
|
|
389
294
|
appGroupToggled = new EventEmitter();
|
|
390
295
|
metadata = new Metadata();
|
|
391
|
-
//
|
|
296
|
+
// Tree configuration for entity list
|
|
297
|
+
treeBranchConfig = {
|
|
298
|
+
EntityName: 'MJ: Applications',
|
|
299
|
+
DisplayField: 'Name',
|
|
300
|
+
IDField: 'ID',
|
|
301
|
+
IconField: 'Icon',
|
|
302
|
+
OrderBy: 'Name'
|
|
303
|
+
};
|
|
304
|
+
treeLeafConfig = {
|
|
305
|
+
EntityName: 'MJ: Entities',
|
|
306
|
+
ParentField: '', // Using JunctionConfig for M2M relationship
|
|
307
|
+
DisplayField: 'Name',
|
|
308
|
+
IDField: 'ID',
|
|
309
|
+
IconField: 'Icon',
|
|
310
|
+
JunctionConfig: {
|
|
311
|
+
EntityName: 'MJ: Application Entities',
|
|
312
|
+
BranchForeignKey: 'ApplicationID',
|
|
313
|
+
LeafForeignKey: 'EntityID'
|
|
314
|
+
},
|
|
315
|
+
OrderBy: 'Name'
|
|
316
|
+
};
|
|
317
|
+
entityTree;
|
|
318
|
+
/** Selected entity ID for tree highlighting */
|
|
319
|
+
selectedEntityIds = [];
|
|
320
|
+
/** Search term for filtering the entity tree */
|
|
392
321
|
entitySearchTerm = '';
|
|
393
|
-
|
|
394
|
-
|
|
322
|
+
ngOnChanges(changes) {
|
|
323
|
+
if (changes['selectedEntityName']) {
|
|
324
|
+
this.updateSelectedEntityKey();
|
|
325
|
+
}
|
|
326
|
+
if (changes['applicationIdFilter']) {
|
|
327
|
+
this.updateTreeBranchFilter();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
395
330
|
/**
|
|
396
|
-
*
|
|
331
|
+
* Update the selected entity IDs for tree highlighting when selected entity changes
|
|
397
332
|
*/
|
|
398
|
-
|
|
399
|
-
|
|
333
|
+
updateSelectedEntityKey() {
|
|
334
|
+
if (this.selectedEntityName) {
|
|
335
|
+
const entity = this.metadata.Entities.find(e => e.Name === this.selectedEntityName);
|
|
336
|
+
if (entity) {
|
|
337
|
+
this.selectedEntityIds = [entity.ID];
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
this.selectedEntityIds = [];
|
|
400
342
|
}
|
|
401
343
|
/**
|
|
402
|
-
*
|
|
344
|
+
* Update the tree's branch filter when application filter changes
|
|
403
345
|
*/
|
|
404
|
-
|
|
405
|
-
if (
|
|
406
|
-
|
|
346
|
+
updateTreeBranchFilter() {
|
|
347
|
+
if (this.applicationIdFilter) {
|
|
348
|
+
this.treeBranchConfig = {
|
|
349
|
+
...this.treeBranchConfig,
|
|
350
|
+
ExtraFilter: `ID='${this.applicationIdFilter}'`
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
this.treeBranchConfig = {
|
|
355
|
+
...this.treeBranchConfig,
|
|
356
|
+
ExtraFilter: undefined
|
|
357
|
+
};
|
|
407
358
|
}
|
|
408
|
-
const term = this.entitySearchTerm.toLowerCase();
|
|
409
|
-
return this.entities.filter(e => e.Name.toLowerCase().includes(term) ||
|
|
410
|
-
(e.Description && e.Description.toLowerCase().includes(term)));
|
|
411
359
|
}
|
|
412
360
|
/**
|
|
413
|
-
*
|
|
414
|
-
* Auto-expands groups when searching to show matches
|
|
361
|
+
* Filter the entity tree when search term changes
|
|
415
362
|
*/
|
|
416
|
-
|
|
417
|
-
if (
|
|
418
|
-
|
|
363
|
+
onEntitySearchChanged() {
|
|
364
|
+
if (this.entityTree) {
|
|
365
|
+
this.entityTree.FilterNodes(this.entitySearchTerm, {
|
|
366
|
+
searchBranches: true,
|
|
367
|
+
searchLeaves: true,
|
|
368
|
+
caseSensitive: false
|
|
369
|
+
});
|
|
419
370
|
}
|
|
420
|
-
const term = this.entitySearchTerm.toLowerCase();
|
|
421
|
-
return this.appEntityGroups
|
|
422
|
-
.map(g => ({
|
|
423
|
-
...g,
|
|
424
|
-
entities: g.entities.filter(e => e.Name.toLowerCase().includes(term) ||
|
|
425
|
-
(e.Description && e.Description.toLowerCase().includes(term))),
|
|
426
|
-
isExpanded: true // auto-expand when searching
|
|
427
|
-
}))
|
|
428
|
-
.filter(g => g.entities.length > 0);
|
|
429
371
|
}
|
|
430
372
|
/**
|
|
431
|
-
*
|
|
373
|
+
* Clear the entity search
|
|
432
374
|
*/
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
const localState = this.navGroupExpanded.get(groupId);
|
|
437
|
-
if (localState !== undefined)
|
|
438
|
-
return localState;
|
|
439
|
-
// Default: first group expanded, others collapsed
|
|
440
|
-
const idx = this.appEntityGroups.findIndex(g => g.applicationId === groupId);
|
|
441
|
-
return idx === 0;
|
|
375
|
+
clearEntitySearch() {
|
|
376
|
+
this.entitySearchTerm = '';
|
|
377
|
+
this.onEntitySearchChanged();
|
|
442
378
|
}
|
|
443
379
|
/**
|
|
444
|
-
*
|
|
380
|
+
* Handle tree selection change - map TreeNode to EntityInfo and emit
|
|
445
381
|
*/
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
382
|
+
onTreeEntitySelected(nodes) {
|
|
383
|
+
if (!nodes || nodes.length === 0)
|
|
384
|
+
return;
|
|
385
|
+
const node = nodes[0];
|
|
386
|
+
if (node.Type !== 'leaf')
|
|
387
|
+
return;
|
|
388
|
+
// Find the EntityInfo by ID from the node
|
|
389
|
+
const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, node.ID));
|
|
390
|
+
if (entity) {
|
|
391
|
+
this.entitySelected.emit(entity);
|
|
392
|
+
}
|
|
449
393
|
}
|
|
450
394
|
/**
|
|
451
395
|
* Get recent items filtered by allowed entities (if filter is active)
|
|
@@ -616,12 +560,17 @@ export class NavigationPanelComponent {
|
|
|
616
560
|
return 'fa-solid fa-file-alt';
|
|
617
561
|
}
|
|
618
562
|
static ɵfac = function NavigationPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NavigationPanelComponent)(); };
|
|
619
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationPanelComponent, selectors: [["mj-explorer-navigation-panel"]],
|
|
620
|
-
i0.ɵɵ
|
|
563
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationPanelComponent, selectors: [["mj-explorer-navigation-panel"]], viewQuery: function NavigationPanelComponent_Query(rf, ctx) { if (rf & 1) {
|
|
564
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
565
|
+
} if (rf & 2) {
|
|
566
|
+
let _t;
|
|
567
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityTree = _t.first);
|
|
568
|
+
} }, inputs: { entities: "entities", selectedEntityName: "selectedEntityName", favorites: "favorites", recentItems: "recentItems", collapsed: "collapsed", allowedEntityNames: "allowedEntityNames", appEntityGroups: "appEntityGroups", applicationIdFilter: "applicationIdFilter", favoritesSectionExpanded: "favoritesSectionExpanded", recentSectionExpanded: "recentSectionExpanded", entitiesSectionExpanded: "entitiesSectionExpanded", viewsSectionExpanded: "viewsSectionExpanded" }, outputs: { entitySelected: "entitySelected", toggleCollapse: "toggleCollapse", sectionToggled: "sectionToggled", openRecord: "openRecord", selectRecord: "selectRecord", expandAndFocus: "expandAndFocus", appGroupToggled: "appGroupToggled" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 5, vars: 8, consts: [["entityTree", ""], [1, "navigation-panel-container"], [1, "collapse-toggle", 3, "click", "title"], [1, "fa-solid"], [1, "panel-content"], [1, "collapsed-icons"], [1, "section", "favorites-section"], [1, "section-header", 3, "click"], [1, "fa-solid", "fa-star", "section-icon"], [1, "section-title"], [1, "section-count"], [1, "fa-solid", "expand-icon"], [1, "section-content", "scrollable-section"], [1, "section", "recent-section"], [1, "fa-solid", "fa-clock", "section-icon"], [1, "section", "entities-section"], [1, "fa-solid", "fa-database", "section-icon"], [1, "section-content", "entity-tree-container"], [1, "empty-section"], [1, "scrollable-list"], [1, "scrollable-list-inner"], [1, "nav-item", 3, "title"], [1, "nav-item", 3, "click", "title"], [1, "nav-item-label"], [1, "nav-item-content"], [1, "nav-item-meta"], [1, "entity-search"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [3, "SelectionChange", "BranchConfig", "LeafConfig", "SelectionMode", "SelectableTypes", "SelectedIDs", "ShowIcons", "ShowExpandCollapseAll", "AnimateExpandCollapse", "EmptyMessage", "EmptyIcon"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], ["title", "Favorites", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-star"], [1, "collapsed-badge"], ["title", "Recent", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-clock"], ["title", "Entities", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-database"]], template: function NavigationPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
569
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "button", 2);
|
|
621
570
|
i0.ɵɵlistener("click", function NavigationPanelComponent_Template_button_click_1_listener() { return ctx.onToggleCollapse(); });
|
|
622
|
-
i0.ɵɵelement(2, "i",
|
|
571
|
+
i0.ɵɵelement(2, "i", 3);
|
|
623
572
|
i0.ɵɵelementEnd();
|
|
624
|
-
i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_3_Template, 26, 18, "div",
|
|
573
|
+
i0.ɵɵconditionalCreate(3, NavigationPanelComponent_Conditional_3_Template, 26, 18, "div", 4)(4, NavigationPanelComponent_Conditional_4_Template, 11, 3, "div", 5);
|
|
625
574
|
i0.ɵɵelementEnd();
|
|
626
575
|
} if (rf & 2) {
|
|
627
576
|
i0.ɵɵclassProp("collapsed", ctx.collapsed);
|
|
@@ -631,11 +580,11 @@ export class NavigationPanelComponent {
|
|
|
631
580
|
i0.ɵɵclassProp("fa-chevron-right", ctx.collapsed)("fa-chevron-left", !ctx.collapsed);
|
|
632
581
|
i0.ɵɵadvance();
|
|
633
582
|
i0.ɵɵconditional(!ctx.collapsed ? 3 : 4);
|
|
634
|
-
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: [".navigation-panel-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; \n\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed[_ngcontent-%COMP%] {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%] {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; \n\n}\n\n.section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.section.favorites-section[_ngcontent-%COMP%], \n.section.recent-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; \n\n}\n\n.section.entities-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon[_ngcontent-%COMP%] {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n\n\n.section-content.scrollable-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner[_ngcontent-%COMP%] {\n \n\n}\n\n.entities-section[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; \n\n overflow: hidden;\n}\n\n.empty-section[_ngcontent-%COMP%] {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner[_ngcontent-%COMP%] {\n \n\n \n\n}\n\n.entity-item[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n\n\n\n\n\n.nav-app-group[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] {\n padding-left: 8px;\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.collapsed-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}"] });
|
|
583
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.TreeComponent], styles: [".navigation-panel-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; \n\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed[_ngcontent-%COMP%] {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%] {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; \n\n}\n\n.section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n\n.section.favorites-section[_ngcontent-%COMP%], \n.section.recent-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; \n\n}\n\n.section.entities-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon[_ngcontent-%COMP%] {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n\n\n.section-content.scrollable-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner[_ngcontent-%COMP%] {\n \n\n}\n\n.entities-section[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; \n\n overflow: hidden;\n}\n\n.entity-tree-container[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.entity-tree-container[_ngcontent-%COMP%] mj-tree[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n.empty-section[_ngcontent-%COMP%] {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner[_ngcontent-%COMP%] {\n \n\n \n\n}\n\n.entity-item[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n\n\n\n\n\n.nav-app-group[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron[_ngcontent-%COMP%] {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] {\n padding-left: 8px;\n}\n\n.nav-app-group-entities[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.collapsed-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}"] });
|
|
635
584
|
}
|
|
636
585
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationPanelComponent, [{
|
|
637
586
|
type: Component,
|
|
638
|
-
args: [{ standalone: false, selector: 'mj-explorer-navigation-panel', template: "<div class=\"navigation-panel-container\" [class.collapsed]=\"collapsed\">\n <!-- Collapse Toggle -->\n <button class=\"collapse-toggle\" (click)=\"onToggleCollapse()\" [title]=\"collapsed ? 'Expand' : 'Collapse'\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"collapsed\" [class.fa-chevron-left]=\"!collapsed\"></i>\n </button>\n\n @if (!collapsed) {\n <div class=\"panel-content\">\n <!-- Favorites Section -->\n <div class=\"section favorites-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('favorites')\">\n <i class=\"fa-solid fa-star section-icon\"></i>\n <span class=\"section-title\">Favorites</span>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"section-count\">({{ favoriteRecords.length + favoriteEntities.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"favoritesSectionExpanded\" [class.fa-chevron-right]=\"!favoritesSectionExpanded\"></i>\n </div>\n\n @if (favoritesSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (favoriteRecords.length + favoriteEntities.length === 0) {\n <div class=\"empty-section\">\n <span>No favorites yet</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (favorite of favoriteEntities; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n @for (favorite of favoriteRecords; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Recent Items Section -->\n <div class=\"section recent-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('recent')\">\n <i class=\"fa-solid fa-clock section-icon\"></i>\n <span class=\"section-title\">Recent</span>\n @if (filteredRecentItems.length > 0) {\n <span class=\"section-count\">({{ filteredRecentItems.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"recentSectionExpanded\" [class.fa-chevron-right]=\"!recentSectionExpanded\"></i>\n </div>\n\n @if (recentSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (filteredRecentItems.length === 0) {\n <div class=\"empty-section\">\n <span>No recent items</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (item of filteredRecentItems; track item.compositeKeyString) {\n <div class=\"nav-item\" (click)=\"onRecentClick(item)\" [title]=\"item.entityName + ' - ' + item.displayName\">\n <i [class]=\"getRecentItemIcon(item)\"></i>\n <div class=\"nav-item-content\">\n <span class=\"nav-item-label\">{{ item.displayName }}</span>\n <span class=\"nav-item-meta\">{{ formatTimestamp(item.timestamp) }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Entities Section -->\n <div class=\"section entities-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('entities')\">\n <i class=\"fa-solid fa-database section-icon\"></i>\n <span class=\"section-title\">Entities</span>\n <span class=\"section-count\">({{ entities.length }})</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"entitiesSectionExpanded\" [class.fa-chevron-right]=\"!entitiesSectionExpanded\"></i>\n </div>\n\n @if (entitiesSectionExpanded) {\n <div class=\"section-content\">\n <!-- Entity Search -->\n <div class=\"entity-search\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search entities...\"\n [(ngModel)]=\"entitySearchTerm\"\n />\n @if (entitySearchTerm) {\n <button class=\"clear-search\" (click)=\"entitySearchTerm = ''\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <!-- Entity List (scrollable container) -->\n <div class=\"entity-list\">\n <div class=\"entity-list-inner\">\n @if (hasAppGroups) {\n <!-- Grouped by application -->\n @for (group of filteredNavGroups; track group.applicationId) {\n <div class=\"nav-app-group\">\n <div class=\"nav-app-group-header\" (click)=\"onNavGroupToggle(group.applicationId)\">\n <i [class]=\"group.applicationIcon || 'fa-solid fa-folder'\" class=\"nav-app-group-icon\"\n [style.color]=\"group.applicationColor || null\"></i>\n <span class=\"nav-app-group-name\">{{ group.applicationName }}</span>\n <span class=\"nav-app-group-count\">{{ group.entities.length }}</span>\n <i class=\"fa-solid fa-chevron-right nav-app-group-chevron\"\n [class.expanded]=\"isNavGroupExpanded(group.applicationId)\"></i>\n </div>\n @if (isNavGroupExpanded(group.applicationId)) {\n <div class=\"nav-app-group-entities\">\n @for (entity of group.entities; track entity.ID) {\n <div\n class=\"nav-item entity-item\"\n [class.selected]=\"isEntitySelected(entity)\"\n (click)=\"onEntityClick(entity)\"\n [title]=\"entity.Description || entity.DisplayNameOrName\">\n <i [class]=\"getEntityIcon(entity)\"></i>\n <span class=\"nav-item-label\">{{ entity.DisplayNameOrName }}</span>\n </div>\n }\n </div>\n }\n </div>\n }\n } @else {\n <!-- Flat list (no groups available) -->\n @for (entity of filteredEntities; track entity.ID) {\n <div\n class=\"nav-item entity-item\"\n [class.selected]=\"isEntitySelected(entity)\"\n (click)=\"onEntityClick(entity)\"\n [title]=\"entity.Description || entity.DisplayNameOrName\">\n <i [class]=\"getEntityIcon(entity)\"></i>\n <span class=\"nav-item-label\">{{ entity.DisplayNameOrName }}</span>\n </div>\n }\n }\n\n @if (filteredEntities.length === 0 && entitySearchTerm) {\n <div class=\"empty-section\">\n <span>No entities match \"{{ entitySearchTerm }}\"</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Collapsed State - Show Icons Only -->\n <div class=\"collapsed-icons\">\n <button class=\"icon-btn\" title=\"Favorites\" (click)=\"onCollapsedIconClick('favorites')\">\n <i class=\"fa-solid fa-star\"></i>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"collapsed-badge\">{{ favoriteRecords.length + favoriteEntities.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Recent\" (click)=\"onCollapsedIconClick('recent')\">\n <i class=\"fa-solid fa-clock\"></i>\n @if (filteredRecentItems.length > 0) {\n <span class=\"collapsed-badge\">{{ filteredRecentItems.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Entities\" (click)=\"onCollapsedIconClick('entities')\">\n <i class=\"fa-solid fa-database\"></i>\n <span class=\"collapsed-badge\">{{ entities.length }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [".navigation-panel-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; /* Critical for nested flex scrolling */\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed .collapse-toggle {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed .collapse-toggle:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; /* Allow flex children to shrink below content size */\n}\n\n.section {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Scrollable sections (Favorites, Recent) - allow them to shrink and scroll */\n.section.favorites-section,\n.section.recent-section {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; /* Limit height so entities section has room */\n}\n\n.section.entities-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n/* Scrollable section content for Favorites and Recent */\n.section-content.scrollable-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner {\n /* Inner container grows naturally based on content */\n}\n\n.entities-section .section-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow content to shrink */\n overflow: hidden;\n}\n\n.empty-section {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected i {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected .nav-item-label {\n font-weight: 600;\n}\n.nav-item i {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner {\n /* Inner container grows naturally based on content */\n /* Does not scroll - parent .entity-list handles scrolling */\n}\n\n.entity-item .nav-item-label {\n flex: 1;\n}\n\n/* ============================================\n NAV PANEL APPLICATION GROUPS\n ============================================ */\n\n.nav-app-group {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities {\n padding-left: 8px;\n}\n\n.nav-app-group-entities .nav-item {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn i {\n font-size: 16px;\n}\n\n.collapsed-badge {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n"] }]
|
|
587
|
+
args: [{ standalone: false, selector: 'mj-explorer-navigation-panel', template: "<div class=\"navigation-panel-container\" [class.collapsed]=\"collapsed\">\n <!-- Collapse Toggle -->\n <button class=\"collapse-toggle\" (click)=\"onToggleCollapse()\" [title]=\"collapsed ? 'Expand' : 'Collapse'\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"collapsed\" [class.fa-chevron-left]=\"!collapsed\"></i>\n </button>\n\n @if (!collapsed) {\n <div class=\"panel-content\">\n <!-- Favorites Section -->\n <div class=\"section favorites-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('favorites')\">\n <i class=\"fa-solid fa-star section-icon\"></i>\n <span class=\"section-title\">Favorites</span>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"section-count\">({{ favoriteRecords.length + favoriteEntities.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"favoritesSectionExpanded\" [class.fa-chevron-right]=\"!favoritesSectionExpanded\"></i>\n </div>\n\n @if (favoritesSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (favoriteRecords.length + favoriteEntities.length === 0) {\n <div class=\"empty-section\">\n <span>No favorites yet</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (favorite of favoriteEntities; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n @for (favorite of favoriteRecords; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Recent Items Section -->\n <div class=\"section recent-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('recent')\">\n <i class=\"fa-solid fa-clock section-icon\"></i>\n <span class=\"section-title\">Recent</span>\n @if (filteredRecentItems.length > 0) {\n <span class=\"section-count\">({{ filteredRecentItems.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"recentSectionExpanded\" [class.fa-chevron-right]=\"!recentSectionExpanded\"></i>\n </div>\n\n @if (recentSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (filteredRecentItems.length === 0) {\n <div class=\"empty-section\">\n <span>No recent items</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (item of filteredRecentItems; track item.compositeKeyString) {\n <div class=\"nav-item\" (click)=\"onRecentClick(item)\" [title]=\"item.entityName + ' - ' + item.displayName\">\n <i [class]=\"getRecentItemIcon(item)\"></i>\n <div class=\"nav-item-content\">\n <span class=\"nav-item-label\">{{ item.displayName }}</span>\n <span class=\"nav-item-meta\">{{ formatTimestamp(item.timestamp) }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Entities Section (ng-tree) -->\n <div class=\"section entities-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('entities')\">\n <i class=\"fa-solid fa-database section-icon\"></i>\n <span class=\"section-title\">Entities</span>\n <span class=\"section-count\">({{ entities.length }})</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"entitiesSectionExpanded\" [class.fa-chevron-right]=\"!entitiesSectionExpanded\"></i>\n </div>\n\n @if (entitiesSectionExpanded) {\n <div class=\"section-content entity-tree-container\">\n <!-- Entity Search -->\n <div class=\"entity-search\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search entities...\"\n [(ngModel)]=\"entitySearchTerm\"\n (ngModelChange)=\"onEntitySearchChanged()\"\n />\n @if (entitySearchTerm) {\n <button class=\"clear-search\" (click)=\"clearEntitySearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <!-- Entity Tree -->\n <mj-tree\n #entityTree\n [BranchConfig]=\"treeBranchConfig\"\n [LeafConfig]=\"treeLeafConfig\"\n [SelectionMode]=\"'single'\"\n [SelectableTypes]=\"'leaf'\"\n [SelectedIDs]=\"selectedEntityIds\"\n [ShowIcons]=\"true\"\n [ShowExpandCollapseAll]=\"false\"\n [AnimateExpandCollapse]=\"true\"\n [EmptyMessage]=\"entitySearchTerm ? 'No matches for: ' + entitySearchTerm : 'No entities available'\"\n [EmptyIcon]=\"'fa-solid fa-database'\"\n (SelectionChange)=\"onTreeEntitySelected($event)\">\n </mj-tree>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Collapsed State - Show Icons Only -->\n <div class=\"collapsed-icons\">\n <button class=\"icon-btn\" title=\"Favorites\" (click)=\"onCollapsedIconClick('favorites')\">\n <i class=\"fa-solid fa-star\"></i>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"collapsed-badge\">{{ favoriteRecords.length + favoriteEntities.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Recent\" (click)=\"onCollapsedIconClick('recent')\">\n <i class=\"fa-solid fa-clock\"></i>\n @if (filteredRecentItems.length > 0) {\n <span class=\"collapsed-badge\">{{ filteredRecentItems.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Entities\" (click)=\"onCollapsedIconClick('entities')\">\n <i class=\"fa-solid fa-database\"></i>\n <span class=\"collapsed-badge\">{{ entities.length }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [".navigation-panel-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; /* Critical for nested flex scrolling */\n position: relative;\n background: var(--mj-bg-surface);\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.collapsed .collapse-toggle {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed .collapse-toggle:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.panel-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; /* Allow flex children to shrink below content size */\n}\n\n.section {\n flex-shrink: 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Scrollable sections (Favorites, Recent) - allow them to shrink and scroll */\n.section.favorites-section,\n.section.recent-section {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; /* Limit height so entities section has room */\n}\n\n.section.entities-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: var(--mj-bg-surface-card);\n}\n.section-header:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.section-icon {\n width: 20px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-right: 10px;\n}\n\n.section-title {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: var(--mj-text-muted);\n}\n\n.section-count {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon {\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 0.15s ease;\n}\n\n.section-content {\n padding: 8px 12px 12px 12px;\n background: var(--mj-bg-surface);\n}\n\n/* Scrollable section content for Favorites and Recent */\n.section-content.scrollable-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.scrollable-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.scrollable-list-inner {\n /* Inner container grows naturally based on content */\n}\n\n.entities-section .section-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow content to shrink */\n overflow: hidden;\n}\n\n.entity-tree-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.entity-tree-container mj-tree {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n.empty-section {\n padding: 20px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item:hover {\n background: var(--mj-bg-surface-card);\n}\n.nav-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n box-shadow: 0 1px 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n.nav-item.selected i {\n color: var(--mj-brand-primary);\n}\n.nav-item.selected .nav-item-label {\n font-weight: 600;\n}\n.nav-item i {\n width: 18px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label {\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.entity-search {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.search-input {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n background: var(--mj-bg-surface-card);\n transition: all 0.15s ease;\n}\n.search-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n.search-input::placeholder {\n color: var(--mj-text-muted);\n}\n\n.clear-search {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n}\n.clear-search:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n}\n\n.entity-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n.entity-list::-webkit-scrollbar-thumb:hover {\n background: var(--mj-border-strong);\n}\n\n.entity-list-inner {\n /* Inner container grows naturally based on content */\n /* Does not scroll - parent .entity-list handles scrolling */\n}\n\n.entity-item .nav-item-label {\n flex: 1;\n}\n\n/* ============================================\n NAV PANEL APPLICATION GROUPS\n ============================================ */\n\n.nav-app-group {\n margin-bottom: 2px;\n}\n\n.nav-app-group-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 10px;\n cursor: pointer;\n border-radius: 6px;\n transition: background 0.12s;\n user-select: none;\n}\n\n.nav-app-group-header:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.nav-app-group-icon {\n font-size: 12px;\n color: var(--mj-text-secondary);\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.nav-app-group-name {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--mj-text-secondary);\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-app-group-count {\n font-size: 10px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n padding: 1px 6px;\n border-radius: 8px;\n}\n\n.nav-app-group-chevron {\n font-size: 9px;\n color: var(--mj-text-muted);\n transition: transform 0.15s;\n}\n\n.nav-app-group-chevron.expanded {\n transform: rotate(90deg);\n}\n\n.nav-app-group-entities {\n padding-left: 8px;\n}\n\n.nav-app-group-entities .nav-item {\n padding: 8px 10px 8px 16px;\n}\n\n.collapsed-icons {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-secondary);\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n.icon-btn i {\n font-size: 16px;\n}\n\n.collapsed-badge {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n background: var(--mj-brand-primary);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n"] }]
|
|
639
588
|
}], null, { entities: [{
|
|
640
589
|
type: Input
|
|
641
590
|
}], selectedEntityName: [{
|
|
@@ -650,6 +599,8 @@ export class NavigationPanelComponent {
|
|
|
650
599
|
type: Input
|
|
651
600
|
}], appEntityGroups: [{
|
|
652
601
|
type: Input
|
|
602
|
+
}], applicationIdFilter: [{
|
|
603
|
+
type: Input
|
|
653
604
|
}], favoritesSectionExpanded: [{
|
|
654
605
|
type: Input
|
|
655
606
|
}], recentSectionExpanded: [{
|
|
@@ -672,6 +623,9 @@ export class NavigationPanelComponent {
|
|
|
672
623
|
type: Output
|
|
673
624
|
}], appGroupToggled: [{
|
|
674
625
|
type: Output
|
|
626
|
+
}], entityTree: [{
|
|
627
|
+
type: ViewChild,
|
|
628
|
+
args: ['entityTree']
|
|
675
629
|
}] }); })();
|
|
676
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent", filePath: "src/DataExplorer/components/navigation-panel/navigation-panel.component.ts", lineNumber:
|
|
630
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent", filePath: "src/DataExplorer/components/navigation-panel/navigation-panel.component.ts", lineNumber: 29 }); })();
|
|
677
631
|
//# sourceMappingURL=navigation-panel.component.js.map
|