@memberjunction/ng-dashboards 3.4.0 → 4.1.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 +102 -339
- package/dist/AI/components/agents/agent-configuration.component.d.ts +12 -5
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +103 -44
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +149 -211
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
- package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.js +6 -7
- package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +33 -37
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +3 -6
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +34 -27
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +3 -6
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +34 -32
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
- package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +26 -27
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.js +52 -42
- package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
- package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +193 -189
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.d.ts +0 -2
- package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +175 -180
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +231 -225
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-list.component.d.ts +0 -2
- package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-list.component.js +113 -114
- package/dist/APIKeys/api-key-list.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +0 -2
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +294 -302
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +151 -155
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
- package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +237 -234
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +15 -14
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +3 -6
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +17 -19
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +6 -6
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.d.ts +0 -4
- package/dist/Actions/components/code-management.component.d.ts.map +1 -1
- package/dist/Actions/components/code-management.component.js +3 -9
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.d.ts +0 -4
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +3 -9
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +13 -16
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +3 -3
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-breadcrumb.component.js +6 -6
- package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +11 -10
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -4
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +10 -14
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.js +8 -8
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +15 -14
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.js +11 -10
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -4
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +10 -10
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +8 -8
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +3 -9
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.d.ts +0 -4
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +3 -9
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/Actions/index.d.ts +0 -7
- package/dist/Actions/index.d.ts.map +1 -1
- package/dist/Actions/index.js +0 -8
- package/dist/Actions/index.js.map +1 -1
- package/dist/Communication/communication-dashboard.component.d.ts +0 -1
- package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
- package/dist/Communication/communication-dashboard.component.js +38 -51
- package/dist/Communication/communication-dashboard.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +0 -4
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +112 -108
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts +0 -4
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +210 -201
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts +0 -4
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +136 -124
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts +0 -4
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +91 -88
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +0 -4
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -122
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +0 -4
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +21 -20
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +11 -12
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.js +23 -21
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +10 -10
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +13 -13
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +7 -7
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +5 -5
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +4 -4
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +9 -9
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +10 -9
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +4 -4
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +251 -240
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +0 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +31 -44
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
- package/dist/Credentials/pipes/group-by.pipe.js +2 -1
- package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +2 -4
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +83 -64
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/index.d.ts +2 -2
- package/dist/DataExplorer/index.d.ts.map +1 -1
- package/dist/DataExplorer/index.js +2 -2
- package/dist/DataExplorer/index.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-application.d.ts +109 -27
- package/dist/Home/home-application.d.ts.map +1 -1
- package/dist/Home/home-application.js +351 -75
- package/dist/Home/home-application.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +48 -12
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +267 -187
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +761 -685
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +340 -316
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +530 -482
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +508 -455
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +0 -1
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +0 -11
- package/dist/Lists/index.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts +0 -4
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +33 -39
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +0 -4
- package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.js +42 -44
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.d.ts +3 -4
- package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +186 -77
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +0 -4
- package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +187 -187
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/index.d.ts +5 -5
- package/dist/MCP/index.d.ts.map +1 -1
- package/dist/MCP/index.js +5 -5
- package/dist/MCP/index.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +65 -7
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +976 -697
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
- package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
- package/dist/MCP/mcp-filter-panel.component.js +288 -0
- package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
- package/dist/MCP/mcp-resource.component.d.ts +11 -5
- package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
- package/dist/MCP/mcp-resource.component.js +8 -9
- package/dist/MCP/mcp-resource.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +16 -19
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +17 -26
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/MCP/services/mcp-tools.service.d.ts +10 -4
- package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -1
- package/dist/MCP/services/mcp-tools.service.js +5 -6
- package/dist/MCP/services/mcp-tools.service.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -1
- package/dist/Scheduling/components/job-slideout.component.js +117 -116
- package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +0 -4
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +3 -9
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +134 -134
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +0 -4
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -9
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +102 -97
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +0 -4
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +3 -9
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +127 -122
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +0 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +35 -43
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +3 -3
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +30 -30
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +3 -3
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +7 -7
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +3 -3
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +42 -35
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +3 -3
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +16 -16
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +3 -3
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +15 -15
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
- package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +0 -1
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +9 -8
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/graph-resource.component.js +521 -0
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/index.d.ts +5 -0
- package/dist/VersionHistory/components/index.d.ts.map +1 -0
- package/dist/VersionHistory/components/index.js +5 -0
- package/dist/VersionHistory/components/index.js.map +1 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/labels-resource.component.js +968 -0
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
- package/dist/VersionHistory/components/restore-resource.component.js +472 -0
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
- package/dist/VersionHistory/index.d.ts +2 -0
- package/dist/VersionHistory/index.d.ts.map +1 -0
- package/dist/VersionHistory/index.js +2 -0
- package/dist/VersionHistory/index.js.map +1 -0
- package/dist/module.d.ts +42 -36
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +41 -7
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +20 -19
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +22 -120
- package/dist/public-api.js.map +1 -1
- package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
- package/dist/shared/pipes/highlight-search.pipe.js +2 -1
- package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
- package/package.json +64 -62
|
@@ -5,20 +5,20 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
import * as i1 from "@angular/common";
|
|
6
6
|
import * as i2 from "@angular/forms";
|
|
7
7
|
import * as i3 from "@memberjunction/ng-shared-generic";
|
|
8
|
-
function
|
|
8
|
+
function APIKeyListComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
9
9
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
10
10
|
i0.ɵɵelementStart(0, "button", 22);
|
|
11
|
-
i0.ɵɵlistener("click", function
|
|
11
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
|
|
12
12
|
i0.ɵɵelement(1, "i", 23);
|
|
13
13
|
i0.ɵɵelementEnd();
|
|
14
14
|
} }
|
|
15
|
-
function
|
|
16
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
15
|
+
function APIKeyListComponent_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
16
|
+
i0.ɵɵelement(0, "mj-loading", 19);
|
|
17
17
|
} }
|
|
18
|
-
function
|
|
19
|
-
i0.ɵɵelementStart(0, "span",
|
|
18
|
+
function APIKeyListComponent_Conditional_46_For_23_Conditional_16_For_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelementStart(0, "span", 57);
|
|
20
20
|
i0.ɵɵelement(1, "i");
|
|
21
|
-
i0.ɵɵelementStart(2, "span",
|
|
21
|
+
i0.ɵɵelementStart(2, "span", 58);
|
|
22
22
|
i0.ɵɵtext(3);
|
|
23
23
|
i0.ɵɵelementEnd()();
|
|
24
24
|
} if (rf & 2) {
|
|
@@ -30,17 +30,14 @@ function APIKeyListComponent_div_46_div_22_div_16_ng_container_2_span_1_Template
|
|
|
30
30
|
i0.ɵɵadvance(2);
|
|
31
31
|
i0.ɵɵtextInterpolate(cat_r6.count);
|
|
32
32
|
} }
|
|
33
|
-
function
|
|
34
|
-
i0.ɵɵ
|
|
35
|
-
i0.ɵɵtemplate(1, APIKeyListComponent_div_46_div_22_div_16_ng_container_2_span_1_Template, 4, 8, "span", 60);
|
|
36
|
-
i0.ɵɵelementContainerEnd();
|
|
33
|
+
function APIKeyListComponent_Conditional_46_For_23_Conditional_16_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵconditionalCreate(0, APIKeyListComponent_Conditional_46_For_23_Conditional_16_For_3_Conditional_0_Template, 4, 8, "span", 56);
|
|
37
35
|
} if (rf & 2) {
|
|
38
|
-
const
|
|
39
|
-
i0.ɵɵ
|
|
40
|
-
i0.ɵɵproperty("ngIf", i_r7 < 3);
|
|
36
|
+
const ɵ$index_154_r7 = ctx.$index;
|
|
37
|
+
i0.ɵɵconditional(ɵ$index_154_r7 < 3 ? 0 : -1);
|
|
41
38
|
} }
|
|
42
|
-
function
|
|
43
|
-
i0.ɵɵelementStart(0, "span",
|
|
39
|
+
function APIKeyListComponent_Conditional_46_For_23_Conditional_16_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
44
41
|
i0.ɵɵtext(1);
|
|
45
42
|
i0.ɵɵelementEnd();
|
|
46
43
|
} if (rf & 2) {
|
|
@@ -49,58 +46,60 @@ function APIKeyListComponent_div_46_div_22_div_16_span_3_Template(rf, ctx) { if
|
|
|
49
46
|
i0.ɵɵadvance();
|
|
50
47
|
i0.ɵɵtextInterpolate1(" +", ctx_r1.getScopeInfo(key_r5).categories.length - 3, " ");
|
|
51
48
|
} }
|
|
52
|
-
function
|
|
53
|
-
i0.ɵɵelementStart(0, "div",
|
|
54
|
-
i0.ɵɵ
|
|
49
|
+
function APIKeyListComponent_Conditional_46_For_23_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
i0.ɵɵelementStart(0, "div", 45)(1, "div", 53);
|
|
51
|
+
i0.ɵɵrepeaterCreate(2, APIKeyListComponent_Conditional_46_For_23_Conditional_16_For_3_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);
|
|
52
|
+
i0.ɵɵconditionalCreate(4, APIKeyListComponent_Conditional_46_For_23_Conditional_16_Conditional_4_Template, 2, 1, "span", 54);
|
|
55
53
|
i0.ɵɵelementEnd();
|
|
56
|
-
i0.ɵɵelementStart(
|
|
57
|
-
i0.ɵɵtext(
|
|
54
|
+
i0.ɵɵelementStart(5, "span", 55);
|
|
55
|
+
i0.ɵɵtext(6);
|
|
58
56
|
i0.ɵɵelementEnd()();
|
|
59
57
|
} if (rf & 2) {
|
|
60
58
|
const key_r5 = i0.ɵɵnextContext().$implicit;
|
|
61
59
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
62
60
|
i0.ɵɵadvance(2);
|
|
63
|
-
i0.ɵɵ
|
|
64
|
-
i0.ɵɵadvance();
|
|
65
|
-
i0.ɵɵ
|
|
61
|
+
i0.ɵɵrepeater(ctx_r1.getScopeInfo(key_r5).categories);
|
|
62
|
+
i0.ɵɵadvance(2);
|
|
63
|
+
i0.ɵɵconditional(ctx_r1.getScopeInfo(key_r5).categories.length > 3 ? 4 : -1);
|
|
66
64
|
i0.ɵɵadvance(2);
|
|
67
65
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.getScopeInfo(key_r5).count, " total ");
|
|
68
66
|
} }
|
|
69
|
-
function
|
|
70
|
-
i0.ɵɵelementStart(0, "span",
|
|
71
|
-
i0.ɵɵelement(1, "i",
|
|
67
|
+
function APIKeyListComponent_Conditional_46_For_23_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelementStart(0, "span", 46);
|
|
69
|
+
i0.ɵɵelement(1, "i", 59);
|
|
72
70
|
i0.ɵɵtext(2, " None ");
|
|
73
71
|
i0.ɵɵelementEnd();
|
|
74
72
|
} }
|
|
75
|
-
function
|
|
73
|
+
function APIKeyListComponent_Conditional_46_For_23_Template(rf, ctx) { if (rf & 1) {
|
|
76
74
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
77
|
-
i0.ɵɵelementStart(0, "div",
|
|
78
|
-
i0.ɵɵlistener("click", function
|
|
79
|
-
i0.ɵɵelementStart(1, "div",
|
|
80
|
-
i0.ɵɵelement(3, "i",
|
|
75
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
76
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_For_23_Template_div_click_0_listener() { const key_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectKey(key_r5)); });
|
|
77
|
+
i0.ɵɵelementStart(1, "div", 35)(2, "div", 36);
|
|
78
|
+
i0.ɵɵelement(3, "i", 37);
|
|
81
79
|
i0.ɵɵelementEnd();
|
|
82
|
-
i0.ɵɵelementStart(4, "div",
|
|
80
|
+
i0.ɵɵelementStart(4, "div", 38)(5, "span", 39);
|
|
83
81
|
i0.ɵɵtext(6);
|
|
84
82
|
i0.ɵɵelementEnd();
|
|
85
|
-
i0.ɵɵelementStart(7, "code",
|
|
83
|
+
i0.ɵɵelementStart(7, "code", 40);
|
|
86
84
|
i0.ɵɵtext(8);
|
|
87
85
|
i0.ɵɵelementEnd()()();
|
|
88
|
-
i0.ɵɵelementStart(9, "div",
|
|
86
|
+
i0.ɵɵelementStart(9, "div", 41)(10, "span", 42);
|
|
89
87
|
i0.ɵɵtext(11);
|
|
90
88
|
i0.ɵɵelementEnd()();
|
|
91
|
-
i0.ɵɵelementStart(12, "div",
|
|
89
|
+
i0.ɵɵelementStart(12, "div", 43)(13, "span", 44);
|
|
92
90
|
i0.ɵɵtext(14);
|
|
93
91
|
i0.ɵɵelementEnd()();
|
|
94
|
-
i0.ɵɵelementStart(15, "div",
|
|
95
|
-
i0.ɵɵ
|
|
92
|
+
i0.ɵɵelementStart(15, "div", 28);
|
|
93
|
+
i0.ɵɵconditionalCreate(16, APIKeyListComponent_Conditional_46_For_23_Conditional_16_Template, 7, 2, "div", 45);
|
|
94
|
+
i0.ɵɵconditionalCreate(17, APIKeyListComponent_Conditional_46_For_23_Conditional_17_Template, 3, 0, "span", 46);
|
|
96
95
|
i0.ɵɵelementEnd();
|
|
97
|
-
i0.ɵɵelementStart(18, "div",
|
|
96
|
+
i0.ɵɵelementStart(18, "div", 47)(19, "span", 48);
|
|
98
97
|
i0.ɵɵtext(20);
|
|
99
98
|
i0.ɵɵelementEnd()();
|
|
100
|
-
i0.ɵɵelementStart(21, "div",
|
|
99
|
+
i0.ɵɵelementStart(21, "div", 49)(22, "span", 50);
|
|
101
100
|
i0.ɵɵtext(23);
|
|
102
101
|
i0.ɵɵelementEnd()();
|
|
103
|
-
i0.ɵɵelementStart(24, "div",
|
|
102
|
+
i0.ɵɵelementStart(24, "div", 51)(25, "span", 52);
|
|
104
103
|
i0.ɵɵtext(26);
|
|
105
104
|
i0.ɵɵelementEnd()()();
|
|
106
105
|
} if (rf & 2) {
|
|
@@ -111,7 +110,7 @@ function APIKeyListComponent_div_46_div_22_Template(rf, ctx) { if (rf & 1) {
|
|
|
111
110
|
i0.ɵɵadvance(4);
|
|
112
111
|
i0.ɵɵtextInterpolate(key_r5.Label);
|
|
113
112
|
i0.ɵɵadvance(2);
|
|
114
|
-
i0.ɵɵtextInterpolate1("...", key_r5.Hash.slice(-12)
|
|
113
|
+
i0.ɵɵtextInterpolate1("...", key_r5.Hash.slice(-12));
|
|
115
114
|
i0.ɵɵadvance(3);
|
|
116
115
|
i0.ɵɵtextInterpolate(key_r5.User);
|
|
117
116
|
i0.ɵɵadvance(2);
|
|
@@ -119,9 +118,9 @@ function APIKeyListComponent_div_46_div_22_Template(rf, ctx) { if (rf & 1) {
|
|
|
119
118
|
i0.ɵɵadvance();
|
|
120
119
|
i0.ɵɵtextInterpolate1(" ", key_r5.Status, " ");
|
|
121
120
|
i0.ɵɵadvance(2);
|
|
122
|
-
i0.ɵɵ
|
|
121
|
+
i0.ɵɵconditional(ctx_r1.getScopeInfo(key_r5).count > 0 ? 16 : -1);
|
|
123
122
|
i0.ɵɵadvance();
|
|
124
|
-
i0.ɵɵ
|
|
123
|
+
i0.ɵɵconditional(ctx_r1.getScopeInfo(key_r5).count === 0 ? 17 : -1);
|
|
125
124
|
i0.ɵɵadvance(2);
|
|
126
125
|
i0.ɵɵproperty("ngClass", ctx_r1.getExpirationClass(key_r5));
|
|
127
126
|
i0.ɵɵadvance();
|
|
@@ -133,7 +132,7 @@ function APIKeyListComponent_div_46_div_22_Template(rf, ctx) { if (rf & 1) {
|
|
|
133
132
|
i0.ɵɵadvance(3);
|
|
134
133
|
i0.ɵɵtextInterpolate(ctx_r1.formatDate(key_r5.__mj_CreatedAt));
|
|
135
134
|
} }
|
|
136
|
-
function
|
|
135
|
+
function APIKeyListComponent_Conditional_46_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
137
136
|
i0.ɵɵelementStart(0, "span");
|
|
138
137
|
i0.ɵɵtext(1);
|
|
139
138
|
i0.ɵɵelementEnd();
|
|
@@ -142,7 +141,7 @@ function APIKeyListComponent_div_46_div_23_span_2_Template(rf, ctx) { if (rf & 1
|
|
|
142
141
|
i0.ɵɵadvance();
|
|
143
142
|
i0.ɵɵtextInterpolate1("No keys matching \"", ctx_r1.SearchText, "\"");
|
|
144
143
|
} }
|
|
145
|
-
function
|
|
144
|
+
function APIKeyListComponent_Conditional_46_Conditional_24_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
146
145
|
i0.ɵɵelementStart(0, "span");
|
|
147
146
|
i0.ɵɵtext(1);
|
|
148
147
|
i0.ɵɵelementEnd();
|
|
@@ -151,71 +150,75 @@ function APIKeyListComponent_div_46_div_23_span_3_Template(rf, ctx) { if (rf & 1
|
|
|
151
150
|
i0.ɵɵadvance();
|
|
152
151
|
i0.ɵɵtextInterpolate1("No ", ctx_r1.Filter, " keys found");
|
|
153
152
|
} }
|
|
154
|
-
function
|
|
153
|
+
function APIKeyListComponent_Conditional_46_Conditional_24_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
155
154
|
i0.ɵɵelementStart(0, "span");
|
|
156
155
|
i0.ɵɵtext(1, "No API keys created yet");
|
|
157
156
|
i0.ɵɵelementEnd();
|
|
158
157
|
} }
|
|
159
|
-
function
|
|
158
|
+
function APIKeyListComponent_Conditional_46_Conditional_24_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
160
159
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
161
|
-
i0.ɵɵelementStart(0, "button",
|
|
162
|
-
i0.ɵɵlistener("click", function
|
|
160
|
+
i0.ɵɵelementStart(0, "button", 61);
|
|
161
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_Conditional_24_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.requestCreate()); });
|
|
163
162
|
i0.ɵɵelement(1, "i", 10);
|
|
164
163
|
i0.ɵɵtext(2, " Generate Your First Key ");
|
|
165
164
|
i0.ɵɵelementEnd();
|
|
166
165
|
} }
|
|
167
|
-
function
|
|
168
|
-
i0.ɵɵelementStart(0, "div",
|
|
169
|
-
i0.ɵɵelement(1, "i",
|
|
170
|
-
i0.ɵɵ
|
|
166
|
+
function APIKeyListComponent_Conditional_46_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
167
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
168
|
+
i0.ɵɵelement(1, "i", 37);
|
|
169
|
+
i0.ɵɵconditionalCreate(2, APIKeyListComponent_Conditional_46_Conditional_24_Conditional_2_Template, 2, 1, "span");
|
|
170
|
+
i0.ɵɵconditionalCreate(3, APIKeyListComponent_Conditional_46_Conditional_24_Conditional_3_Template, 2, 1, "span");
|
|
171
|
+
i0.ɵɵconditionalCreate(4, APIKeyListComponent_Conditional_46_Conditional_24_Conditional_4_Template, 2, 0, "span");
|
|
172
|
+
i0.ɵɵconditionalCreate(5, APIKeyListComponent_Conditional_46_Conditional_24_Conditional_5_Template, 3, 0, "button", 60);
|
|
171
173
|
i0.ɵɵelementEnd();
|
|
172
174
|
} if (rf & 2) {
|
|
173
175
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
174
176
|
i0.ɵɵadvance(2);
|
|
175
|
-
i0.ɵɵ
|
|
177
|
+
i0.ɵɵconditional(ctx_r1.SearchText ? 2 : -1);
|
|
176
178
|
i0.ɵɵadvance();
|
|
177
|
-
i0.ɵɵ
|
|
179
|
+
i0.ɵɵconditional(!ctx_r1.SearchText && ctx_r1.Filter !== "all" ? 3 : -1);
|
|
178
180
|
i0.ɵɵadvance();
|
|
179
|
-
i0.ɵɵ
|
|
181
|
+
i0.ɵɵconditional(!ctx_r1.SearchText && ctx_r1.Filter === "all" ? 4 : -1);
|
|
180
182
|
i0.ɵɵadvance();
|
|
181
|
-
i0.ɵɵ
|
|
183
|
+
i0.ɵɵconditional(ctx_r1.Filter === "all" && !ctx_r1.SearchText ? 5 : -1);
|
|
182
184
|
} }
|
|
183
|
-
function
|
|
185
|
+
function APIKeyListComponent_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
184
186
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
185
|
-
i0.ɵɵelementStart(0, "div",
|
|
186
|
-
i0.ɵɵlistener("click", function
|
|
187
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 24)(2, "div", 25);
|
|
188
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSort("Label")); });
|
|
187
189
|
i0.ɵɵtext(3, " Key ");
|
|
188
190
|
i0.ɵɵelement(4, "i");
|
|
189
191
|
i0.ɵɵelementEnd();
|
|
190
|
-
i0.ɵɵelementStart(5, "div",
|
|
191
|
-
i0.ɵɵlistener("click", function
|
|
192
|
+
i0.ɵɵelementStart(5, "div", 26);
|
|
193
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_Template_div_click_5_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSort("User")); });
|
|
192
194
|
i0.ɵɵtext(6, " Owner ");
|
|
193
195
|
i0.ɵɵelement(7, "i");
|
|
194
196
|
i0.ɵɵelementEnd();
|
|
195
|
-
i0.ɵɵelementStart(8, "div",
|
|
196
|
-
i0.ɵɵlistener("click", function
|
|
197
|
+
i0.ɵɵelementStart(8, "div", 27);
|
|
198
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_Template_div_click_8_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSort("Status")); });
|
|
197
199
|
i0.ɵɵtext(9, " Status ");
|
|
198
200
|
i0.ɵɵelement(10, "i");
|
|
199
201
|
i0.ɵɵelementEnd();
|
|
200
|
-
i0.ɵɵelementStart(11, "div",
|
|
202
|
+
i0.ɵɵelementStart(11, "div", 28);
|
|
201
203
|
i0.ɵɵtext(12, " Scopes ");
|
|
202
204
|
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵelementStart(13, "div",
|
|
204
|
-
i0.ɵɵlistener("click", function
|
|
205
|
+
i0.ɵɵelementStart(13, "div", 29);
|
|
206
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_Template_div_click_13_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSort("ExpiresAt")); });
|
|
205
207
|
i0.ɵɵtext(14, " Expires ");
|
|
206
208
|
i0.ɵɵelement(15, "i");
|
|
207
209
|
i0.ɵɵelementEnd();
|
|
208
|
-
i0.ɵɵelementStart(16, "div",
|
|
209
|
-
i0.ɵɵlistener("click", function
|
|
210
|
+
i0.ɵɵelementStart(16, "div", 30);
|
|
211
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_Template_div_click_16_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSort("LastUsedAt")); });
|
|
210
212
|
i0.ɵɵtext(17, " Last Used ");
|
|
211
213
|
i0.ɵɵelement(18, "i");
|
|
212
214
|
i0.ɵɵelementEnd();
|
|
213
|
-
i0.ɵɵelementStart(19, "div",
|
|
214
|
-
i0.ɵɵlistener("click", function
|
|
215
|
+
i0.ɵɵelementStart(19, "div", 31);
|
|
216
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_46_Template_div_click_19_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSort("__mj_CreatedAt")); });
|
|
215
217
|
i0.ɵɵtext(20, " Created ");
|
|
216
218
|
i0.ɵɵelement(21, "i");
|
|
217
219
|
i0.ɵɵelementEnd()();
|
|
218
|
-
i0.ɵɵ
|
|
220
|
+
i0.ɵɵrepeaterCreate(22, APIKeyListComponent_Conditional_46_For_23_Template, 27, 18, "div", 32, i0.ɵɵrepeaterTrackByIdentity);
|
|
221
|
+
i0.ɵɵconditionalCreate(24, APIKeyListComponent_Conditional_46_Conditional_24_Template, 6, 4, "div", 33);
|
|
219
222
|
i0.ɵɵelementEnd();
|
|
220
223
|
} if (rf & 2) {
|
|
221
224
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -232,14 +235,14 @@ function APIKeyListComponent_div_46_Template(rf, ctx) { if (rf & 1) {
|
|
|
232
235
|
i0.ɵɵadvance(3);
|
|
233
236
|
i0.ɵɵclassMap(ctx_r1.getSortIcon("__mj_CreatedAt"));
|
|
234
237
|
i0.ɵɵadvance();
|
|
235
|
-
i0.ɵɵ
|
|
236
|
-
i0.ɵɵadvance();
|
|
237
|
-
i0.ɵɵ
|
|
238
|
+
i0.ɵɵrepeater(ctx_r1.getPaginatedKeys());
|
|
239
|
+
i0.ɵɵadvance(2);
|
|
240
|
+
i0.ɵɵconditional(ctx_r1.FilteredKeys.length === 0 ? 24 : -1);
|
|
238
241
|
} }
|
|
239
|
-
function
|
|
242
|
+
function APIKeyListComponent_Conditional_47_For_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
240
243
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
241
|
-
i0.ɵɵelementStart(0, "button",
|
|
242
|
-
i0.ɵɵlistener("click", function
|
|
244
|
+
i0.ɵɵelementStart(0, "button", 69);
|
|
245
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_47_For_7_Conditional_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const page_r11 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.goToPage(page_r11)); });
|
|
243
246
|
i0.ɵɵtext(1);
|
|
244
247
|
i0.ɵɵelementEnd();
|
|
245
248
|
} if (rf & 2) {
|
|
@@ -249,35 +252,33 @@ function APIKeyListComponent_div_47_ng_container_6_button_1_Template(rf, ctx) {
|
|
|
249
252
|
i0.ɵɵadvance();
|
|
250
253
|
i0.ɵɵtextInterpolate1(" ", page_r11, " ");
|
|
251
254
|
} }
|
|
252
|
-
function
|
|
253
|
-
i0.ɵɵelementStart(0, "span",
|
|
255
|
+
function APIKeyListComponent_Conditional_47_For_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
256
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
254
257
|
i0.ɵɵtext(1, "...");
|
|
255
258
|
i0.ɵɵelementEnd();
|
|
256
259
|
} }
|
|
257
|
-
function
|
|
258
|
-
i0.ɵɵ
|
|
259
|
-
i0.ɵɵ
|
|
260
|
-
i0.ɵɵelementContainerEnd();
|
|
260
|
+
function APIKeyListComponent_Conditional_47_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
261
|
+
i0.ɵɵconditionalCreate(0, APIKeyListComponent_Conditional_47_For_7_Conditional_0_Template, 2, 3, "button", 67);
|
|
262
|
+
i0.ɵɵconditionalCreate(1, APIKeyListComponent_Conditional_47_For_7_Conditional_1_Template, 2, 0, "span", 68);
|
|
261
263
|
} if (rf & 2) {
|
|
262
264
|
const page_r11 = ctx.$implicit;
|
|
265
|
+
i0.ɵɵconditional(page_r11 > 0 ? 0 : -1);
|
|
263
266
|
i0.ɵɵadvance();
|
|
264
|
-
i0.ɵɵ
|
|
265
|
-
i0.ɵɵadvance();
|
|
266
|
-
i0.ɵɵproperty("ngIf", page_r11 === -1);
|
|
267
|
+
i0.ɵɵconditional(page_r11 === -1 ? 1 : -1);
|
|
267
268
|
} }
|
|
268
|
-
function
|
|
269
|
+
function APIKeyListComponent_Conditional_47_Template(rf, ctx) { if (rf & 1) {
|
|
269
270
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
270
|
-
i0.ɵɵelementStart(0, "div",
|
|
271
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "div", 62);
|
|
271
272
|
i0.ɵɵtext(2);
|
|
272
273
|
i0.ɵɵelementEnd();
|
|
273
|
-
i0.ɵɵelementStart(3, "div",
|
|
274
|
-
i0.ɵɵlistener("click", function
|
|
275
|
-
i0.ɵɵelement(5, "i",
|
|
274
|
+
i0.ɵɵelementStart(3, "div", 63)(4, "button", 64);
|
|
275
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_47_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.goToPage(ctx_r1.CurrentPage - 1)); });
|
|
276
|
+
i0.ɵɵelement(5, "i", 65);
|
|
276
277
|
i0.ɵɵelementEnd();
|
|
277
|
-
i0.ɵɵ
|
|
278
|
-
i0.ɵɵelementStart(
|
|
279
|
-
i0.ɵɵlistener("click", function
|
|
280
|
-
i0.ɵɵelement(
|
|
278
|
+
i0.ɵɵrepeaterCreate(6, APIKeyListComponent_Conditional_47_For_7_Template, 2, 2, null, null, i0.ɵɵrepeaterTrackByIdentity);
|
|
279
|
+
i0.ɵɵelementStart(8, "button", 64);
|
|
280
|
+
i0.ɵɵlistener("click", function APIKeyListComponent_Conditional_47_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.goToPage(ctx_r1.CurrentPage + 1)); });
|
|
281
|
+
i0.ɵɵelement(9, "i", 66);
|
|
281
282
|
i0.ɵɵelementEnd()()();
|
|
282
283
|
} if (rf & 2) {
|
|
283
284
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -286,14 +287,10 @@ function APIKeyListComponent_div_47_Template(rf, ctx) { if (rf & 1) {
|
|
|
286
287
|
i0.ɵɵadvance(2);
|
|
287
288
|
i0.ɵɵproperty("disabled", ctx_r1.CurrentPage === 1);
|
|
288
289
|
i0.ɵɵadvance(2);
|
|
289
|
-
i0.ɵɵ
|
|
290
|
-
i0.ɵɵadvance();
|
|
290
|
+
i0.ɵɵrepeater(ctx_r1.getPageNumbers());
|
|
291
|
+
i0.ɵɵadvance(2);
|
|
291
292
|
i0.ɵɵproperty("disabled", ctx_r1.CurrentPage === ctx_r1.getTotalPages());
|
|
292
293
|
} }
|
|
293
|
-
/** Tree shaking prevention function */
|
|
294
|
-
export function LoadAPIKeyList() {
|
|
295
|
-
// This function prevents tree shaking
|
|
296
|
-
}
|
|
297
294
|
/**
|
|
298
295
|
* List view component for displaying and filtering API keys
|
|
299
296
|
*/
|
|
@@ -702,7 +699,7 @@ export class APIKeyListComponent {
|
|
|
702
699
|
}
|
|
703
700
|
}
|
|
704
701
|
static ɵfac = function APIKeyListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || APIKeyListComponent)(); };
|
|
705
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: APIKeyListComponent, selectors: [["mj-api-key-list"]], inputs: { Filter: "Filter" }, outputs: { KeySelected: "KeySelected", CreateRequested: "CreateRequested" }, features: [i0.ɵɵNgOnChangesFeature], decls: 48, vars: 29, consts: [[1, "list-container"], [1, "list-header"], [1, "header-left"], [1, "count-badge"], [1, "header-right"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search keys...", 3, "ngModelChange", "ngModel"], [
|
|
702
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: APIKeyListComponent, selectors: [["mj-api-key-list"]], inputs: { Filter: "Filter" }, outputs: { KeySelected: "KeySelected", CreateRequested: "CreateRequested" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 48, vars: 29, consts: [[1, "list-container"], [1, "list-header"], [1, "header-left"], [1, "count-badge"], [1, "header-right"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search keys...", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "create-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "filter-tabs"], [1, "filter-tab", 3, "click"], [1, "tab-count"], [1, "fa-solid", "fa-check-circle", "status-active"], [1, "fa-solid", "fa-clock", "status-warning"], [1, "fa-solid", "fa-circle-exclamation", "status-danger"], [1, "fa-solid", "fa-question-circle", "status-info"], [1, "fa-solid", "fa-ban", "status-revoked"], ["text", "Loading API keys..."], [1, "key-grid"], [1, "pagination"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [1, "grid-header"], [1, "col-key", "sortable", 3, "click"], [1, "col-owner", "sortable", 3, "click"], [1, "col-status", "sortable", 3, "click"], [1, "col-scopes"], [1, "col-expires", "sortable", 3, "click"], [1, "col-used", "sortable", 3, "click"], [1, "col-created", "sortable", 3, "click"], [1, "grid-row"], [1, "empty-state"], [1, "grid-row", 3, "click"], [1, "col-key"], [1, "key-icon"], [1, "fa-solid", "fa-key"], [1, "key-details"], [1, "key-label"], [1, "key-hash"], [1, "col-owner"], [1, "owner-name"], [1, "col-status"], [1, "status-badge"], [1, "scopes-display"], [1, "no-scopes"], [1, "col-expires"], [1, "expires-value", 3, "ngClass"], [1, "col-used"], [1, "used-value"], [1, "col-created"], [1, "created-value"], [1, "scope-badges"], [1, "scope-more"], [1, "scopes-total"], [1, "scope-badge", 3, "backgroundColor", "color", "title"], [1, "scope-badge", 3, "title"], [1, "badge-count"], [1, "fa-solid", "fa-shield-xmark"], [1, "create-empty-btn"], [1, "create-empty-btn", 3, "click"], [1, "page-info"], [1, "page-buttons"], [1, "page-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "fa-solid", "fa-chevron-right"], [1, "page-btn", 3, "active"], [1, "page-ellipsis"], [1, "page-btn", 3, "click"]], template: function APIKeyListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
706
703
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h3");
|
|
707
704
|
i0.ɵɵtext(4, "API Keys");
|
|
708
705
|
i0.ɵɵelementEnd();
|
|
@@ -715,7 +712,7 @@ export class APIKeyListComponent {
|
|
|
715
712
|
i0.ɵɵtwoWayListener("ngModelChange", function APIKeyListComponent_Template_input_ngModelChange_10_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.SearchText, $event) || (ctx.SearchText = $event); return $event; });
|
|
716
713
|
i0.ɵɵlistener("ngModelChange", function APIKeyListComponent_Template_input_ngModelChange_10_listener() { return ctx.onSearch(); });
|
|
717
714
|
i0.ɵɵelementEnd();
|
|
718
|
-
i0.ɵɵ
|
|
715
|
+
i0.ɵɵconditionalCreate(11, APIKeyListComponent_Conditional_11_Template, 2, 0, "button", 8);
|
|
719
716
|
i0.ɵɵelementEnd();
|
|
720
717
|
i0.ɵɵelementStart(12, "button", 9);
|
|
721
718
|
i0.ɵɵlistener("click", function APIKeyListComponent_Template_button_click_12_listener() { return ctx.requestCreate(); });
|
|
@@ -763,15 +760,17 @@ export class APIKeyListComponent {
|
|
|
763
760
|
i0.ɵɵelementStart(43, "span", 13);
|
|
764
761
|
i0.ɵɵtext(44);
|
|
765
762
|
i0.ɵɵelementEnd()()();
|
|
766
|
-
i0.ɵɵ
|
|
763
|
+
i0.ɵɵconditionalCreate(45, APIKeyListComponent_Conditional_45_Template, 1, 0, "mj-loading", 19);
|
|
764
|
+
i0.ɵɵconditionalCreate(46, APIKeyListComponent_Conditional_46_Template, 25, 13, "div", 20);
|
|
765
|
+
i0.ɵɵconditionalCreate(47, APIKeyListComponent_Conditional_47_Template, 10, 5, "div", 21);
|
|
767
766
|
i0.ɵɵelementEnd();
|
|
768
767
|
} if (rf & 2) {
|
|
769
768
|
i0.ɵɵadvance(6);
|
|
770
|
-
i0.ɵɵtextInterpolate2("", ctx.FilteredKeys.length, " of ", ctx.AllKeys.length
|
|
769
|
+
i0.ɵɵtextInterpolate2("", ctx.FilteredKeys.length, " of ", ctx.AllKeys.length);
|
|
771
770
|
i0.ɵɵadvance(4);
|
|
772
771
|
i0.ɵɵtwoWayProperty("ngModel", ctx.SearchText);
|
|
773
772
|
i0.ɵɵadvance();
|
|
774
|
-
i0.ɵɵ
|
|
773
|
+
i0.ɵɵconditional(ctx.SearchText ? 11 : -1);
|
|
775
774
|
i0.ɵɵadvance(5);
|
|
776
775
|
i0.ɵɵclassProp("active", ctx.Filter === "all");
|
|
777
776
|
i0.ɵɵadvance(3);
|
|
@@ -797,16 +796,16 @@ export class APIKeyListComponent {
|
|
|
797
796
|
i0.ɵɵadvance(4);
|
|
798
797
|
i0.ɵɵtextInterpolate(ctx.Stats.revoked);
|
|
799
798
|
i0.ɵɵadvance();
|
|
800
|
-
i0.ɵɵ
|
|
799
|
+
i0.ɵɵconditional(ctx.IsLoading ? 45 : -1);
|
|
801
800
|
i0.ɵɵadvance();
|
|
802
|
-
i0.ɵɵ
|
|
801
|
+
i0.ɵɵconditional(!ctx.IsLoading ? 46 : -1);
|
|
803
802
|
i0.ɵɵadvance();
|
|
804
|
-
i0.ɵɵ
|
|
805
|
-
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent], styles: [".list-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n\n\n.list-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.header-left[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: #78350f;\n}\n\n.count-badge[_ngcontent-%COMP%] {\n padding: 4px 12px;\n background: rgba(255, 255, 255, 0.7);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: #92400e;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: #9ca3af;\n font-size: 14px;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 260px;\n padding: 10px 36px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #f59e0b;\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #e5e7eb;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.clear-search[_ngcontent-%COMP%]:hover {\n background: #d1d5db;\n}\n\n.clear-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: static;\n font-size: 10px;\n color: #6b7280;\n}\n\n\n\n.create-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n\n\n.filter-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n padding: 0 24px;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n overflow-x: auto;\n}\n\n.filter-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 16px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.2s ease;\n}\n\n.filter-tab[_ngcontent-%COMP%]:hover {\n color: #374151;\n background: #f3f4f6;\n}\n\n.filter-tab.active[_ngcontent-%COMP%] {\n color: #f59e0b;\n border-bottom-color: #f59e0b;\n}\n\n.filter-tab.has-warning[_ngcontent-%COMP%] .tab-count[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.filter-tab.has-danger[_ngcontent-%COMP%] .tab-count[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.tab-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-active[_ngcontent-%COMP%] { color: #10b981; }\n.status-warning[_ngcontent-%COMP%] { color: #f59e0b; }\n.status-danger[_ngcontent-%COMP%] { color: #ef4444; }\n.status-info[_ngcontent-%COMP%] { color: #6b7280; }\n.status-revoked[_ngcontent-%COMP%] { color: #6b7280; }\n\n\n\n.key-grid[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.grid-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 14px 24px;\n background: #f3f4f6;\n border-bottom: 1px solid #e5e7eb;\n font-size: 11px;\n font-weight: 600;\n color: #6b7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n}\n\n.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s ease;\n}\n\n.sortable[_ngcontent-%COMP%]:hover {\n color: #374151;\n}\n\n.sortable[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.5;\n}\n\n\n\n.grid-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid #f3f4f6;\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n}\n\n.grid-row[_ngcontent-%COMP%]:hover {\n background: #fefce8;\n}\n\n.grid-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n\n\n.col-key[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.key-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.key-icon.active[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.key-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: white;\n}\n\n.key-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.key-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.key-hash[_ngcontent-%COMP%] {\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 11px;\n color: #6b7280;\n background: #f3f4f6;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n\n\n.owner-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #374151;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n text-transform: capitalize;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.revoked[_ngcontent-%COMP%] {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n\n\n.col-scopes[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.scopes-display[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scope-badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.scope-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n cursor: default;\n transition: transform 0.15s ease;\n}\n\n.scope-badge[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n.scope-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.badge-count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.scope-more[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 6px;\n background: #f3f4f6;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n color: #6b7280;\n}\n\n.scopes-total[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.no-scopes[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #d1d5db;\n}\n\n.no-scopes[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.expires-value[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.expires-value.never[_ngcontent-%COMP%] {\n color: #6b7280;\n}\n\n.expires-value.ok[_ngcontent-%COMP%] {\n color: #059669;\n}\n\n.expires-value.warning[_ngcontent-%COMP%] {\n color: #d97706;\n font-weight: 500;\n}\n\n.expires-value.critical[_ngcontent-%COMP%] {\n color: #dc2626;\n font-weight: 600;\n}\n\n.expires-value.expired[_ngcontent-%COMP%] {\n color: #dc2626;\n font-weight: 600;\n}\n\n\n\n.used-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #374151;\n}\n\n.used-value.never[_ngcontent-%COMP%] {\n color: #9ca3af;\n font-style: italic;\n}\n\n\n\n.created-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n color: #6b7280;\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #374151;\n}\n\n.create-empty-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 20px;\n padding: 12px 24px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-empty-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n\n\n.pagination[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: #f9fafb;\n border-top: 1px solid #e5e7eb;\n}\n\n.page-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n}\n\n.page-buttons[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.page-btn[_ngcontent-%COMP%] {\n min-width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.page-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: #f59e0b;\n color: #f59e0b;\n}\n\n.page-btn.active[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.page-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-ellipsis[_ngcontent-%COMP%] {\n padding: 0 8px;\n color: #9ca3af;\n}\n\n\n\n@media (max-width: 1200px) {\n .grid-header[_ngcontent-%COMP%], \n .grid-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 1fr 90px 120px 100px;\n }\n\n .col-used[_ngcontent-%COMP%], \n .col-created[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 1024px) {\n .grid-header[_ngcontent-%COMP%], \n .grid-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 90px 110px 100px;\n }\n\n .col-owner[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-right[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: space-between;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 180px;\n }\n\n .grid-header[_ngcontent-%COMP%], \n .grid-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 90px 100px;\n }\n\n .col-expires[_ngcontent-%COMP%], \n .col-scopes[_ngcontent-%COMP%] {\n display: none;\n }\n\n .filter-tabs[_ngcontent-%COMP%] {\n padding: 0 16px;\n }\n}"] });
|
|
803
|
+
i0.ɵɵconditional(!ctx.IsLoading && ctx.FilteredKeys.length > ctx.PageSize ? 47 : -1);
|
|
804
|
+
} }, dependencies: [i1.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent], styles: [".list-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n\n\n.list-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.header-left[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: #78350f;\n}\n\n.count-badge[_ngcontent-%COMP%] {\n padding: 4px 12px;\n background: rgba(255, 255, 255, 0.7);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: #92400e;\n}\n\n.header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: #9ca3af;\n font-size: 14px;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 260px;\n padding: 10px 36px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #f59e0b;\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #e5e7eb;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.clear-search[_ngcontent-%COMP%]:hover {\n background: #d1d5db;\n}\n\n.clear-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: static;\n font-size: 10px;\n color: #6b7280;\n}\n\n\n\n.create-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n\n\n.filter-tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n padding: 0 24px;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n overflow-x: auto;\n}\n\n.filter-tab[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 16px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.2s ease;\n}\n\n.filter-tab[_ngcontent-%COMP%]:hover {\n color: #374151;\n background: #f3f4f6;\n}\n\n.filter-tab.active[_ngcontent-%COMP%] {\n color: #f59e0b;\n border-bottom-color: #f59e0b;\n}\n\n.filter-tab.has-warning[_ngcontent-%COMP%] .tab-count[_ngcontent-%COMP%] {\n background: #fef3c7;\n color: #d97706;\n}\n\n.filter-tab.has-danger[_ngcontent-%COMP%] .tab-count[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.tab-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-active[_ngcontent-%COMP%] { color: #10b981; }\n.status-warning[_ngcontent-%COMP%] { color: #f59e0b; }\n.status-danger[_ngcontent-%COMP%] { color: #ef4444; }\n.status-info[_ngcontent-%COMP%] { color: #6b7280; }\n.status-revoked[_ngcontent-%COMP%] { color: #6b7280; }\n\n\n\n.key-grid[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.grid-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 14px 24px;\n background: #f3f4f6;\n border-bottom: 1px solid #e5e7eb;\n font-size: 11px;\n font-weight: 600;\n color: #6b7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n}\n\n.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s ease;\n}\n\n.sortable[_ngcontent-%COMP%]:hover {\n color: #374151;\n}\n\n.sortable[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.5;\n}\n\n\n\n.grid-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid #f3f4f6;\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n}\n\n.grid-row[_ngcontent-%COMP%]:hover {\n background: #fefce8;\n}\n\n.grid-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n\n\n.col-key[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.key-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.key-icon.active[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.key-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: white;\n}\n\n.key-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.key-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.key-hash[_ngcontent-%COMP%] {\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 11px;\n color: #6b7280;\n background: #f3f4f6;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n\n\n.owner-name[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #374151;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n text-transform: capitalize;\n}\n\n.status-badge.active[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.revoked[_ngcontent-%COMP%] {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n\n\n.col-scopes[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.scopes-display[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scope-badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.scope-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n cursor: default;\n transition: transform 0.15s ease;\n}\n\n.scope-badge[_ngcontent-%COMP%]:hover {\n transform: scale(1.05);\n}\n\n.scope-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.badge-count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n.scope-more[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 6px;\n background: #f3f4f6;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n color: #6b7280;\n}\n\n.scopes-total[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.no-scopes[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #d1d5db;\n}\n\n.no-scopes[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.expires-value[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.expires-value.never[_ngcontent-%COMP%] {\n color: #6b7280;\n}\n\n.expires-value.ok[_ngcontent-%COMP%] {\n color: #059669;\n}\n\n.expires-value.warning[_ngcontent-%COMP%] {\n color: #d97706;\n font-weight: 500;\n}\n\n.expires-value.critical[_ngcontent-%COMP%] {\n color: #dc2626;\n font-weight: 600;\n}\n\n.expires-value.expired[_ngcontent-%COMP%] {\n color: #dc2626;\n font-weight: 600;\n}\n\n\n\n.used-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #374151;\n}\n\n.used-value.never[_ngcontent-%COMP%] {\n color: #9ca3af;\n font-style: italic;\n}\n\n\n\n.created-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n color: #6b7280;\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #374151;\n}\n\n.create-empty-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 20px;\n padding: 12px 24px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-empty-btn[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n\n\n.pagination[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: #f9fafb;\n border-top: 1px solid #e5e7eb;\n}\n\n.page-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n}\n\n.page-buttons[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.page-btn[_ngcontent-%COMP%] {\n min-width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.page-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: #f59e0b;\n color: #f59e0b;\n}\n\n.page-btn.active[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.page-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-ellipsis[_ngcontent-%COMP%] {\n padding: 0 8px;\n color: #9ca3af;\n}\n\n\n\n@media (max-width: 1200px) {\n .grid-header[_ngcontent-%COMP%], \n .grid-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 1fr 90px 120px 100px;\n }\n\n .col-used[_ngcontent-%COMP%], \n .col-created[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 1024px) {\n .grid-header[_ngcontent-%COMP%], \n .grid-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 90px 110px 100px;\n }\n\n .col-owner[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-right[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: space-between;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 180px;\n }\n\n .grid-header[_ngcontent-%COMP%], \n .grid-row[_ngcontent-%COMP%] {\n grid-template-columns: 2fr 90px 100px;\n }\n\n .col-expires[_ngcontent-%COMP%], \n .col-scopes[_ngcontent-%COMP%] {\n display: none;\n }\n\n .filter-tabs[_ngcontent-%COMP%] {\n padding: 0 16px;\n }\n}"] });
|
|
806
805
|
}
|
|
807
806
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(APIKeyListComponent, [{
|
|
808
807
|
type: Component,
|
|
809
|
-
args: [{ selector: 'mj-api-key-list', template: "<div class=\"list-container\">\n <!-- Header -->\n <div class=\"list-header\">\n <div class=\"header-left\">\n <h3>API Keys</h3>\n <span class=\"count-badge\">{{FilteredKeys.length}} of {{AllKeys.length}}</span>\n </div>\n <div class=\"header-right\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\" [(ngModel)]=\"SearchText\"\n (ngModelChange)=\"onSearch()\"\n placeholder=\"Search keys...\" />\n <button class=\"clear-search\" *ngIf=\"SearchText\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <button class=\"create-btn\" (click)=\"requestCreate()\">\n <i class=\"fa-solid fa-plus\"></i>\n Generate Key\n </button>\n </div>\n </div>\n\n <!-- Filter Tabs -->\n <div class=\"filter-tabs\">\n <button class=\"filter-tab\" [class.active]=\"Filter === 'all'\"\n (click)=\"setFilter('all')\">\n All\n <span class=\"tab-count\">{{Stats.total}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'active'\"\n (click)=\"setFilter('active')\">\n <i class=\"fa-solid fa-check-circle status-active\"></i>\n Active\n <span class=\"tab-count\">{{Stats.active}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'expiring'\"\n [class.has-warning]=\"Stats.expiring > 0\"\n (click)=\"setFilter('expiring')\">\n <i class=\"fa-solid fa-clock status-warning\"></i>\n Expiring Soon\n <span class=\"tab-count\">{{Stats.expiring}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'expired'\"\n [class.has-danger]=\"Stats.expired > 0\"\n (click)=\"setFilter('expired')\">\n <i class=\"fa-solid fa-circle-exclamation status-danger\"></i>\n Expired\n <span class=\"tab-count\">{{Stats.expired}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'never-used'\"\n (click)=\"setFilter('never-used')\">\n <i class=\"fa-solid fa-question-circle status-info\"></i>\n Never Used\n <span class=\"tab-count\">{{Stats.neverUsed}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'revoked'\"\n (click)=\"setFilter('revoked')\">\n <i class=\"fa-solid fa-ban status-revoked\"></i>\n Revoked\n <span class=\"tab-count\">{{Stats.revoked}}</span>\n </button>\n </div>\n\n <!-- Loading -->\n <mj-loading *ngIf=\"IsLoading\" text=\"Loading API keys...\"></mj-loading>\n\n <!-- Grid -->\n <div class=\"key-grid\" *ngIf=\"!IsLoading\">\n <!-- Header Row -->\n <div class=\"grid-header\">\n <div class=\"col-key sortable\" (click)=\"toggleSort('Label')\">\n Key\n <i [class]=\"getSortIcon('Label')\"></i>\n </div>\n <div class=\"col-owner sortable\" (click)=\"toggleSort('User')\">\n Owner\n <i [class]=\"getSortIcon('User')\"></i>\n </div>\n <div class=\"col-status sortable\" (click)=\"toggleSort('Status')\">\n Status\n <i [class]=\"getSortIcon('Status')\"></i>\n </div>\n <div class=\"col-scopes\">\n Scopes\n </div>\n <div class=\"col-expires sortable\" (click)=\"toggleSort('ExpiresAt')\">\n Expires\n <i [class]=\"getSortIcon('ExpiresAt')\"></i>\n </div>\n <div class=\"col-used sortable\" (click)=\"toggleSort('LastUsedAt')\">\n Last Used\n <i [class]=\"getSortIcon('LastUsedAt')\"></i>\n </div>\n <div class=\"col-created sortable\" (click)=\"toggleSort('__mj_CreatedAt')\">\n Created\n <i [class]=\"getSortIcon('__mj_CreatedAt')\"></i>\n </div>\n </div>\n\n <!-- Key Rows -->\n <div class=\"grid-row\" *ngFor=\"let key of getPaginatedKeys()\"\n (click)=\"selectKey(key)\">\n <div class=\"col-key\">\n <div class=\"key-icon\" [class.active]=\"key.Status === 'Active'\">\n <i class=\"fa-solid fa-key\"></i>\n </div>\n <div class=\"key-details\">\n <span class=\"key-label\">{{key.Label}}</span>\n <code class=\"key-hash\">...{{key.Hash.slice(-12)}}</code>\n </div>\n </div>\n <div class=\"col-owner\">\n <span class=\"owner-name\">{{key.User}}</span>\n </div>\n <div class=\"col-status\">\n <span class=\"status-badge\" [class.active]=\"key.Status === 'Active'\"\n [class.revoked]=\"key.Status === 'Revoked'\">\n {{key.Status}}\n </span>\n </div>\n <div class=\"col-scopes\">\n <div class=\"scopes-display\" *ngIf=\"getScopeInfo(key).count > 0\">\n <div class=\"scope-badges\">\n <ng-container *ngFor=\"let cat of getScopeInfo(key).categories; let i = index\">\n <span class=\"scope-badge\" *ngIf=\"i < 3\"\n [style.backgroundColor]=\"cat.color + '15'\"\n [style.color]=\"cat.color\"\n [title]=\"cat.category + ': ' + cat.count + ' scope(s)'\">\n <i [class]=\"cat.icon\"></i>\n <span class=\"badge-count\">{{cat.count}}</span>\n </span>\n </ng-container>\n <span class=\"scope-more\" *ngIf=\"getScopeInfo(key).categories.length > 3\">\n +{{getScopeInfo(key).categories.length - 3}}\n </span>\n </div>\n <span class=\"scopes-total\">\n {{getScopeInfo(key).count}} total\n </span>\n </div>\n <span class=\"no-scopes\" *ngIf=\"getScopeInfo(key).count === 0\">\n <i class=\"fa-solid fa-shield-xmark\"></i>\n None\n </span>\n </div>\n <div class=\"col-expires\">\n <span class=\"expires-value\" [ngClass]=\"getExpirationClass(key)\">\n {{formatExpiration(key.ExpiresAt)}}\n </span>\n </div>\n <div class=\"col-used\">\n <span class=\"used-value\" [class.never]=\"!key.LastUsedAt\">\n {{formatDate(key.LastUsedAt)}}\n </span>\n </div>\n <div class=\"col-created\">\n <span class=\"created-value\">{{formatDate(key.__mj_CreatedAt)}}</span>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"FilteredKeys.length === 0\">\n <i class=\"fa-solid fa-key\"></i>\n <span *ngIf=\"SearchText\">No keys matching \"{{SearchText}}\"</span>\n <span *ngIf=\"!SearchText && Filter !== 'all'\">No {{Filter}} keys found</span>\n <span *ngIf=\"!SearchText && Filter === 'all'\">No API keys created yet</span>\n <button class=\"create-empty-btn\" *ngIf=\"Filter === 'all' && !SearchText\"\n (click)=\"requestCreate()\">\n <i class=\"fa-solid fa-plus\"></i>\n Generate Your First Key\n </button>\n </div>\n </div>\n\n <!-- Pagination -->\n <div class=\"pagination\" *ngIf=\"!IsLoading && FilteredKeys.length > PageSize\">\n <div class=\"page-info\">\n Showing {{(CurrentPage - 1) * PageSize + 1}} - {{Math.min(CurrentPage * PageSize, FilteredKeys.length)}}\n of {{FilteredKeys.length}}\n </div>\n <div class=\"page-buttons\">\n <button class=\"page-btn\" [disabled]=\"CurrentPage === 1\"\n (click)=\"goToPage(CurrentPage - 1)\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n <ng-container *ngFor=\"let page of getPageNumbers()\">\n <button class=\"page-btn\" *ngIf=\"page > 0\"\n [class.active]=\"page === CurrentPage\"\n (click)=\"goToPage(page)\">\n {{page}}\n </button>\n <span class=\"page-ellipsis\" *ngIf=\"page === -1\">...</span>\n </ng-container>\n <button class=\"page-btn\" [disabled]=\"CurrentPage === getTotalPages()\"\n (click)=\"goToPage(CurrentPage + 1)\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n </div>\n</div>\n", styles: [".list-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n/* Header */\n.list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.header-left h3 {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: #78350f;\n}\n\n.count-badge {\n padding: 4px 12px;\n background: rgba(255, 255, 255, 0.7);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: #92400e;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: #9ca3af;\n font-size: 14px;\n}\n\n.search-box input {\n width: 260px;\n padding: 10px 36px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: #f59e0b;\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}\n\n.clear-search {\n position: absolute;\n right: 8px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #e5e7eb;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.clear-search:hover {\n background: #d1d5db;\n}\n\n.clear-search i {\n position: static;\n font-size: 10px;\n color: #6b7280;\n}\n\n/* Create Button */\n.create-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n/* Filter Tabs */\n.filter-tabs {\n display: flex;\n gap: 4px;\n padding: 0 24px;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n overflow-x: auto;\n}\n\n.filter-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 16px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.2s ease;\n}\n\n.filter-tab:hover {\n color: #374151;\n background: #f3f4f6;\n}\n\n.filter-tab.active {\n color: #f59e0b;\n border-bottom-color: #f59e0b;\n}\n\n.filter-tab.has-warning .tab-count {\n background: #fef3c7;\n color: #d97706;\n}\n\n.filter-tab.has-danger .tab-count {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.tab-count {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-active { color: #10b981; }\n.status-warning { color: #f59e0b; }\n.status-danger { color: #ef4444; }\n.status-info { color: #6b7280; }\n.status-revoked { color: #6b7280; }\n\n/* Key Grid */\n.key-grid {\n flex: 1;\n overflow-y: auto;\n}\n\n.grid-header {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 14px 24px;\n background: #f3f4f6;\n border-bottom: 1px solid #e5e7eb;\n font-size: 11px;\n font-weight: 600;\n color: #6b7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n}\n\n.sortable {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s ease;\n}\n\n.sortable:hover {\n color: #374151;\n}\n\n.sortable i {\n font-size: 10px;\n opacity: 0.5;\n}\n\n/* Grid Rows */\n.grid-row {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid #f3f4f6;\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n}\n\n.grid-row:hover {\n background: #fefce8;\n}\n\n.grid-row:last-child {\n border-bottom: none;\n}\n\n/* Key Column */\n.col-key {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.key-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.key-icon.active {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.key-icon i {\n font-size: 16px;\n color: white;\n}\n\n.key-details {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.key-label {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.key-hash {\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 11px;\n color: #6b7280;\n background: #f3f4f6;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n/* Owner Column */\n.owner-name {\n font-size: 14px;\n color: #374151;\n}\n\n/* Status Column */\n.status-badge {\n display: inline-block;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n text-transform: capitalize;\n}\n\n.status-badge.active {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.revoked {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n/* Scopes Column */\n.col-scopes {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.scopes-display {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scope-badges {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.scope-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n cursor: default;\n transition: transform 0.15s ease;\n}\n\n.scope-badge:hover {\n transform: scale(1.05);\n}\n\n.scope-badge i {\n font-size: 10px;\n}\n\n.badge-count {\n font-weight: 700;\n}\n\n.scope-more {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 6px;\n background: #f3f4f6;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n color: #6b7280;\n}\n\n.scopes-total {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.no-scopes {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #d1d5db;\n}\n\n.no-scopes i {\n font-size: 11px;\n}\n\n/* Expires Column */\n.expires-value {\n font-size: 13px;\n}\n\n.expires-value.never {\n color: #6b7280;\n}\n\n.expires-value.ok {\n color: #059669;\n}\n\n.expires-value.warning {\n color: #d97706;\n font-weight: 500;\n}\n\n.expires-value.critical {\n color: #dc2626;\n font-weight: 600;\n}\n\n.expires-value.expired {\n color: #dc2626;\n font-weight: 600;\n}\n\n/* Used Column */\n.used-value {\n font-size: 13px;\n color: #374151;\n}\n\n.used-value.never {\n color: #9ca3af;\n font-style: italic;\n}\n\n/* Created Column */\n.created-value {\n font-size: 13px;\n color: #6b7280;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n color: #6b7280;\n text-align: center;\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state span {\n font-size: 16px;\n color: #374151;\n}\n\n.create-empty-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 20px;\n padding: 12px 24px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-empty-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n/* Pagination */\n.pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: #f9fafb;\n border-top: 1px solid #e5e7eb;\n}\n\n.page-info {\n font-size: 13px;\n color: #6b7280;\n}\n\n.page-buttons {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.page-btn {\n min-width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.page-btn:hover:not(:disabled) {\n border-color: #f59e0b;\n color: #f59e0b;\n}\n\n.page-btn.active {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.page-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-ellipsis {\n padding: 0 8px;\n color: #9ca3af;\n}\n\n/* Responsive */\n@media (max-width: 1200px) {\n .grid-header,\n .grid-row {\n grid-template-columns: 2fr 1fr 90px 120px 100px;\n }\n\n .col-used,\n .col-created {\n display: none;\n }\n}\n\n@media (max-width: 1024px) {\n .grid-header,\n .grid-row {\n grid-template-columns: 2fr 90px 110px 100px;\n }\n\n .col-owner {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-right {\n width: 100%;\n justify-content: space-between;\n }\n\n .search-box input {\n width: 180px;\n }\n\n .grid-header,\n .grid-row {\n grid-template-columns: 2fr 90px 100px;\n }\n\n .col-expires,\n .col-scopes {\n display: none;\n }\n\n .filter-tabs {\n padding: 0 16px;\n }\n}\n"] }]
|
|
808
|
+
args: [{ standalone: false, selector: 'mj-api-key-list', template: "<div class=\"list-container\">\n <!-- Header -->\n <div class=\"list-header\">\n <div class=\"header-left\">\n <h3>API Keys</h3>\n <span class=\"count-badge\">{{FilteredKeys.length}} of {{AllKeys.length}}</span>\n </div>\n <div class=\"header-right\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\" [(ngModel)]=\"SearchText\"\n (ngModelChange)=\"onSearch()\"\n placeholder=\"Search keys...\" />\n @if (SearchText) {\n <button class=\"clear-search\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <button class=\"create-btn\" (click)=\"requestCreate()\">\n <i class=\"fa-solid fa-plus\"></i>\n Generate Key\n </button>\n </div>\n </div>\n\n <!-- Filter Tabs -->\n <div class=\"filter-tabs\">\n <button class=\"filter-tab\" [class.active]=\"Filter === 'all'\"\n (click)=\"setFilter('all')\">\n All\n <span class=\"tab-count\">{{Stats.total}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'active'\"\n (click)=\"setFilter('active')\">\n <i class=\"fa-solid fa-check-circle status-active\"></i>\n Active\n <span class=\"tab-count\">{{Stats.active}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'expiring'\"\n [class.has-warning]=\"Stats.expiring > 0\"\n (click)=\"setFilter('expiring')\">\n <i class=\"fa-solid fa-clock status-warning\"></i>\n Expiring Soon\n <span class=\"tab-count\">{{Stats.expiring}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'expired'\"\n [class.has-danger]=\"Stats.expired > 0\"\n (click)=\"setFilter('expired')\">\n <i class=\"fa-solid fa-circle-exclamation status-danger\"></i>\n Expired\n <span class=\"tab-count\">{{Stats.expired}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'never-used'\"\n (click)=\"setFilter('never-used')\">\n <i class=\"fa-solid fa-question-circle status-info\"></i>\n Never Used\n <span class=\"tab-count\">{{Stats.neverUsed}}</span>\n </button>\n <button class=\"filter-tab\" [class.active]=\"Filter === 'revoked'\"\n (click)=\"setFilter('revoked')\">\n <i class=\"fa-solid fa-ban status-revoked\"></i>\n Revoked\n <span class=\"tab-count\">{{Stats.revoked}}</span>\n </button>\n </div>\n\n <!-- Loading -->\n @if (IsLoading) {\n <mj-loading text=\"Loading API keys...\"></mj-loading>\n }\n\n <!-- Grid -->\n @if (!IsLoading) {\n <div class=\"key-grid\">\n <!-- Header Row -->\n <div class=\"grid-header\">\n <div class=\"col-key sortable\" (click)=\"toggleSort('Label')\">\n Key\n <i [class]=\"getSortIcon('Label')\"></i>\n </div>\n <div class=\"col-owner sortable\" (click)=\"toggleSort('User')\">\n Owner\n <i [class]=\"getSortIcon('User')\"></i>\n </div>\n <div class=\"col-status sortable\" (click)=\"toggleSort('Status')\">\n Status\n <i [class]=\"getSortIcon('Status')\"></i>\n </div>\n <div class=\"col-scopes\">\n Scopes\n </div>\n <div class=\"col-expires sortable\" (click)=\"toggleSort('ExpiresAt')\">\n Expires\n <i [class]=\"getSortIcon('ExpiresAt')\"></i>\n </div>\n <div class=\"col-used sortable\" (click)=\"toggleSort('LastUsedAt')\">\n Last Used\n <i [class]=\"getSortIcon('LastUsedAt')\"></i>\n </div>\n <div class=\"col-created sortable\" (click)=\"toggleSort('__mj_CreatedAt')\">\n Created\n <i [class]=\"getSortIcon('__mj_CreatedAt')\"></i>\n </div>\n </div>\n <!-- Key Rows -->\n @for (key of getPaginatedKeys(); track key) {\n <div class=\"grid-row\"\n (click)=\"selectKey(key)\">\n <div class=\"col-key\">\n <div class=\"key-icon\" [class.active]=\"key.Status === 'Active'\">\n <i class=\"fa-solid fa-key\"></i>\n </div>\n <div class=\"key-details\">\n <span class=\"key-label\">{{key.Label}}</span>\n <code class=\"key-hash\">...{{key.Hash.slice(-12)}}</code>\n </div>\n </div>\n <div class=\"col-owner\">\n <span class=\"owner-name\">{{key.User}}</span>\n </div>\n <div class=\"col-status\">\n <span class=\"status-badge\" [class.active]=\"key.Status === 'Active'\"\n [class.revoked]=\"key.Status === 'Revoked'\">\n {{key.Status}}\n </span>\n </div>\n <div class=\"col-scopes\">\n @if (getScopeInfo(key).count > 0) {\n <div class=\"scopes-display\">\n <div class=\"scope-badges\">\n @for (cat of getScopeInfo(key).categories; track cat; let i = $index) {\n @if (i < 3) {\n <span class=\"scope-badge\"\n [style.backgroundColor]=\"cat.color + '15'\"\n [style.color]=\"cat.color\"\n [title]=\"cat.category + ': ' + cat.count + ' scope(s)'\">\n <i [class]=\"cat.icon\"></i>\n <span class=\"badge-count\">{{cat.count}}</span>\n </span>\n }\n }\n @if (getScopeInfo(key).categories.length > 3) {\n <span class=\"scope-more\">\n +{{getScopeInfo(key).categories.length - 3}}\n </span>\n }\n </div>\n <span class=\"scopes-total\">\n {{getScopeInfo(key).count}} total\n </span>\n </div>\n }\n @if (getScopeInfo(key).count === 0) {\n <span class=\"no-scopes\">\n <i class=\"fa-solid fa-shield-xmark\"></i>\n None\n </span>\n }\n </div>\n <div class=\"col-expires\">\n <span class=\"expires-value\" [ngClass]=\"getExpirationClass(key)\">\n {{formatExpiration(key.ExpiresAt)}}\n </span>\n </div>\n <div class=\"col-used\">\n <span class=\"used-value\" [class.never]=\"!key.LastUsedAt\">\n {{formatDate(key.LastUsedAt)}}\n </span>\n </div>\n <div class=\"col-created\">\n <span class=\"created-value\">{{formatDate(key.__mj_CreatedAt)}}</span>\n </div>\n </div>\n }\n <!-- Empty State -->\n @if (FilteredKeys.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-key\"></i>\n @if (SearchText) {\n <span>No keys matching \"{{SearchText}}\"</span>\n }\n @if (!SearchText && Filter !== 'all') {\n <span>No {{Filter}} keys found</span>\n }\n @if (!SearchText && Filter === 'all') {\n <span>No API keys created yet</span>\n }\n @if (Filter === 'all' && !SearchText) {\n <button class=\"create-empty-btn\"\n (click)=\"requestCreate()\">\n <i class=\"fa-solid fa-plus\"></i>\n Generate Your First Key\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Pagination -->\n @if (!IsLoading && FilteredKeys.length > PageSize) {\n <div class=\"pagination\">\n <div class=\"page-info\">\n Showing {{(CurrentPage - 1) * PageSize + 1}} - {{Math.min(CurrentPage * PageSize, FilteredKeys.length)}}\n of {{FilteredKeys.length}}\n </div>\n <div class=\"page-buttons\">\n <button class=\"page-btn\" [disabled]=\"CurrentPage === 1\"\n (click)=\"goToPage(CurrentPage - 1)\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n @for (page of getPageNumbers(); track page) {\n @if (page > 0) {\n <button class=\"page-btn\"\n [class.active]=\"page === CurrentPage\"\n (click)=\"goToPage(page)\">\n {{page}}\n </button>\n }\n @if (page === -1) {\n <span class=\"page-ellipsis\">...</span>\n }\n }\n <button class=\"page-btn\" [disabled]=\"CurrentPage === getTotalPages()\"\n (click)=\"goToPage(CurrentPage + 1)\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n </div>\n }\n</div>\n", styles: [".list-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n/* Header */\n.list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.header-left h3 {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: #78350f;\n}\n\n.count-badge {\n padding: 4px 12px;\n background: rgba(255, 255, 255, 0.7);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: #92400e;\n}\n\n.header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: #9ca3af;\n font-size: 14px;\n}\n\n.search-box input {\n width: 260px;\n padding: 10px 36px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: #f59e0b;\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}\n\n.clear-search {\n position: absolute;\n right: 8px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #e5e7eb;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.clear-search:hover {\n background: #d1d5db;\n}\n\n.clear-search i {\n position: static;\n font-size: 10px;\n color: #6b7280;\n}\n\n/* Create Button */\n.create-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-btn:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n/* Filter Tabs */\n.filter-tabs {\n display: flex;\n gap: 4px;\n padding: 0 24px;\n background: #f9fafb;\n border-bottom: 1px solid #e5e7eb;\n overflow-x: auto;\n}\n\n.filter-tab {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 16px;\n background: transparent;\n border: none;\n border-bottom: 2px solid transparent;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n cursor: pointer;\n white-space: nowrap;\n transition: all 0.2s ease;\n}\n\n.filter-tab:hover {\n color: #374151;\n background: #f3f4f6;\n}\n\n.filter-tab.active {\n color: #f59e0b;\n border-bottom-color: #f59e0b;\n}\n\n.filter-tab.has-warning .tab-count {\n background: #fef3c7;\n color: #d97706;\n}\n\n.filter-tab.has-danger .tab-count {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.tab-count {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.status-active { color: #10b981; }\n.status-warning { color: #f59e0b; }\n.status-danger { color: #ef4444; }\n.status-info { color: #6b7280; }\n.status-revoked { color: #6b7280; }\n\n/* Key Grid */\n.key-grid {\n flex: 1;\n overflow-y: auto;\n}\n\n.grid-header {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 14px 24px;\n background: #f3f4f6;\n border-bottom: 1px solid #e5e7eb;\n font-size: 11px;\n font-weight: 600;\n color: #6b7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n}\n\n.sortable {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: color 0.2s ease;\n}\n\n.sortable:hover {\n color: #374151;\n}\n\n.sortable i {\n font-size: 10px;\n opacity: 0.5;\n}\n\n/* Grid Rows */\n.grid-row {\n display: grid;\n grid-template-columns: 2fr 1fr 90px 160px 100px 110px 100px;\n gap: 12px;\n padding: 16px 24px;\n border-bottom: 1px solid #f3f4f6;\n cursor: pointer;\n transition: background 0.2s ease;\n align-items: center;\n}\n\n.grid-row:hover {\n background: #fefce8;\n}\n\n.grid-row:last-child {\n border-bottom: none;\n}\n\n/* Key Column */\n.col-key {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.key-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.key-icon.active {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n.key-icon i {\n font-size: 16px;\n color: white;\n}\n\n.key-details {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.key-label {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.key-hash {\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 11px;\n color: #6b7280;\n background: #f3f4f6;\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n/* Owner Column */\n.owner-name {\n font-size: 14px;\n color: #374151;\n}\n\n/* Status Column */\n.status-badge {\n display: inline-block;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n text-transform: capitalize;\n}\n\n.status-badge.active {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.revoked {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n/* Scopes Column */\n.col-scopes {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n}\n\n.scopes-display {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.scope-badges {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n}\n\n.scope-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n cursor: default;\n transition: transform 0.15s ease;\n}\n\n.scope-badge:hover {\n transform: scale(1.05);\n}\n\n.scope-badge i {\n font-size: 10px;\n}\n\n.badge-count {\n font-weight: 700;\n}\n\n.scope-more {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 6px;\n background: #f3f4f6;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n color: #6b7280;\n}\n\n.scopes-total {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.no-scopes {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #d1d5db;\n}\n\n.no-scopes i {\n font-size: 11px;\n}\n\n/* Expires Column */\n.expires-value {\n font-size: 13px;\n}\n\n.expires-value.never {\n color: #6b7280;\n}\n\n.expires-value.ok {\n color: #059669;\n}\n\n.expires-value.warning {\n color: #d97706;\n font-weight: 500;\n}\n\n.expires-value.critical {\n color: #dc2626;\n font-weight: 600;\n}\n\n.expires-value.expired {\n color: #dc2626;\n font-weight: 600;\n}\n\n/* Used Column */\n.used-value {\n font-size: 13px;\n color: #374151;\n}\n\n.used-value.never {\n color: #9ca3af;\n font-style: italic;\n}\n\n/* Created Column */\n.created-value {\n font-size: 13px;\n color: #6b7280;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 64px 24px;\n color: #6b7280;\n text-align: center;\n}\n\n.empty-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state span {\n font-size: 16px;\n color: #374151;\n}\n\n.create-empty-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 20px;\n padding: 12px 24px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.create-empty-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n/* Pagination */\n.pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: #f9fafb;\n border-top: 1px solid #e5e7eb;\n}\n\n.page-info {\n font-size: 13px;\n color: #6b7280;\n}\n\n.page-buttons {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.page-btn {\n min-width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.page-btn:hover:not(:disabled) {\n border-color: #f59e0b;\n color: #f59e0b;\n}\n\n.page-btn.active {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.page-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.page-ellipsis {\n padding: 0 8px;\n color: #9ca3af;\n}\n\n/* Responsive */\n@media (max-width: 1200px) {\n .grid-header,\n .grid-row {\n grid-template-columns: 2fr 1fr 90px 120px 100px;\n }\n\n .col-used,\n .col-created {\n display: none;\n }\n}\n\n@media (max-width: 1024px) {\n .grid-header,\n .grid-row {\n grid-template-columns: 2fr 90px 110px 100px;\n }\n\n .col-owner {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header {\n flex-direction: column;\n gap: 16px;\n }\n\n .header-right {\n width: 100%;\n justify-content: space-between;\n }\n\n .search-box input {\n width: 180px;\n }\n\n .grid-header,\n .grid-row {\n grid-template-columns: 2fr 90px 100px;\n }\n\n .col-expires,\n .col-scopes {\n display: none;\n }\n\n .filter-tabs {\n padding: 0 16px;\n }\n}\n"] }]
|
|
810
809
|
}], null, { Filter: [{
|
|
811
810
|
type: Input
|
|
812
811
|
}], KeySelected: [{
|
|
@@ -814,5 +813,5 @@ export class APIKeyListComponent {
|
|
|
814
813
|
}], CreateRequested: [{
|
|
815
814
|
type: Output
|
|
816
815
|
}] }); })();
|
|
817
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(APIKeyListComponent, { className: "APIKeyListComponent", filePath: "src/APIKeys/api-key-list.component.ts", lineNumber:
|
|
816
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(APIKeyListComponent, { className: "APIKeyListComponent", filePath: "src/APIKeys/api-key-list.component.ts", lineNumber: 32 }); })();
|
|
818
817
|
//# sourceMappingURL=api-key-list.component.js.map
|