@memberjunction/ng-dashboards 5.38.0 → 5.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -7
- package/dist/AI/components/agents/agent-configuration.component.js +199 -198
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +89 -856
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1353 -7841
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +235 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1735 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts +43 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.js +209 -0
- package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts +276 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
- package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +40 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js +402 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +122 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +752 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +166 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1384 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +70 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js +448 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +47 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js +220 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +293 -289
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +209 -208
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +130 -128
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +17 -17
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +550 -532
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
- package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js +14 -2
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/AI/services/cache-metrics.d.ts +50 -0
- package/dist/AI/services/cache-metrics.d.ts.map +1 -0
- package/dist/AI/services/cache-metrics.js +43 -0
- package/dist/AI/services/cache-metrics.js.map +1 -0
- package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
- package/dist/APIKeys/api-keys-resource.component.js +132 -131
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +141 -141
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +15 -15
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +2 -2
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +2 -2
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +2 -2
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +72 -50
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +103 -102
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +52 -51
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +39 -38
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +92 -89
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +18 -17
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -85
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +155 -150
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +245 -243
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +18 -17
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +2 -2
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +236 -229
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +390 -389
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +2 -2
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +2 -2
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +45 -44
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +525 -566
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +135 -134
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +443 -438
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +436 -427
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +1 -1
- package/dist/Testing/components/testing-runs.component.js +116 -115
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +6 -7
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +173 -172
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +116 -92
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +47 -35
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +40 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +1 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +7 -1
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +4 -5
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +7 -5
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +55 -54
|
@@ -28,54 +28,55 @@ function CredentialsListResourceComponent_Conditional_5_Template(rf, ctx) { if (
|
|
|
28
28
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
29
29
|
i0.ɵɵproperty("Count", ctx_r1.getExpiredCount());
|
|
30
30
|
} }
|
|
31
|
-
function
|
|
31
|
+
function CredentialsListResourceComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
32
32
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
33
33
|
i0.ɵɵelementStart(0, "button", 16);
|
|
34
|
-
i0.ɵɵlistener("click", function
|
|
34
|
+
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.createNewCredential()); });
|
|
35
35
|
i0.ɵɵelement(1, "i", 17);
|
|
36
|
-
i0.ɵɵ
|
|
37
|
-
i0.ɵɵ
|
|
36
|
+
i0.ɵɵelementStart(2, "span", 18);
|
|
37
|
+
i0.ɵɵtext(3, "New Credential");
|
|
38
|
+
i0.ɵɵelementEnd()();
|
|
38
39
|
} }
|
|
39
40
|
function CredentialsListResourceComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
40
41
|
i0.ɵɵelement(0, "mj-loading", 14);
|
|
41
42
|
} }
|
|
42
43
|
function CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
43
44
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
44
|
-
i0.ɵɵelementStart(0, "button",
|
|
45
|
+
i0.ɵɵelementStart(0, "button", 29);
|
|
45
46
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.bulkToggleActive(true)); });
|
|
46
|
-
i0.ɵɵelement(1, "i",
|
|
47
|
+
i0.ɵɵelement(1, "i", 30);
|
|
47
48
|
i0.ɵɵtext(2, " Activate ");
|
|
48
49
|
i0.ɵɵelementEnd();
|
|
49
50
|
} }
|
|
50
51
|
function CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
51
52
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
52
|
-
i0.ɵɵelementStart(0, "button",
|
|
53
|
+
i0.ɵɵelementStart(0, "button", 29);
|
|
53
54
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.bulkToggleActive(false)); });
|
|
54
|
-
i0.ɵɵelement(1, "i",
|
|
55
|
+
i0.ɵɵelement(1, "i", 31);
|
|
55
56
|
i0.ɵɵtext(2, " Deactivate ");
|
|
56
57
|
i0.ɵɵelementEnd();
|
|
57
58
|
} }
|
|
58
59
|
function CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
59
60
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
60
|
-
i0.ɵɵelementStart(0, "button",
|
|
61
|
+
i0.ɵɵelementStart(0, "button", 32);
|
|
61
62
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.bulkDelete()); });
|
|
62
|
-
i0.ɵɵelement(1, "i",
|
|
63
|
+
i0.ɵɵelement(1, "i", 33);
|
|
63
64
|
i0.ɵɵtext(2, " Delete ");
|
|
64
65
|
i0.ɵɵelementEnd();
|
|
65
66
|
} }
|
|
66
67
|
function CredentialsListResourceComponent_Conditional_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
67
68
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
68
|
-
i0.ɵɵelementStart(0, "div",
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "div", 23)(2, "span", 24);
|
|
69
70
|
i0.ɵɵtext(3);
|
|
70
71
|
i0.ɵɵelementEnd();
|
|
71
|
-
i0.ɵɵelementStart(4, "button",
|
|
72
|
+
i0.ɵɵelementStart(4, "button", 25);
|
|
72
73
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clearSelection()); });
|
|
73
74
|
i0.ɵɵtext(5, "Clear selection");
|
|
74
75
|
i0.ɵɵelementEnd()();
|
|
75
|
-
i0.ɵɵelementStart(6, "div",
|
|
76
|
-
i0.ɵɵconditionalCreate(7, CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_7_Template, 3, 0, "button",
|
|
77
|
-
i0.ɵɵconditionalCreate(8, CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_8_Template, 3, 0, "button",
|
|
78
|
-
i0.ɵɵconditionalCreate(9, CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_9_Template, 3, 0, "button",
|
|
76
|
+
i0.ɵɵelementStart(6, "div", 26);
|
|
77
|
+
i0.ɵɵconditionalCreate(7, CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_7_Template, 3, 0, "button", 27);
|
|
78
|
+
i0.ɵɵconditionalCreate(8, CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_8_Template, 3, 0, "button", 27);
|
|
79
|
+
i0.ɵɵconditionalCreate(9, CredentialsListResourceComponent_Conditional_16_Conditional_0_Conditional_9_Template, 3, 0, "button", 28);
|
|
79
80
|
i0.ɵɵelementEnd()();
|
|
80
81
|
} if (rf & 2) {
|
|
81
82
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -90,7 +91,7 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_0_Template(
|
|
|
90
91
|
} }
|
|
91
92
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
92
93
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
93
|
-
i0.ɵɵelementStart(0, "div",
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "input", 55);
|
|
94
95
|
i0.ɵɵlistener("change", function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_1_Template_input_change_1_listener() { i0.ɵɵrestoreView(_r9); const credential_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleSelection(credential_r10)); });
|
|
95
96
|
i0.ɵɵelementEnd()();
|
|
96
97
|
} if (rf & 2) {
|
|
@@ -101,7 +102,7 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Con
|
|
|
101
102
|
} }
|
|
102
103
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
103
104
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
104
|
-
i0.ɵɵelementStart(0, "button",
|
|
105
|
+
i0.ɵɵelementStart(0, "button", 56);
|
|
105
106
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_11_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r11); const credential_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleCredentialActive(credential_r10, $event)); });
|
|
106
107
|
i0.ɵɵelement(1, "i");
|
|
107
108
|
i0.ɵɵelementEnd();
|
|
@@ -113,20 +114,20 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Con
|
|
|
113
114
|
} }
|
|
114
115
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
115
116
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
116
|
-
i0.ɵɵelementStart(0, "button",
|
|
117
|
+
i0.ɵɵelementStart(0, "button", 57);
|
|
117
118
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_12_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r12); const credential_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.editCredential(credential_r10, $event)); });
|
|
118
|
-
i0.ɵɵelement(1, "i",
|
|
119
|
+
i0.ɵɵelement(1, "i", 58);
|
|
119
120
|
i0.ɵɵelementEnd();
|
|
120
121
|
} }
|
|
121
122
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
122
123
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
123
|
-
i0.ɵɵelementStart(0, "button",
|
|
124
|
+
i0.ɵɵelementStart(0, "button", 59);
|
|
124
125
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r13); const credential_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.deleteCredential(credential_r10, $event)); });
|
|
125
|
-
i0.ɵɵelement(1, "i",
|
|
126
|
+
i0.ɵɵelement(1, "i", 33);
|
|
126
127
|
i0.ɵɵelementEnd();
|
|
127
128
|
} }
|
|
128
129
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
129
|
-
i0.ɵɵelementStart(0, "p",
|
|
130
|
+
i0.ɵɵelementStart(0, "p", 48);
|
|
130
131
|
i0.ɵɵtext(1);
|
|
131
132
|
i0.ɵɵelementEnd();
|
|
132
133
|
} if (rf & 2) {
|
|
@@ -135,15 +136,15 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Con
|
|
|
135
136
|
i0.ɵɵtextInterpolate1(" ", credential_r10.Description, " ");
|
|
136
137
|
} }
|
|
137
138
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
-
i0.ɵɵelementStart(0, "div",
|
|
139
|
-
i0.ɵɵelement(1, "i",
|
|
139
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
140
|
+
i0.ɵɵelement(1, "i", 60);
|
|
140
141
|
i0.ɵɵelementStart(2, "span");
|
|
141
142
|
i0.ɵɵtext(3, "Default");
|
|
142
143
|
i0.ɵɵelementEnd()();
|
|
143
144
|
} }
|
|
144
145
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
-
i0.ɵɵelementStart(0, "div",
|
|
146
|
-
i0.ɵɵelement(1, "i",
|
|
146
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
147
|
+
i0.ɵɵelement(1, "i", 61);
|
|
147
148
|
i0.ɵɵelementStart(2, "span");
|
|
148
149
|
i0.ɵɵtext(3);
|
|
149
150
|
i0.ɵɵelementEnd()();
|
|
@@ -155,8 +156,8 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Con
|
|
|
155
156
|
i0.ɵɵtextInterpolate2("", ctx_r1.isExpired(credential_r10) ? "Expired" : "Expires", ": ", ctx_r1.formatDate(credential_r10.ExpiresAt));
|
|
156
157
|
} }
|
|
157
158
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
158
|
-
i0.ɵɵelementStart(0, "div",
|
|
159
|
-
i0.ɵɵelement(1, "i",
|
|
159
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
160
|
+
i0.ɵɵelement(1, "i", 62);
|
|
160
161
|
i0.ɵɵelementStart(2, "span");
|
|
161
162
|
i0.ɵɵtext(3);
|
|
162
163
|
i0.ɵɵelementEnd()();
|
|
@@ -167,8 +168,8 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Con
|
|
|
167
168
|
i0.ɵɵtextInterpolate1("Last used: ", ctx_r1.formatDate(credential_r10.LastUsedAt));
|
|
168
169
|
} }
|
|
169
170
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
170
|
-
i0.ɵɵelementStart(0, "div",
|
|
171
|
-
i0.ɵɵelement(1, "i",
|
|
171
|
+
i0.ɵɵelementStart(0, "div", 53);
|
|
172
|
+
i0.ɵɵelement(1, "i", 63);
|
|
172
173
|
i0.ɵɵtext(2);
|
|
173
174
|
i0.ɵɵelementEnd();
|
|
174
175
|
} if (rf & 2) {
|
|
@@ -178,37 +179,37 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Con
|
|
|
178
179
|
} }
|
|
179
180
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
180
181
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
181
|
-
i0.ɵɵelementStart(0, "div",
|
|
182
|
-
i0.ɵɵconditionalCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_1_Template, 2, 1, "div",
|
|
183
|
-
i0.ɵɵelementStart(2, "div",
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 35);
|
|
183
|
+
i0.ɵɵconditionalCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_1_Template, 2, 1, "div", 36);
|
|
184
|
+
i0.ɵɵelementStart(2, "div", 37)(3, "div", 38);
|
|
184
185
|
i0.ɵɵelement(4, "i");
|
|
185
186
|
i0.ɵɵelementEnd();
|
|
186
|
-
i0.ɵɵelementStart(5, "div",
|
|
187
|
+
i0.ɵɵelementStart(5, "div", 39)(6, "div", 40);
|
|
187
188
|
i0.ɵɵtext(7);
|
|
188
189
|
i0.ɵɵelementEnd();
|
|
189
|
-
i0.ɵɵelementStart(8, "div",
|
|
190
|
+
i0.ɵɵelementStart(8, "div", 41);
|
|
190
191
|
i0.ɵɵtext(9);
|
|
191
192
|
i0.ɵɵelementEnd()();
|
|
192
|
-
i0.ɵɵelementStart(10, "div",
|
|
193
|
-
i0.ɵɵconditionalCreate(11, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_11_Template, 2, 3, "button",
|
|
194
|
-
i0.ɵɵconditionalCreate(12, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_12_Template, 2, 0, "button",
|
|
195
|
-
i0.ɵɵconditionalCreate(13, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_13_Template, 2, 0, "button",
|
|
193
|
+
i0.ɵɵelementStart(10, "div", 42);
|
|
194
|
+
i0.ɵɵconditionalCreate(11, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_11_Template, 2, 3, "button", 43);
|
|
195
|
+
i0.ɵɵconditionalCreate(12, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_12_Template, 2, 0, "button", 44);
|
|
196
|
+
i0.ɵɵconditionalCreate(13, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_13_Template, 2, 0, "button", 45);
|
|
196
197
|
i0.ɵɵelementEnd()();
|
|
197
|
-
i0.ɵɵelementStart(14, "div",
|
|
198
|
+
i0.ɵɵelementStart(14, "div", 46);
|
|
198
199
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Template_div_click_14_listener() { const credential_r10 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.editCredential(credential_r10)); });
|
|
199
|
-
i0.ɵɵelementStart(15, "div",
|
|
200
|
+
i0.ɵɵelementStart(15, "div", 47);
|
|
200
201
|
i0.ɵɵelement(16, "i");
|
|
201
202
|
i0.ɵɵtext(17);
|
|
202
203
|
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵconditionalCreate(18, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_18_Template, 2, 1, "p",
|
|
204
|
-
i0.ɵɵelementStart(19, "div",
|
|
205
|
-
i0.ɵɵconditionalCreate(20, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_20_Template, 4, 0, "div",
|
|
206
|
-
i0.ɵɵconditionalCreate(21, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_21_Template, 4, 6, "div",
|
|
207
|
-
i0.ɵɵconditionalCreate(22, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_22_Template, 4, 1, "div",
|
|
204
|
+
i0.ɵɵconditionalCreate(18, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_18_Template, 2, 1, "p", 48);
|
|
205
|
+
i0.ɵɵelementStart(19, "div", 49);
|
|
206
|
+
i0.ɵɵconditionalCreate(20, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_20_Template, 4, 0, "div", 50);
|
|
207
|
+
i0.ɵɵconditionalCreate(21, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_21_Template, 4, 6, "div", 51);
|
|
208
|
+
i0.ɵɵconditionalCreate(22, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_22_Template, 4, 1, "div", 50);
|
|
208
209
|
i0.ɵɵelementEnd()();
|
|
209
|
-
i0.ɵɵelementStart(23, "div",
|
|
210
|
-
i0.ɵɵconditionalCreate(24, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_24_Template, 3, 1, "div",
|
|
211
|
-
i0.ɵɵelementStart(25, "div",
|
|
210
|
+
i0.ɵɵelementStart(23, "div", 52);
|
|
211
|
+
i0.ɵɵconditionalCreate(24, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Conditional_24_Template, 3, 1, "div", 53);
|
|
212
|
+
i0.ɵɵelementStart(25, "div", 54);
|
|
212
213
|
i0.ɵɵtext(26);
|
|
213
214
|
i0.ɵɵelementEnd()()();
|
|
214
215
|
} if (rf & 2) {
|
|
@@ -251,8 +252,8 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Tem
|
|
|
251
252
|
i0.ɵɵtextInterpolate1(" Created ", ctx_r1.formatDate(credential_r10.__mj_CreatedAt), " ");
|
|
252
253
|
} }
|
|
253
254
|
function CredentialsListResourceComponent_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
-
i0.ɵɵelementStart(0, "div",
|
|
255
|
-
i0.ɵɵrepeaterCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Template, 27, 25, "div",
|
|
255
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
256
|
+
i0.ɵɵrepeaterCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_1_For_2_Template, 27, 25, "div", 34, i0.ɵɵrepeaterTrackByIdentity);
|
|
256
257
|
i0.ɵɵelementEnd();
|
|
257
258
|
} if (rf & 2) {
|
|
258
259
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -261,7 +262,7 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_1_Template(
|
|
|
261
262
|
} }
|
|
262
263
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
263
264
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
264
|
-
i0.ɵɵelementStart(0, "th",
|
|
265
|
+
i0.ɵɵelementStart(0, "th", 65)(1, "input", 55);
|
|
265
266
|
i0.ɵɵlistener("change", function CredentialsListResourceComponent_Conditional_16_Conditional_2_Conditional_4_Template_input_change_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleSelectAll()); });
|
|
266
267
|
i0.ɵɵelementEnd()();
|
|
267
268
|
} if (rf & 2) {
|
|
@@ -271,7 +272,7 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_2_Condition
|
|
|
271
272
|
} }
|
|
272
273
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
273
274
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
274
|
-
i0.ɵɵelementStart(0, "td",
|
|
275
|
+
i0.ɵɵelementStart(0, "td", 65)(1, "input", 55);
|
|
275
276
|
i0.ɵɵlistener("change", function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_1_Template_input_change_1_listener() { i0.ɵɵrestoreView(_r16); const credential_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleSelection(credential_r17)); });
|
|
276
277
|
i0.ɵɵelementEnd()();
|
|
277
278
|
} if (rf & 2) {
|
|
@@ -281,7 +282,7 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Co
|
|
|
281
282
|
i0.ɵɵproperty("checked", ctx_r1.selectedCredentials.has(credential_r17.ID));
|
|
282
283
|
} }
|
|
283
284
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
284
|
-
i0.ɵɵelementStart(0, "span",
|
|
285
|
+
i0.ɵɵelementStart(0, "span", 78);
|
|
285
286
|
i0.ɵɵtext(1);
|
|
286
287
|
i0.ɵɵelementEnd();
|
|
287
288
|
} if (rf & 2) {
|
|
@@ -290,12 +291,12 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Co
|
|
|
290
291
|
i0.ɵɵtextInterpolate(credential_r17.Description);
|
|
291
292
|
} }
|
|
292
293
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
293
|
-
i0.ɵɵelementStart(0, "span",
|
|
294
|
+
i0.ɵɵelementStart(0, "span", 79);
|
|
294
295
|
i0.ɵɵtext(1, "Default");
|
|
295
296
|
i0.ɵɵelementEnd();
|
|
296
297
|
} }
|
|
297
298
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
298
|
-
i0.ɵɵelementStart(0, "span",
|
|
299
|
+
i0.ɵɵelementStart(0, "span", 80);
|
|
299
300
|
i0.ɵɵtext(1);
|
|
300
301
|
i0.ɵɵelementEnd();
|
|
301
302
|
} if (rf & 2) {
|
|
@@ -310,7 +311,7 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Co
|
|
|
310
311
|
} }
|
|
311
312
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
312
313
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
313
|
-
i0.ɵɵelementStart(0, "button",
|
|
314
|
+
i0.ɵɵelementStart(0, "button", 86);
|
|
314
315
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_24_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r18); const credential_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleCredentialActive(credential_r17, $event)); });
|
|
315
316
|
i0.ɵɵelement(1, "i");
|
|
316
317
|
i0.ɵɵelementEnd();
|
|
@@ -322,53 +323,53 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Co
|
|
|
322
323
|
} }
|
|
323
324
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
324
325
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
325
|
-
i0.ɵɵelementStart(0, "button",
|
|
326
|
+
i0.ɵɵelementStart(0, "button", 87);
|
|
326
327
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_25_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r19); const credential_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.editCredential(credential_r17, $event)); });
|
|
327
|
-
i0.ɵɵelement(1, "i",
|
|
328
|
+
i0.ɵɵelement(1, "i", 58);
|
|
328
329
|
i0.ɵɵelementEnd();
|
|
329
330
|
} }
|
|
330
331
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
331
332
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
332
|
-
i0.ɵɵelementStart(0, "button",
|
|
333
|
+
i0.ɵɵelementStart(0, "button", 88);
|
|
333
334
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_26_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r20); const credential_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.deleteCredential(credential_r17, $event)); });
|
|
334
|
-
i0.ɵɵelement(1, "i",
|
|
335
|
+
i0.ɵɵelement(1, "i", 33);
|
|
335
336
|
i0.ɵɵelementEnd();
|
|
336
337
|
} }
|
|
337
338
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Template(rf, ctx) { if (rf & 1) {
|
|
338
339
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
339
340
|
i0.ɵɵelementStart(0, "tr");
|
|
340
|
-
i0.ɵɵconditionalCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_1_Template, 2, 1, "td",
|
|
341
|
-
i0.ɵɵelementStart(2, "td",
|
|
341
|
+
i0.ɵɵconditionalCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_1_Template, 2, 1, "td", 65);
|
|
342
|
+
i0.ɵɵelementStart(2, "td", 74);
|
|
342
343
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Template_td_click_2_listener() { const credential_r17 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.editCredential(credential_r17)); });
|
|
343
|
-
i0.ɵɵelementStart(3, "div",
|
|
344
|
-
i0.ɵɵelement(4, "i",
|
|
345
|
-
i0.ɵɵelementStart(5, "div",
|
|
344
|
+
i0.ɵɵelementStart(3, "div", 75);
|
|
345
|
+
i0.ɵɵelement(4, "i", 76);
|
|
346
|
+
i0.ɵɵelementStart(5, "div", 77)(6, "span", 40);
|
|
346
347
|
i0.ɵɵtext(7);
|
|
347
348
|
i0.ɵɵelementEnd();
|
|
348
|
-
i0.ɵɵconditionalCreate(8, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_8_Template, 2, 1, "span",
|
|
349
|
+
i0.ɵɵconditionalCreate(8, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_8_Template, 2, 1, "span", 78);
|
|
349
350
|
i0.ɵɵelementEnd();
|
|
350
|
-
i0.ɵɵconditionalCreate(9, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_9_Template, 2, 0, "span",
|
|
351
|
+
i0.ɵɵconditionalCreate(9, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_9_Template, 2, 0, "span", 79);
|
|
351
352
|
i0.ɵɵelementEnd()();
|
|
352
|
-
i0.ɵɵelementStart(10, "td",
|
|
353
|
+
i0.ɵɵelementStart(10, "td", 67);
|
|
353
354
|
i0.ɵɵtext(11);
|
|
354
355
|
i0.ɵɵelementEnd();
|
|
355
|
-
i0.ɵɵelementStart(12, "td",
|
|
356
|
-
i0.ɵɵconditionalCreate(13, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_13_Template, 2, 1, "span",
|
|
356
|
+
i0.ɵɵelementStart(12, "td", 68);
|
|
357
|
+
i0.ɵɵconditionalCreate(13, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_13_Template, 2, 1, "span", 80);
|
|
357
358
|
i0.ɵɵconditionalCreate(14, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_14_Template, 2, 0, "span");
|
|
358
359
|
i0.ɵɵelementEnd();
|
|
359
|
-
i0.ɵɵelementStart(15, "td",
|
|
360
|
+
i0.ɵɵelementStart(15, "td", 69)(16, "span", 81);
|
|
360
361
|
i0.ɵɵtext(17);
|
|
361
362
|
i0.ɵɵelementEnd()();
|
|
362
|
-
i0.ɵɵelementStart(18, "td",
|
|
363
|
+
i0.ɵɵelementStart(18, "td", 70);
|
|
363
364
|
i0.ɵɵtext(19);
|
|
364
365
|
i0.ɵɵelementEnd();
|
|
365
|
-
i0.ɵɵelementStart(20, "td",
|
|
366
|
+
i0.ɵɵelementStart(20, "td", 71);
|
|
366
367
|
i0.ɵɵtext(21);
|
|
367
368
|
i0.ɵɵelementEnd();
|
|
368
|
-
i0.ɵɵelementStart(22, "td",
|
|
369
|
-
i0.ɵɵconditionalCreate(24, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_24_Template, 2, 3, "button",
|
|
370
|
-
i0.ɵɵconditionalCreate(25, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_25_Template, 2, 0, "button",
|
|
371
|
-
i0.ɵɵconditionalCreate(26, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_26_Template, 2, 0, "button",
|
|
369
|
+
i0.ɵɵelementStart(22, "td", 72)(23, "div", 82);
|
|
370
|
+
i0.ɵɵconditionalCreate(24, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_24_Template, 2, 3, "button", 83);
|
|
371
|
+
i0.ɵɵconditionalCreate(25, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_25_Template, 2, 0, "button", 84);
|
|
372
|
+
i0.ɵɵconditionalCreate(26, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Conditional_26_Template, 2, 0, "button", 85);
|
|
372
373
|
i0.ɵɵelementEnd()()();
|
|
373
374
|
} if (rf & 2) {
|
|
374
375
|
const credential_r17 = ctx.$implicit;
|
|
@@ -409,31 +410,31 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Te
|
|
|
409
410
|
i0.ɵɵconditional(ctx_r1.UserCanDelete ? 26 : -1);
|
|
410
411
|
} }
|
|
411
412
|
function CredentialsListResourceComponent_Conditional_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
412
|
-
i0.ɵɵelementStart(0, "div",
|
|
413
|
-
i0.ɵɵconditionalCreate(4, CredentialsListResourceComponent_Conditional_16_Conditional_2_Conditional_4_Template, 2, 1, "th",
|
|
414
|
-
i0.ɵɵelementStart(5, "th",
|
|
413
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "table", 64)(2, "thead")(3, "tr");
|
|
414
|
+
i0.ɵɵconditionalCreate(4, CredentialsListResourceComponent_Conditional_16_Conditional_2_Conditional_4_Template, 2, 1, "th", 65);
|
|
415
|
+
i0.ɵɵelementStart(5, "th", 66);
|
|
415
416
|
i0.ɵɵtext(6, "Name");
|
|
416
417
|
i0.ɵɵelementEnd();
|
|
417
|
-
i0.ɵɵelementStart(7, "th",
|
|
418
|
+
i0.ɵɵelementStart(7, "th", 67);
|
|
418
419
|
i0.ɵɵtext(8, "Type");
|
|
419
420
|
i0.ɵɵelementEnd();
|
|
420
|
-
i0.ɵɵelementStart(9, "th",
|
|
421
|
+
i0.ɵɵelementStart(9, "th", 68);
|
|
421
422
|
i0.ɵɵtext(10, "Category");
|
|
422
423
|
i0.ɵɵelementEnd();
|
|
423
|
-
i0.ɵɵelementStart(11, "th",
|
|
424
|
+
i0.ɵɵelementStart(11, "th", 69);
|
|
424
425
|
i0.ɵɵtext(12, "Status");
|
|
425
426
|
i0.ɵɵelementEnd();
|
|
426
|
-
i0.ɵɵelementStart(13, "th",
|
|
427
|
+
i0.ɵɵelementStart(13, "th", 70);
|
|
427
428
|
i0.ɵɵtext(14, "Expires");
|
|
428
429
|
i0.ɵɵelementEnd();
|
|
429
|
-
i0.ɵɵelementStart(15, "th",
|
|
430
|
+
i0.ɵɵelementStart(15, "th", 71);
|
|
430
431
|
i0.ɵɵtext(16, "Last Used");
|
|
431
432
|
i0.ɵɵelementEnd();
|
|
432
|
-
i0.ɵɵelementStart(17, "th",
|
|
433
|
+
i0.ɵɵelementStart(17, "th", 72);
|
|
433
434
|
i0.ɵɵtext(18, "Actions");
|
|
434
435
|
i0.ɵɵelementEnd()()();
|
|
435
436
|
i0.ɵɵelementStart(19, "tbody");
|
|
436
|
-
i0.ɵɵrepeaterCreate(20, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Template, 27, 25, "tr",
|
|
437
|
+
i0.ɵɵrepeaterCreate(20, CredentialsListResourceComponent_Conditional_16_Conditional_2_For_21_Template, 27, 25, "tr", 73, i0.ɵɵrepeaterTrackByIdentity);
|
|
437
438
|
i0.ɵɵelementEnd()()();
|
|
438
439
|
} if (rf & 2) {
|
|
439
440
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -446,7 +447,7 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_3_Condition
|
|
|
446
447
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
447
448
|
i0.ɵɵelementStart(0, "p");
|
|
448
449
|
i0.ɵɵtext(1, " No credentials match your current filters. ");
|
|
449
|
-
i0.ɵɵelementStart(2, "button",
|
|
450
|
+
i0.ɵɵelementStart(2, "button", 25);
|
|
450
451
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_3_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.clearFilters()); });
|
|
451
452
|
i0.ɵɵtext(3, "Clear filters");
|
|
452
453
|
i0.ɵɵelementEnd()();
|
|
@@ -458,22 +459,22 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_3_Condition
|
|
|
458
459
|
} }
|
|
459
460
|
function CredentialsListResourceComponent_Conditional_16_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
460
461
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
461
|
-
i0.ɵɵelementStart(0, "button",
|
|
462
|
+
i0.ɵɵelementStart(0, "button", 92);
|
|
462
463
|
i0.ɵɵlistener("click", function CredentialsListResourceComponent_Conditional_16_Conditional_3_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.createNewCredential()); });
|
|
463
464
|
i0.ɵɵelement(1, "i", 17);
|
|
464
465
|
i0.ɵɵtext(2, " Create Credential ");
|
|
465
466
|
i0.ɵɵelementEnd();
|
|
466
467
|
} }
|
|
467
468
|
function CredentialsListResourceComponent_Conditional_16_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
468
|
-
i0.ɵɵelementStart(0, "div",
|
|
469
|
-
i0.ɵɵelement(2, "i",
|
|
469
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "div", 89);
|
|
470
|
+
i0.ɵɵelement(2, "i", 90);
|
|
470
471
|
i0.ɵɵelementEnd();
|
|
471
472
|
i0.ɵɵelementStart(3, "h3");
|
|
472
473
|
i0.ɵɵtext(4, "No Credentials Found");
|
|
473
474
|
i0.ɵɵelementEnd();
|
|
474
475
|
i0.ɵɵconditionalCreate(5, CredentialsListResourceComponent_Conditional_16_Conditional_3_Conditional_5_Template, 4, 0, "p");
|
|
475
476
|
i0.ɵɵconditionalCreate(6, CredentialsListResourceComponent_Conditional_16_Conditional_3_Conditional_6_Template, 2, 0, "p");
|
|
476
|
-
i0.ɵɵconditionalCreate(7, CredentialsListResourceComponent_Conditional_16_Conditional_3_Conditional_7_Template, 3, 0, "button",
|
|
477
|
+
i0.ɵɵconditionalCreate(7, CredentialsListResourceComponent_Conditional_16_Conditional_3_Conditional_7_Template, 3, 0, "button", 91);
|
|
477
478
|
i0.ɵɵelementEnd();
|
|
478
479
|
} if (rf & 2) {
|
|
479
480
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -485,10 +486,10 @@ function CredentialsListResourceComponent_Conditional_16_Conditional_3_Template(
|
|
|
485
486
|
i0.ɵɵconditional(ctx_r1.UserCanCreate && !ctx_r1.searchText && !ctx_r1.selectedTypeFilter && !ctx_r1.selectedStatusFilter ? 7 : -1);
|
|
486
487
|
} }
|
|
487
488
|
function CredentialsListResourceComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
488
|
-
i0.ɵɵconditionalCreate(0, CredentialsListResourceComponent_Conditional_16_Conditional_0_Template, 10, 4, "div",
|
|
489
|
-
i0.ɵɵconditionalCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_1_Template, 3, 0, "div",
|
|
490
|
-
i0.ɵɵconditionalCreate(2, CredentialsListResourceComponent_Conditional_16_Conditional_2_Template, 22, 1, "div",
|
|
491
|
-
i0.ɵɵconditionalCreate(3, CredentialsListResourceComponent_Conditional_16_Conditional_3_Template, 8, 3, "div",
|
|
489
|
+
i0.ɵɵconditionalCreate(0, CredentialsListResourceComponent_Conditional_16_Conditional_0_Template, 10, 4, "div", 19);
|
|
490
|
+
i0.ɵɵconditionalCreate(1, CredentialsListResourceComponent_Conditional_16_Conditional_1_Template, 3, 0, "div", 20);
|
|
491
|
+
i0.ɵɵconditionalCreate(2, CredentialsListResourceComponent_Conditional_16_Conditional_2_Template, 22, 1, "div", 21);
|
|
492
|
+
i0.ɵɵconditionalCreate(3, CredentialsListResourceComponent_Conditional_16_Conditional_3_Template, 8, 3, "div", 22);
|
|
492
493
|
} if (rf & 2) {
|
|
493
494
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
494
495
|
i0.ɵɵconditional(ctx_r1.selectedCredentials.size > 0 ? 0 : -1);
|
|
@@ -1163,28 +1164,28 @@ let CredentialsListResourceComponent = class CredentialsListResourceComponent ex
|
|
|
1163
1164
|
} if (rf & 2) {
|
|
1164
1165
|
let _t;
|
|
1165
1166
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editPanel = _t.first);
|
|
1166
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 16, consts: [["editPanel", ""], ["Title", "Credentials", "Icon", "fa-solid fa-key"], ["meta", ""], ["Label", "credentials", 3, "Count", "Total"], ["Icon", "fa-solid fa-clock", "Label", "expiring", "Variant", "warning", 3, "Count"], ["Icon", "fa-solid fa-exclamation-circle", "Label", "expired", "Variant", "error", 3, "Count"], ["actions", ""], [3, "
|
|
1167
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 16, consts: [["editPanel", ""], ["Title", "Credentials", "Icon", "fa-solid fa-key"], ["meta", ""], ["Label", "credentials", 3, "Count", "Total"], ["Icon", "fa-solid fa-clock", "Label", "expiring", "Variant", "warning", 3, "Count"], ["Icon", "fa-solid fa-exclamation-circle", "Label", "expired", "Variant", "error", 3, "Count"], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm"], ["toolbar", ""], ["Placeholder", "Search credentials...", 3, "ValueChange", "Value"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "KeyChange", "Options", "ActiveKey"], ["text", "Loading credentials..."], [3, "saved", "deleted", "credentialTypes"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "action-btn-label"], [1, "bulk-actions"], [1, "credentials-grid"], [1, "credentials-table-container"], [1, "empty-state"], [1, "bulk-info"], [1, "bulk-count"], [1, "btn-link", 3, "click"], [1, "bulk-buttons"], [1, "btn-bulk"], [1, "btn-bulk", "danger"], [1, "btn-bulk", 3, "click"], [1, "fa-solid", "fa-toggle-on"], [1, "fa-solid", "fa-toggle-off"], [1, "btn-bulk", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "credential-card", 3, "selected", "expired", "expiring"], [1, "credential-card"], [1, "card-select"], [1, "card-header"], [1, "card-icon", 3, "ngClass"], [1, "card-title"], [1, "credential-name"], [1, "credential-type"], [1, "card-actions"], ["mjButton", "", "variant", "flat", "size", "sm", 3, "title"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete"], [1, "card-body", 3, "click"], [1, "status-badge", 3, "ngClass"], [1, "credential-description"], [1, "credential-meta"], [1, "meta-item"], [1, "meta-item", 3, "warning", "danger"], [1, "card-footer"], [1, "category-tag"], [1, "created-info"], ["type", "checkbox", 3, "change", "checked"], ["mjButton", "", "variant", "flat", "size", "sm", 3, "click", "title"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete", 3, "click"], [1, "fa-solid", "fa-star"], [1, "fa-solid", "fa-calendar"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-folder"], [1, "credentials-table"], [1, "col-select"], [1, "col-name"], [1, "col-type"], [1, "col-category"], [1, "col-status"], [1, "col-expires"], [1, "col-used"], [1, "col-actions"], [3, "selected", "expired"], [1, "col-name", 3, "click"], [1, "name-cell"], [3, "ngClass"], [1, "name-info"], [1, "credential-desc"], [1, "default-badge"], [1, "category-pill"], [1, "status-pill", 3, "ngClass"], [1, "table-actions"], [1, "table-action-btn", 3, "title"], ["title", "Edit", 1, "table-action-btn"], ["title", "Delete", 1, "table-action-btn", "danger"], [1, "table-action-btn", 3, "click", "title"], ["title", "Edit", 1, "table-action-btn", 3, "click"], ["title", "Delete", 1, "table-action-btn", "danger", 3, "click"], [1, "empty-icon"], [1, "fa-solid", "fa-key"], [1, "btn-primary"], [1, "btn-primary", 3, "click"]], template: function CredentialsListResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1167
1168
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
1168
1169
|
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1)(2, "div", 2);
|
|
1169
1170
|
i0.ɵɵelement(3, "mj-stat-badge", 3);
|
|
1170
1171
|
i0.ɵɵconditionalCreate(4, CredentialsListResourceComponent_Conditional_4_Template, 1, 1, "mj-stat-badge", 4);
|
|
1171
1172
|
i0.ɵɵconditionalCreate(5, CredentialsListResourceComponent_Conditional_5_Template, 1, 1, "mj-stat-badge", 5);
|
|
1172
1173
|
i0.ɵɵelementEnd();
|
|
1173
|
-
i0.ɵɵelementStart(6, "div", 6)(7, "mj-
|
|
1174
|
-
i0.ɵɵlistener("
|
|
1175
|
-
i0.ɵɵelementStart(8, "mj-filter-panel", 8);
|
|
1176
|
-
i0.ɵɵlistener("ValuesChange", function CredentialsListResourceComponent_Template_mj_filter_panel_ValuesChange_8_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFilterValuesChange($event)); })("Reset", function CredentialsListResourceComponent_Template_mj_filter_panel_Reset_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
|
|
1177
|
-
i0.ɵɵelementEnd()();
|
|
1178
|
-
i0.ɵɵelementStart(9, "mj-view-toggle", 9);
|
|
1179
|
-
i0.ɵɵlistener("KeyChange", function CredentialsListResourceComponent_Template_mj_view_toggle_KeyChange_9_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.setViewMode($event)); });
|
|
1174
|
+
i0.ɵɵelementStart(6, "div", 6)(7, "mj-refresh-button", 7);
|
|
1175
|
+
i0.ɵɵlistener("Clicked", function CredentialsListResourceComponent_Template_mj_refresh_button_Clicked_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.refresh()); });
|
|
1180
1176
|
i0.ɵɵelementEnd();
|
|
1181
|
-
i0.ɵɵ
|
|
1182
|
-
i0.ɵɵlistener("Clicked", function CredentialsListResourceComponent_Template_mj_refresh_button_Clicked_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.refresh()); });
|
|
1177
|
+
i0.ɵɵconditionalCreate(8, CredentialsListResourceComponent_Conditional_8_Template, 4, 0, "button", 8);
|
|
1183
1178
|
i0.ɵɵelementEnd();
|
|
1184
|
-
i0.ɵɵ
|
|
1179
|
+
i0.ɵɵelementStart(9, "div", 9)(10, "mj-page-search", 10);
|
|
1180
|
+
i0.ɵɵlistener("ValueChange", function CredentialsListResourceComponent_Template_mj_page_search_ValueChange_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSearchChange($event)); });
|
|
1185
1181
|
i0.ɵɵelementEnd();
|
|
1186
|
-
i0.ɵɵelementStart(
|
|
1187
|
-
i0.ɵɵlistener("
|
|
1182
|
+
i0.ɵɵelementStart(11, "mj-filter-popover", 11);
|
|
1183
|
+
i0.ɵɵlistener("ClearAllRequested", function CredentialsListResourceComponent_Template_mj_filter_popover_ClearAllRequested_11_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
|
|
1184
|
+
i0.ɵɵelementStart(12, "mj-filter-panel", 12);
|
|
1185
|
+
i0.ɵɵlistener("ValuesChange", function CredentialsListResourceComponent_Template_mj_filter_panel_ValuesChange_12_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFilterValuesChange($event)); })("Reset", function CredentialsListResourceComponent_Template_mj_filter_panel_Reset_12_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
|
|
1186
|
+
i0.ɵɵelementEnd()();
|
|
1187
|
+
i0.ɵɵelementStart(13, "mj-view-toggle", 13);
|
|
1188
|
+
i0.ɵɵlistener("KeyChange", function CredentialsListResourceComponent_Template_mj_view_toggle_KeyChange_13_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.setViewMode($event)); });
|
|
1188
1189
|
i0.ɵɵelementEnd()()();
|
|
1189
1190
|
i0.ɵɵelementStart(14, "mj-page-body");
|
|
1190
1191
|
i0.ɵɵconditionalCreate(15, CredentialsListResourceComponent_Conditional_15_Template, 1, 0, "mj-loading", 14);
|
|
@@ -1200,17 +1201,17 @@ let CredentialsListResourceComponent = class CredentialsListResourceComponent ex
|
|
|
1200
1201
|
i0.ɵɵadvance();
|
|
1201
1202
|
i0.ɵɵconditional(ctx.getExpiredCount() > 0 ? 5 : -1);
|
|
1202
1203
|
i0.ɵɵadvance(2);
|
|
1204
|
+
i0.ɵɵproperty("Loading", ctx.isLoading);
|
|
1205
|
+
i0.ɵɵadvance();
|
|
1206
|
+
i0.ɵɵconditional(ctx.UserCanCreate ? 8 : -1);
|
|
1207
|
+
i0.ɵɵadvance(2);
|
|
1208
|
+
i0.ɵɵproperty("Value", ctx.searchText);
|
|
1209
|
+
i0.ɵɵadvance();
|
|
1203
1210
|
i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
|
|
1204
1211
|
i0.ɵɵadvance();
|
|
1205
1212
|
i0.ɵɵproperty("Fields", ctx.FilterFields)("Values", ctx.FilterValues);
|
|
1206
1213
|
i0.ɵɵadvance();
|
|
1207
1214
|
i0.ɵɵproperty("Options", ctx.viewOptions)("ActiveKey", ctx.viewMode);
|
|
1208
|
-
i0.ɵɵadvance();
|
|
1209
|
-
i0.ɵɵproperty("Loading", ctx.isLoading);
|
|
1210
|
-
i0.ɵɵadvance();
|
|
1211
|
-
i0.ɵɵconditional(ctx.UserCanCreate ? 11 : -1);
|
|
1212
|
-
i0.ɵɵadvance(2);
|
|
1213
|
-
i0.ɵɵproperty("Value", ctx.searchText);
|
|
1214
1215
|
i0.ɵɵadvance(2);
|
|
1215
1216
|
i0.ɵɵconditional(ctx.isLoading ? 15 : -1);
|
|
1216
1217
|
i0.ɵɵadvance();
|
|
@@ -1225,7 +1226,7 @@ CredentialsListResourceComponent = __decorate([
|
|
|
1225
1226
|
export { CredentialsListResourceComponent };
|
|
1226
1227
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsListResourceComponent, [{
|
|
1227
1228
|
type: Component,
|
|
1228
|
-
args: [{ standalone: false, selector: 'mj-credentials-list-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Credentials\"\n Icon=\"fa-solid fa-key\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredCredentials.length\"\n [Total]=\"credentials.length\"\n Label=\"credentials\">\n </mj-stat-badge>\n @if (getExpiringSoonCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-clock\"\n [Count]=\"getExpiringSoonCount()\"\n Label=\"expiring\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n @if (getExpiredCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-exclamation-circle\"\n [Count]=\"getExpiredCount()\"\n Label=\"expired\"\n Variant=\"error\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"viewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n @if (UserCanCreate) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i> New Credential\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search credentials...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (isLoading) {\n <mj-loading text=\"Loading credentials...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Bulk Actions Bar -->\n @if (selectedCredentials.size > 0) {\n <div class=\"bulk-actions\">\n <div class=\"bulk-info\">\n <span class=\"bulk-count\">{{selectedCredentials.size}} selected</span>\n <button class=\"btn-link\" (click)=\"clearSelection()\">Clear selection</button>\n </div>\n <div class=\"bulk-buttons\">\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(true)\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n Activate\n </button>\n }\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(false)\">\n <i class=\"fa-solid fa-toggle-off\"></i>\n Deactivate\n </button>\n }\n @if (UserCanDelete) {\n <button class=\"btn-bulk danger\" (click)=\"bulkDelete()\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </button>\n }\n </div>\n </div>\n }\n <!-- Grid View -->\n @if (viewMode === 'grid' && filteredCredentials.length > 0) {\n <div class=\"credentials-grid\">\n @for (credential of filteredCredentials; track credential) {\n <div\n class=\"credential-card\"\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n [class.expiring]=\"isExpiringSoon(credential)\"\n >\n <!-- Selection Checkbox -->\n @if (UserCanUpdate || UserCanDelete) {\n <div class=\"card-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </div>\n }\n <div class=\"card-header\">\n <div class=\"card-icon\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"card-title\">\n <div class=\"credential-name\">{{credential.Name}}</div>\n <div class=\"credential-type\">{{credential.CredentialType || 'Unknown Type'}}</div>\n </div>\n <div class=\"card-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\">\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"card-body\" (click)=\"editCredential(credential)\">\n <div class=\"status-badge\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"getStatusIcon(credential)\"></i>\n {{getStatusLabel(credential)}}\n </div>\n @if (credential.Description) {\n <p class=\"credential-description\">\n {{credential.Description}}\n </p>\n }\n <div class=\"credential-meta\">\n @if (credential.IsDefault) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-star\"></i>\n <span>Default</span>\n </div>\n }\n @if (credential.ExpiresAt) {\n <div class=\"meta-item\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n <i class=\"fa-solid fa-calendar\"></i>\n <span>{{isExpired(credential) ? 'Expired' : 'Expires'}}: {{formatDate(credential.ExpiresAt)}}</span>\n </div>\n }\n @if (credential.LastUsedAt) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>Last used: {{formatDate(credential.LastUsedAt)}}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"card-footer\">\n @if (credential.Category) {\n <div class=\"category-tag\">\n <i class=\"fa-solid fa-folder\"></i>\n {{credential.Category}}\n </div>\n }\n <div class=\"created-info\">\n Created {{formatDate(credential.__mj_CreatedAt)}}\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- List View -->\n @if (viewMode === 'list' && filteredCredentials.length > 0) {\n <div class=\"credentials-table-container\">\n <table class=\"credentials-table\">\n <thead>\n <tr>\n @if (UserCanUpdate || UserCanDelete) {\n <th class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"isAllSelected()\"\n (change)=\"toggleSelectAll()\"\n />\n </th>\n }\n <th class=\"col-name\">Name</th>\n <th class=\"col-type\">Type</th>\n <th class=\"col-category\">Category</th>\n <th class=\"col-status\">Status</th>\n <th class=\"col-expires\">Expires</th>\n <th class=\"col-used\">Last Used</th>\n <th class=\"col-actions\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (credential of filteredCredentials; track credential) {\n <tr\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n >\n @if (UserCanUpdate || UserCanDelete) {\n <td class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </td>\n }\n <td class=\"col-name\" (click)=\"editCredential(credential)\">\n <div class=\"name-cell\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\" [ngClass]=\"getStatusClass(credential)\"></i>\n <div class=\"name-info\">\n <span class=\"credential-name\">{{credential.Name}}</span>\n @if (credential.Description) {\n <span class=\"credential-desc\">{{credential.Description}}</span>\n }\n </div>\n @if (credential.IsDefault) {\n <span class=\"default-badge\">Default</span>\n }\n </div>\n </td>\n <td class=\"col-type\">{{credential.CredentialType || '-'}}</td>\n <td class=\"col-category\">\n @if (credential.Category) {\n <span class=\"category-pill\">{{credential.Category}}</span>\n }\n @if (!credential.Category) {\n <span>-</span>\n }\n </td>\n <td class=\"col-status\">\n <span class=\"status-pill\" [ngClass]=\"getStatusClass(credential)\">\n {{getStatusLabel(credential)}}\n </span>\n </td>\n <td class=\"col-expires\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n {{credential.ExpiresAt ? formatDate(credential.ExpiresAt) : 'Never'}}\n </td>\n <td class=\"col-used\">\n {{credential.LastUsedAt ? formatDate(credential.LastUsedAt) : 'Never'}}\n </td>\n <td class=\"col-actions\">\n <div class=\"table-actions\">\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\"\n >\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button\n class=\"table-action-btn danger\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- Empty State -->\n @if (filteredCredentials.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-key\"></i>\n </div>\n <h3>No Credentials Found</h3>\n @if (searchText || selectedTypeFilter || selectedStatusFilter) {\n <p>\n No credentials match your current filters.\n <button class=\"btn-link\" (click)=\"clearFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedTypeFilter && !selectedStatusFilter) {\n <p>\n Get started by creating your first credential.\n </p>\n }\n @if (UserCanCreate && !searchText && !selectedTypeFilter && !selectedStatusFilter) {\n <button class=\"btn-primary\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n }\n </div>\n }\n }\n\n <!-- Edit Panel -->\n <mj-credential-edit-panel\n #editPanel\n [credentialTypes]=\"types\"\n (saved)=\"onCredentialSaved($event)\"\n (deleted)=\"onCredentialDeleted($event)\"\n ></mj-credential-edit-panel>\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* Bulk Actions Bar */\n.bulk-actions {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-brand-primary);\n border-radius: 10px;\n margin-bottom: 16px;\n color: var(--mj-text-inverse);\n}\n\n.bulk-info {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.bulk-count {\n font-weight: 600;\n font-size: 14px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: color-mix(in srgb, var(--mj-bg-surface) 80%, transparent);\n font-size: 13px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link:hover {\n color: var(--mj-text-inverse);\n}\n\n.bulk-buttons {\n display: flex;\n gap: 8px;\n}\n\n.btn-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-bg-surface) 20%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-bg-surface) 30%, transparent);\n border-radius: 6px;\n color: var(--mj-text-inverse);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-bulk:hover {\n background: color-mix(in srgb, var(--mj-bg-surface) 30%, transparent);\n}\n\n.btn-bulk.danger {\n background: color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n.btn-bulk.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n/* Credentials Grid */\n.credentials-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n gap: 20px;\n}\n\n.credential-card {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n transition: all 0.2s ease;\n position: relative;\n border: 2px solid transparent;\n}\n\n.credential-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);\n}\n\n.credential-card.selected {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 3%, var(--mj-bg-surface));\n}\n\n.credential-card.expired {\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n}\n\n.credential-card.expiring {\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.card-select {\n position: absolute;\n top: 12px;\n left: 12px;\n z-index: 10;\n}\n\n.card-select input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: var(--mj-brand-primary);\n}\n\n.card-header {\n display: flex;\n align-items: center;\n padding: 16px;\n padding-left: 40px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.card-icon {\n width: 44px;\n height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.card-icon.active {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.card-icon.inactive {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.card-icon.expired {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.card-icon.expiring {\n background: var(--mj-status-warning);\n color: var(--mj-text-inverse);\n}\n\n.card-icon i {\n font-size: 18px;\n}\n\n.card-title {\n flex: 1;\n min-width: 0;\n}\n\n.credential-name {\n font-weight: 600;\n font-size: 15px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.credential-type {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.card-actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.credential-card:hover .card-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger:hover {\n background: var(--mj-status-error);\n}\n\n.card-body {\n padding: 16px;\n padding-left: 40px;\n cursor: pointer;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n margin-bottom: 12px;\n}\n\n.status-badge i {\n font-size: 10px;\n}\n\n.status-badge.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge.inactive {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.expired {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge.expiring {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.credential-description {\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n margin: 0 0 12px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.credential-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.meta-item i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.warning {\n color: var(--mj-status-warning);\n}\n\n.meta-item.warning i {\n color: var(--mj-status-warning);\n}\n\n.meta-item.danger {\n color: var(--mj-status-error);\n}\n\n.meta-item.danger i {\n color: var(--mj-status-error);\n}\n\n.card-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n padding-left: 40px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.category-tag {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.category-tag i {\n font-size: 10px;\n}\n\n.created-info {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Table View */\n.credentials-table-container {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.credentials-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.credentials-table thead {\n background: var(--mj-bg-surface-card);\n}\n\n.credentials-table th {\n padding: 12px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.credentials-table td {\n padding: 12px 16px;\n font-size: 14px;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.credentials-table tbody tr {\n transition: background 0.2s ease;\n}\n\n.credentials-table tbody tr:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.credentials-table tbody tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n}\n\n.credentials-table tbody tr.expired {\n background: color-mix(in srgb, var(--mj-status-error) 3%, transparent);\n}\n\n.col-select {\n width: 40px;\n}\n\n.col-select input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n accent-color: var(--mj-brand-primary);\n}\n\n.col-name {\n min-width: 240px;\n cursor: pointer;\n}\n\n.name-cell {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.name-cell i {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.name-cell i.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.name-cell i.inactive {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.name-cell i.expired {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.name-cell i.expiring {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.name-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n flex: 1;\n}\n\n.name-info .credential-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.name-info .credential-desc {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.default-badge {\n background: var(--mj-status-warning);\n color: var(--mj-text-inverse);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 10px;\n text-transform: uppercase;\n flex-shrink: 0;\n}\n\n.col-type,\n.col-category {\n white-space: nowrap;\n}\n\n.category-pill {\n display: inline-block;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.col-status {\n white-space: nowrap;\n}\n\n.status-pill {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-pill.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-pill.inactive {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-pill.expired {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-pill.expiring {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.col-expires,\n.col-used {\n white-space: nowrap;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.col-expires.warning {\n color: var(--mj-status-warning);\n font-weight: 500;\n}\n\n.col-expires.danger {\n color: var(--mj-status-error);\n font-weight: 500;\n}\n\n.col-actions {\n width: 120px;\n}\n\n.table-actions {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.credentials-table tbody tr:hover .table-actions {\n opacity: 1;\n}\n\n.table-action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 13px;\n}\n\n.table-action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.table-action-btn.danger:hover {\n background: var(--mj-status-error);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px 24px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state h3 {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 24px 0;\n max-width: 400px;\n line-height: 1.5;\n}\n\n.empty-state .btn-link {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n cursor: pointer;\n background: none;\n border: none;\n font-size: 14px;\n padding: 0;\n}\n\n.empty-state .btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.empty-state .btn-primary {\n margin-top: 0;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .list-container {\n padding: 16px;\n }\n\n .list-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .list-title {\n font-size: 20px;\n }\n\n .header-stats {\n gap: 12px;\n }\n\n .stat-item {\n font-size: 12px;\n }\n\n .header-actions {\n width: 100%;\n }\n\n .header-actions .btn-primary {\n flex: 1;\n justify-content: center;\n }\n\n .toolbar {\n flex-direction: column;\n align-items: stretch;\n padding: 12px;\n }\n\n .toolbar-left {\n flex-direction: column;\n }\n\n .search-container {\n min-width: 100%;\n }\n\n .filter-select {\n width: 100%;\n }\n\n .toolbar-right {\n justify-content: space-between;\n }\n\n .credentials-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n /* Make card actions always visible on mobile */\n .card-actions {\n opacity: 1;\n }\n\n .card-header {\n padding: 14px;\n padding-left: 36px;\n }\n\n .card-body {\n padding: 14px;\n padding-left: 36px;\n }\n\n .card-footer {\n padding: 10px 14px;\n padding-left: 36px;\n }\n\n .card-icon {\n width: 38px;\n height: 38px;\n }\n\n .card-icon i {\n font-size: 16px;\n }\n\n .bulk-actions {\n flex-direction: column;\n gap: 12px;\n text-align: center;\n }\n\n .bulk-info {\n flex-direction: column;\n gap: 8px;\n }\n\n .bulk-buttons {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .credentials-table-container {\n overflow-x: auto;\n }\n\n .credentials-table {\n min-width: 800px;\n }\n\n .empty-state {\n padding: 48px 20px;\n }\n\n .empty-icon {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon i {\n font-size: 28px;\n }\n\n .empty-state h3 {\n font-size: 18px;\n }\n}\n\n@media (max-width: 480px) {\n .list-container {\n padding: 12px;\n }\n\n .list-title {\n font-size: 18px;\n }\n\n .header-stats {\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n }\n\n .btn-primary {\n padding: 10px 16px;\n font-size: 13px;\n }\n\n .btn-primary span {\n display: none;\n }\n\n .btn-primary i {\n margin: 0;\n }\n\n .toolbar {\n padding: 10px;\n }\n\n .view-toggle {\n display: none;\n }\n\n .results-info {\n font-size: 12px;\n }\n\n .credential-card {\n border-radius: 10px;\n }\n\n .card-select {\n top: 10px;\n left: 10px;\n }\n\n .card-header {\n padding: 12px;\n padding-left: 32px;\n }\n\n .card-body {\n padding: 12px;\n padding-left: 32px;\n }\n\n .card-footer {\n padding: 10px 12px;\n padding-left: 32px;\n }\n\n .card-icon {\n width: 34px;\n height: 34px;\n margin-right: 10px;\n }\n\n .credential-name {\n font-size: 14px;\n }\n\n .credential-type {\n font-size: 11px;\n }\n\n .action-btn {\n width: 28px;\n height: 28px;\n }\n\n .status-badge {\n font-size: 10px;\n padding: 3px 8px;\n }\n\n .credential-meta {\n gap: 8px;\n }\n\n .meta-item {\n font-size: 11px;\n }\n\n .category-tag {\n font-size: 10px;\n padding: 3px 8px;\n }\n\n .created-info {\n font-size: 10px;\n }\n\n .empty-state {\n padding: 32px 16px;\n }\n\n .empty-icon {\n width: 56px;\n height: 56px;\n margin-bottom: 16px;\n }\n\n .empty-icon i {\n font-size: 24px;\n }\n\n .empty-state h3 {\n font-size: 16px;\n }\n\n .empty-state p {\n font-size: 13px;\n }\n}\n"] }]
|
|
1229
|
+
args: [{ standalone: false, selector: 'mj-credentials-list-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Credentials\"\n Icon=\"fa-solid fa-key\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredCredentials.length\"\n [Total]=\"credentials.length\"\n Label=\"credentials\">\n </mj-stat-badge>\n @if (getExpiringSoonCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-clock\"\n [Count]=\"getExpiringSoonCount()\"\n Label=\"expiring\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n @if (getExpiredCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-exclamation-circle\"\n [Count]=\"getExpiredCount()\"\n Label=\"expired\"\n Variant=\"error\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n @if (UserCanCreate) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"action-btn-label\">New Credential</span>\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search credentials...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"viewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (isLoading) {\n <mj-loading text=\"Loading credentials...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Bulk Actions Bar -->\n @if (selectedCredentials.size > 0) {\n <div class=\"bulk-actions\">\n <div class=\"bulk-info\">\n <span class=\"bulk-count\">{{selectedCredentials.size}} selected</span>\n <button class=\"btn-link\" (click)=\"clearSelection()\">Clear selection</button>\n </div>\n <div class=\"bulk-buttons\">\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(true)\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n Activate\n </button>\n }\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(false)\">\n <i class=\"fa-solid fa-toggle-off\"></i>\n Deactivate\n </button>\n }\n @if (UserCanDelete) {\n <button class=\"btn-bulk danger\" (click)=\"bulkDelete()\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </button>\n }\n </div>\n </div>\n }\n <!-- Grid View -->\n @if (viewMode === 'grid' && filteredCredentials.length > 0) {\n <div class=\"credentials-grid\">\n @for (credential of filteredCredentials; track credential) {\n <div\n class=\"credential-card\"\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n [class.expiring]=\"isExpiringSoon(credential)\"\n >\n <!-- Selection Checkbox -->\n @if (UserCanUpdate || UserCanDelete) {\n <div class=\"card-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </div>\n }\n <div class=\"card-header\">\n <div class=\"card-icon\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"card-title\">\n <div class=\"credential-name\">{{credential.Name}}</div>\n <div class=\"credential-type\">{{credential.CredentialType || 'Unknown Type'}}</div>\n </div>\n <div class=\"card-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\">\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"card-body\" (click)=\"editCredential(credential)\">\n <div class=\"status-badge\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"getStatusIcon(credential)\"></i>\n {{getStatusLabel(credential)}}\n </div>\n @if (credential.Description) {\n <p class=\"credential-description\">\n {{credential.Description}}\n </p>\n }\n <div class=\"credential-meta\">\n @if (credential.IsDefault) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-star\"></i>\n <span>Default</span>\n </div>\n }\n @if (credential.ExpiresAt) {\n <div class=\"meta-item\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n <i class=\"fa-solid fa-calendar\"></i>\n <span>{{isExpired(credential) ? 'Expired' : 'Expires'}}: {{formatDate(credential.ExpiresAt)}}</span>\n </div>\n }\n @if (credential.LastUsedAt) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>Last used: {{formatDate(credential.LastUsedAt)}}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"card-footer\">\n @if (credential.Category) {\n <div class=\"category-tag\">\n <i class=\"fa-solid fa-folder\"></i>\n {{credential.Category}}\n </div>\n }\n <div class=\"created-info\">\n Created {{formatDate(credential.__mj_CreatedAt)}}\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- List View -->\n @if (viewMode === 'list' && filteredCredentials.length > 0) {\n <div class=\"credentials-table-container\">\n <table class=\"credentials-table\">\n <thead>\n <tr>\n @if (UserCanUpdate || UserCanDelete) {\n <th class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"isAllSelected()\"\n (change)=\"toggleSelectAll()\"\n />\n </th>\n }\n <th class=\"col-name\">Name</th>\n <th class=\"col-type\">Type</th>\n <th class=\"col-category\">Category</th>\n <th class=\"col-status\">Status</th>\n <th class=\"col-expires\">Expires</th>\n <th class=\"col-used\">Last Used</th>\n <th class=\"col-actions\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (credential of filteredCredentials; track credential) {\n <tr\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n >\n @if (UserCanUpdate || UserCanDelete) {\n <td class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </td>\n }\n <td class=\"col-name\" (click)=\"editCredential(credential)\">\n <div class=\"name-cell\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\" [ngClass]=\"getStatusClass(credential)\"></i>\n <div class=\"name-info\">\n <span class=\"credential-name\">{{credential.Name}}</span>\n @if (credential.Description) {\n <span class=\"credential-desc\">{{credential.Description}}</span>\n }\n </div>\n @if (credential.IsDefault) {\n <span class=\"default-badge\">Default</span>\n }\n </div>\n </td>\n <td class=\"col-type\">{{credential.CredentialType || '-'}}</td>\n <td class=\"col-category\">\n @if (credential.Category) {\n <span class=\"category-pill\">{{credential.Category}}</span>\n }\n @if (!credential.Category) {\n <span>-</span>\n }\n </td>\n <td class=\"col-status\">\n <span class=\"status-pill\" [ngClass]=\"getStatusClass(credential)\">\n {{getStatusLabel(credential)}}\n </span>\n </td>\n <td class=\"col-expires\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n {{credential.ExpiresAt ? formatDate(credential.ExpiresAt) : 'Never'}}\n </td>\n <td class=\"col-used\">\n {{credential.LastUsedAt ? formatDate(credential.LastUsedAt) : 'Never'}}\n </td>\n <td class=\"col-actions\">\n <div class=\"table-actions\">\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\"\n >\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button\n class=\"table-action-btn danger\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- Empty State -->\n @if (filteredCredentials.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-key\"></i>\n </div>\n <h3>No Credentials Found</h3>\n @if (searchText || selectedTypeFilter || selectedStatusFilter) {\n <p>\n No credentials match your current filters.\n <button class=\"btn-link\" (click)=\"clearFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedTypeFilter && !selectedStatusFilter) {\n <p>\n Get started by creating your first credential.\n </p>\n }\n @if (UserCanCreate && !searchText && !selectedTypeFilter && !selectedStatusFilter) {\n <button class=\"btn-primary\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n }\n </div>\n }\n }\n\n <!-- Edit Panel -->\n <mj-credential-edit-panel\n #editPanel\n [credentialTypes]=\"types\"\n (saved)=\"onCredentialSaved($event)\"\n (deleted)=\"onCredentialDeleted($event)\"\n ></mj-credential-edit-panel>\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* Bulk Actions Bar */\n.bulk-actions {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-brand-primary);\n border-radius: 10px;\n margin-bottom: 16px;\n color: var(--mj-text-inverse);\n}\n\n.bulk-info {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.bulk-count {\n font-weight: 600;\n font-size: 14px;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: color-mix(in srgb, var(--mj-bg-surface) 80%, transparent);\n font-size: 13px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link:hover {\n color: var(--mj-text-inverse);\n}\n\n.bulk-buttons {\n display: flex;\n gap: 8px;\n}\n\n.btn-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-bg-surface) 20%, transparent);\n border: 1px solid color-mix(in srgb, var(--mj-bg-surface) 30%, transparent);\n border-radius: 6px;\n color: var(--mj-text-inverse);\n font-size: 13px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-bulk:hover {\n background: color-mix(in srgb, var(--mj-bg-surface) 30%, transparent);\n}\n\n.btn-bulk.danger {\n background: color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n border-color: color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n.btn-bulk.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 50%, transparent);\n}\n\n/* Credentials Grid */\n.credentials-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n gap: 20px;\n}\n\n.credential-card {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n transition: all 0.2s ease;\n position: relative;\n border: 2px solid transparent;\n}\n\n.credential-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);\n}\n\n.credential-card.selected {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 3%, var(--mj-bg-surface));\n}\n\n.credential-card.expired {\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n}\n\n.credential-card.expiring {\n border-color: color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.card-select {\n position: absolute;\n top: 12px;\n left: 12px;\n z-index: 10;\n}\n\n.card-select input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: var(--mj-brand-primary);\n}\n\n.card-header {\n display: flex;\n align-items: center;\n padding: 16px;\n padding-left: 40px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.card-icon {\n width: 44px;\n height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.card-icon.active {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.card-icon.inactive {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.card-icon.expired {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n}\n\n.card-icon.expiring {\n background: var(--mj-status-warning);\n color: var(--mj-text-inverse);\n}\n\n.card-icon i {\n font-size: 18px;\n}\n\n.card-title {\n flex: 1;\n min-width: 0;\n}\n\n.credential-name {\n font-weight: 600;\n font-size: 15px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.credential-type {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.card-actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.credential-card:hover .card-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger:hover {\n background: var(--mj-status-error);\n}\n\n.card-body {\n padding: 16px;\n padding-left: 40px;\n cursor: pointer;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n margin-bottom: 12px;\n}\n\n.status-badge i {\n font-size: 10px;\n}\n\n.status-badge.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-badge.inactive {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-badge.expired {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-badge.expiring {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.credential-description {\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n margin: 0 0 12px 0;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.credential-meta {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.meta-item i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n.meta-item.warning {\n color: var(--mj-status-warning);\n}\n\n.meta-item.warning i {\n color: var(--mj-status-warning);\n}\n\n.meta-item.danger {\n color: var(--mj-status-error);\n}\n\n.meta-item.danger i {\n color: var(--mj-status-error);\n}\n\n.card-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n padding-left: 40px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.category-tag {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 6px;\n font-size: 11px;\n font-weight: 500;\n}\n\n.category-tag i {\n font-size: 10px;\n}\n\n.created-info {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Table View */\n.credentials-table-container {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.credentials-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.credentials-table thead {\n background: var(--mj-bg-surface-card);\n}\n\n.credentials-table th {\n padding: 12px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.credentials-table td {\n padding: 12px 16px;\n font-size: 14px;\n color: var(--mj-text-primary);\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.credentials-table tbody tr {\n transition: background 0.2s ease;\n}\n\n.credentials-table tbody tr:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.credentials-table tbody tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, transparent);\n}\n\n.credentials-table tbody tr.expired {\n background: color-mix(in srgb, var(--mj-status-error) 3%, transparent);\n}\n\n.col-select {\n width: 40px;\n}\n\n.col-select input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n accent-color: var(--mj-brand-primary);\n}\n\n.col-name {\n min-width: 240px;\n cursor: pointer;\n}\n\n.name-cell {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.name-cell i {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.name-cell i.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.name-cell i.inactive {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.name-cell i.expired {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.name-cell i.expiring {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.name-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n flex: 1;\n}\n\n.name-info .credential-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.name-info .credential-desc {\n font-size: 12px;\n color: var(--mj-text-disabled);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.default-badge {\n background: var(--mj-status-warning);\n color: var(--mj-text-inverse);\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 10px;\n text-transform: uppercase;\n flex-shrink: 0;\n}\n\n.col-type,\n.col-category {\n white-space: nowrap;\n}\n\n.category-pill {\n display: inline-block;\n padding: 4px 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n}\n\n.col-status {\n white-space: nowrap;\n}\n\n.status-pill {\n display: inline-flex;\n align-items: center;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-pill.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.status-pill.inactive {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.status-pill.expired {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.status-pill.expiring {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.col-expires,\n.col-used {\n white-space: nowrap;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.col-expires.warning {\n color: var(--mj-status-warning);\n font-weight: 500;\n}\n\n.col-expires.danger {\n color: var(--mj-status-error);\n font-weight: 500;\n}\n\n.col-actions {\n width: 120px;\n}\n\n.table-actions {\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.credentials-table tbody tr:hover .table-actions {\n opacity: 1;\n}\n\n.table-action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 13px;\n}\n\n.table-action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.table-action-btn.danger:hover {\n background: var(--mj-status-error);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 80px 24px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state h3 {\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 24px 0;\n max-width: 400px;\n line-height: 1.5;\n}\n\n.empty-state .btn-link {\n color: var(--mj-brand-primary);\n text-decoration: underline;\n cursor: pointer;\n background: none;\n border: none;\n font-size: 14px;\n padding: 0;\n}\n\n.empty-state .btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n.empty-state .btn-primary {\n margin-top: 0;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .list-container {\n padding: 16px;\n }\n\n .list-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .list-title {\n font-size: 20px;\n }\n\n .header-stats {\n gap: 12px;\n }\n\n .stat-item {\n font-size: 12px;\n }\n\n .header-actions {\n width: 100%;\n }\n\n .header-actions .btn-primary {\n flex: 1;\n justify-content: center;\n }\n\n .toolbar {\n flex-direction: column;\n align-items: stretch;\n padding: 12px;\n }\n\n .toolbar-left {\n flex-direction: column;\n }\n\n .search-container {\n min-width: 100%;\n }\n\n .filter-select {\n width: 100%;\n }\n\n .toolbar-right {\n justify-content: space-between;\n }\n\n .credentials-grid {\n grid-template-columns: 1fr;\n gap: 16px;\n }\n\n /* Make card actions always visible on mobile */\n .card-actions {\n opacity: 1;\n }\n\n .card-header {\n padding: 14px;\n padding-left: 36px;\n }\n\n .card-body {\n padding: 14px;\n padding-left: 36px;\n }\n\n .card-footer {\n padding: 10px 14px;\n padding-left: 36px;\n }\n\n .card-icon {\n width: 38px;\n height: 38px;\n }\n\n .card-icon i {\n font-size: 16px;\n }\n\n .bulk-actions {\n flex-direction: column;\n gap: 12px;\n text-align: center;\n }\n\n .bulk-info {\n flex-direction: column;\n gap: 8px;\n }\n\n .bulk-buttons {\n flex-wrap: wrap;\n justify-content: center;\n }\n\n .credentials-table-container {\n overflow-x: auto;\n }\n\n .credentials-table {\n min-width: 800px;\n }\n\n .empty-state {\n padding: 48px 20px;\n }\n\n .empty-icon {\n width: 64px;\n height: 64px;\n }\n\n .empty-icon i {\n font-size: 28px;\n }\n\n .empty-state h3 {\n font-size: 18px;\n }\n}\n\n@media (max-width: 480px) {\n .list-container {\n padding: 12px;\n }\n\n .list-title {\n font-size: 18px;\n }\n\n .header-stats {\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n }\n\n .btn-primary {\n padding: 10px 16px;\n font-size: 13px;\n }\n\n .btn-primary span {\n display: none;\n }\n\n .btn-primary i {\n margin: 0;\n }\n\n .toolbar {\n padding: 10px;\n }\n\n .view-toggle {\n display: none;\n }\n\n .results-info {\n font-size: 12px;\n }\n\n .credential-card {\n border-radius: 10px;\n }\n\n .card-select {\n top: 10px;\n left: 10px;\n }\n\n .card-header {\n padding: 12px;\n padding-left: 32px;\n }\n\n .card-body {\n padding: 12px;\n padding-left: 32px;\n }\n\n .card-footer {\n padding: 10px 12px;\n padding-left: 32px;\n }\n\n .card-icon {\n width: 34px;\n height: 34px;\n margin-right: 10px;\n }\n\n .credential-name {\n font-size: 14px;\n }\n\n .credential-type {\n font-size: 11px;\n }\n\n .action-btn {\n width: 28px;\n height: 28px;\n }\n\n .status-badge {\n font-size: 10px;\n padding: 3px 8px;\n }\n\n .credential-meta {\n gap: 8px;\n }\n\n .meta-item {\n font-size: 11px;\n }\n\n .category-tag {\n font-size: 10px;\n padding: 3px 8px;\n }\n\n .created-info {\n font-size: 10px;\n }\n\n .empty-state {\n padding: 32px 16px;\n }\n\n .empty-icon {\n width: 56px;\n height: 56px;\n margin-bottom: 16px;\n }\n\n .empty-icon i {\n font-size: 24px;\n }\n\n .empty-state h3 {\n font-size: 16px;\n }\n\n .empty-state p {\n font-size: 13px;\n }\n}\n"] }]
|
|
1229
1230
|
}], () => [{ type: i0.ChangeDetectorRef }], { editPanel: [{
|
|
1230
1231
|
type: ViewChild,
|
|
1231
1232
|
args: ['editPanel']
|