@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
|
@@ -3,37 +3,37 @@ import { Metadata } from '@memberjunction/core';
|
|
|
3
3
|
import { GraphQLEncryptionClient } from '@memberjunction/graphql-dataprovider';
|
|
4
4
|
import { APIKeysEngineBase, parseAPIScopeUIConfig } from '@memberjunction/api-keys-base';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/
|
|
7
|
-
import * as i2 from "@angular
|
|
8
|
-
import * as i3 from "@progress/kendo-angular-
|
|
9
|
-
import * as i4 from "@progress/kendo-angular-
|
|
10
|
-
import * as i5 from "@
|
|
11
|
-
import * as i6 from "@
|
|
12
|
-
function
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "@progress/kendo-angular-inputs";
|
|
8
|
+
import * as i3 from "@progress/kendo-angular-dateinputs";
|
|
9
|
+
import * as i4 from "@progress/kendo-angular-buttons";
|
|
10
|
+
import * as i5 from "@memberjunction/ng-shared-generic";
|
|
11
|
+
import * as i6 from "@angular/common";
|
|
12
|
+
function APIKeyCreateDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
13
13
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
14
14
|
i0.ɵɵelementStart(0, "div", 13);
|
|
15
|
-
i0.ɵɵlistener("click", function
|
|
15
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Step !== "success" ? ctx_r1.close() : null); });
|
|
16
16
|
i0.ɵɵelementEnd();
|
|
17
17
|
} }
|
|
18
|
-
function
|
|
18
|
+
function APIKeyCreateDialogComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
19
19
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
20
20
|
i0.ɵɵelementStart(0, "button", 14);
|
|
21
|
-
i0.ɵɵlistener("click", function
|
|
21
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
22
22
|
i0.ɵɵelement(1, "i", 15);
|
|
23
23
|
i0.ɵɵelementEnd();
|
|
24
24
|
} }
|
|
25
|
-
function
|
|
26
|
-
i0.ɵɵelementStart(0, "div",
|
|
25
|
+
function APIKeyCreateDialogComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "div", 16)(2, "div", 17);
|
|
27
27
|
i0.ɵɵtext(3, "1");
|
|
28
28
|
i0.ɵɵelementEnd();
|
|
29
|
-
i0.ɵɵelementStart(4, "div",
|
|
29
|
+
i0.ɵɵelementStart(4, "div", 18);
|
|
30
30
|
i0.ɵɵtext(5, "Configure");
|
|
31
31
|
i0.ɵɵelementEnd()();
|
|
32
|
-
i0.ɵɵelement(6, "div",
|
|
33
|
-
i0.ɵɵelementStart(7, "div",
|
|
32
|
+
i0.ɵɵelement(6, "div", 19);
|
|
33
|
+
i0.ɵɵelementStart(7, "div", 16)(8, "div", 17);
|
|
34
34
|
i0.ɵɵtext(9, "2");
|
|
35
35
|
i0.ɵɵelementEnd();
|
|
36
|
-
i0.ɵɵelementStart(10, "div",
|
|
36
|
+
i0.ɵɵelementStart(10, "div", 18);
|
|
37
37
|
i0.ɵɵtext(11, "Permissions");
|
|
38
38
|
i0.ɵɵelementEnd()()();
|
|
39
39
|
} if (rf & 2) {
|
|
@@ -45,10 +45,10 @@ function APIKeyCreateDialogComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
45
45
|
i0.ɵɵadvance();
|
|
46
46
|
i0.ɵɵclassProp("active", ctx_r1.Step === "scopes");
|
|
47
47
|
} }
|
|
48
|
-
function
|
|
48
|
+
function APIKeyCreateDialogComponent_Conditional_10_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
49
49
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
50
|
-
i0.ɵɵelementStart(0, "button",
|
|
51
|
-
i0.ɵɵlistener("click", function
|
|
50
|
+
i0.ɵɵelementStart(0, "button", 34);
|
|
51
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_10_Conditional_19_For_2_Template_button_click_0_listener() { const preset_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onPresetSelect(preset_r6)); });
|
|
52
52
|
i0.ɵɵtext(1);
|
|
53
53
|
i0.ɵɵelementEnd();
|
|
54
54
|
} if (rf & 2) {
|
|
@@ -58,19 +58,19 @@ function APIKeyCreateDialogComponent_div_10_div_19_button_1_Template(rf, ctx) {
|
|
|
58
58
|
i0.ɵɵadvance();
|
|
59
59
|
i0.ɵɵtextInterpolate1(" ", preset_r6.label, " ");
|
|
60
60
|
} }
|
|
61
|
-
function
|
|
62
|
-
i0.ɵɵelementStart(0, "div",
|
|
63
|
-
i0.ɵɵ
|
|
61
|
+
function APIKeyCreateDialogComponent_Conditional_10_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
63
|
+
i0.ɵɵrepeaterCreate(1, APIKeyCreateDialogComponent_Conditional_10_Conditional_19_For_2_Template, 2, 3, "button", 33, i0.ɵɵrepeaterTrackByIdentity);
|
|
64
64
|
i0.ɵɵelementEnd();
|
|
65
65
|
} if (rf & 2) {
|
|
66
66
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
67
67
|
i0.ɵɵadvance();
|
|
68
|
-
i0.ɵɵ
|
|
68
|
+
i0.ɵɵrepeater(ctx_r1.ExpirationPresets);
|
|
69
69
|
} }
|
|
70
|
-
function
|
|
70
|
+
function APIKeyCreateDialogComponent_Conditional_10_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
71
71
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
72
|
-
i0.ɵɵelementStart(0, "div",
|
|
73
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
72
|
+
i0.ɵɵelementStart(0, "div", 30)(1, "kendo-datepicker", 35);
|
|
73
|
+
i0.ɵɵtwoWayListener("ngModelChange", function APIKeyCreateDialogComponent_Conditional_10_Conditional_20_Template_kendo_datepicker_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ExpiresAt, $event) || (ctx_r1.ExpiresAt = $event); return i0.ɵɵresetView($event); });
|
|
74
74
|
i0.ɵɵelementEnd()();
|
|
75
75
|
} if (rf & 2) {
|
|
76
76
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -78,9 +78,9 @@ function APIKeyCreateDialogComponent_div_10_div_20_Template(rf, ctx) { if (rf &
|
|
|
78
78
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ExpiresAt);
|
|
79
79
|
i0.ɵɵproperty("min", ctx_r1.getMinDate());
|
|
80
80
|
} }
|
|
81
|
-
function
|
|
82
|
-
i0.ɵɵelementStart(0, "div",
|
|
83
|
-
i0.ɵɵelement(1, "i",
|
|
81
|
+
function APIKeyCreateDialogComponent_Conditional_10_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
83
|
+
i0.ɵɵelement(1, "i", 36);
|
|
84
84
|
i0.ɵɵelementStart(2, "span");
|
|
85
85
|
i0.ɵɵtext(3);
|
|
86
86
|
i0.ɵɵpipe(4, "date");
|
|
@@ -88,11 +88,11 @@ function APIKeyCreateDialogComponent_div_10_div_21_Template(rf, ctx) { if (rf &
|
|
|
88
88
|
} if (rf & 2) {
|
|
89
89
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
90
90
|
i0.ɵɵadvance(3);
|
|
91
|
-
i0.ɵɵtextInterpolate1("Key will expire on ", i0.ɵɵpipeBind2(4, 1, ctx_r1.ExpiresAt, "MMMM d, yyyy")
|
|
91
|
+
i0.ɵɵtextInterpolate1("Key will expire on ", i0.ɵɵpipeBind2(4, 1, ctx_r1.ExpiresAt, "MMMM d, yyyy"));
|
|
92
92
|
} }
|
|
93
|
-
function
|
|
94
|
-
i0.ɵɵelementStart(0, "div",
|
|
95
|
-
i0.ɵɵelement(1, "i",
|
|
93
|
+
function APIKeyCreateDialogComponent_Conditional_10_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
95
|
+
i0.ɵɵelement(1, "i", 37);
|
|
96
96
|
i0.ɵɵtext(2);
|
|
97
97
|
i0.ɵɵelementEnd();
|
|
98
98
|
} if (rf & 2) {
|
|
@@ -100,36 +100,38 @@ function APIKeyCreateDialogComponent_div_10_div_22_Template(rf, ctx) { if (rf &
|
|
|
100
100
|
i0.ɵɵadvance(2);
|
|
101
101
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.Error, " ");
|
|
102
102
|
} }
|
|
103
|
-
function
|
|
103
|
+
function APIKeyCreateDialogComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
104
104
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
105
|
-
i0.ɵɵelementStart(0, "div",
|
|
105
|
+
i0.ɵɵelementStart(0, "div", 8)(1, "div", 20)(2, "label", 21);
|
|
106
106
|
i0.ɵɵtext(3, "Key Label");
|
|
107
107
|
i0.ɵɵelementEnd();
|
|
108
|
-
i0.ɵɵelementStart(4, "input",
|
|
109
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
108
|
+
i0.ɵɵelementStart(4, "input", 22);
|
|
109
|
+
i0.ɵɵtwoWayListener("ngModelChange", function APIKeyCreateDialogComponent_Conditional_10_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.Label, $event) || (ctx_r1.Label = $event); return i0.ɵɵresetView($event); });
|
|
110
110
|
i0.ɵɵelementEnd();
|
|
111
|
-
i0.ɵɵelementStart(5, "div",
|
|
111
|
+
i0.ɵɵelementStart(5, "div", 23);
|
|
112
112
|
i0.ɵɵtext(6, "A memorable name to identify this key's purpose");
|
|
113
113
|
i0.ɵɵelementEnd()();
|
|
114
|
-
i0.ɵɵelementStart(7, "div",
|
|
114
|
+
i0.ɵɵelementStart(7, "div", 20)(8, "label", 24);
|
|
115
115
|
i0.ɵɵtext(9, "Description");
|
|
116
116
|
i0.ɵɵelementEnd();
|
|
117
|
-
i0.ɵɵelementStart(10, "textarea",
|
|
118
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
117
|
+
i0.ɵɵelementStart(10, "textarea", 25);
|
|
118
|
+
i0.ɵɵtwoWayListener("ngModelChange", function APIKeyCreateDialogComponent_Conditional_10_Template_textarea_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.Description, $event) || (ctx_r1.Description = $event); return i0.ɵɵresetView($event); });
|
|
119
119
|
i0.ɵɵelementEnd()();
|
|
120
|
-
i0.ɵɵelementStart(11, "div",
|
|
120
|
+
i0.ɵɵelementStart(11, "div", 20)(12, "label", 24);
|
|
121
121
|
i0.ɵɵtext(13, "Expiration");
|
|
122
122
|
i0.ɵɵelementEnd();
|
|
123
|
-
i0.ɵɵelementStart(14, "div",
|
|
124
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
125
|
-
i0.ɵɵlistener("change", function
|
|
123
|
+
i0.ɵɵelementStart(14, "div", 26)(15, "label", 27)(16, "input", 28);
|
|
124
|
+
i0.ɵɵtwoWayListener("ngModelChange", function APIKeyCreateDialogComponent_Conditional_10_Template_input_ngModelChange_16_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.NeverExpires, $event) || (ctx_r1.NeverExpires = $event); return i0.ɵɵresetView($event); });
|
|
125
|
+
i0.ɵɵlistener("change", function APIKeyCreateDialogComponent_Conditional_10_Template_input_change_16_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onNeverExpiresChange()); });
|
|
126
126
|
i0.ɵɵelementEnd();
|
|
127
127
|
i0.ɵɵelementStart(17, "span");
|
|
128
128
|
i0.ɵɵtext(18, "Never expires");
|
|
129
129
|
i0.ɵɵelementEnd()();
|
|
130
|
-
i0.ɵɵ
|
|
130
|
+
i0.ɵɵconditionalCreate(19, APIKeyCreateDialogComponent_Conditional_10_Conditional_19_Template, 3, 0, "div", 29);
|
|
131
|
+
i0.ɵɵconditionalCreate(20, APIKeyCreateDialogComponent_Conditional_10_Conditional_20_Template, 2, 2, "div", 30);
|
|
132
|
+
i0.ɵɵconditionalCreate(21, APIKeyCreateDialogComponent_Conditional_10_Conditional_21_Template, 5, 4, "div", 31);
|
|
131
133
|
i0.ɵɵelementEnd()();
|
|
132
|
-
i0.ɵɵ
|
|
134
|
+
i0.ɵɵconditionalCreate(22, APIKeyCreateDialogComponent_Conditional_10_Conditional_22_Template, 3, 1, "div", 32);
|
|
133
135
|
i0.ɵɵelementEnd();
|
|
134
136
|
} if (rf & 2) {
|
|
135
137
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -141,16 +143,16 @@ function APIKeyCreateDialogComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
141
143
|
i0.ɵɵadvance(6);
|
|
142
144
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.NeverExpires);
|
|
143
145
|
i0.ɵɵadvance(3);
|
|
144
|
-
i0.ɵɵ
|
|
146
|
+
i0.ɵɵconditional(!ctx_r1.NeverExpires ? 19 : -1);
|
|
145
147
|
i0.ɵɵadvance();
|
|
146
|
-
i0.ɵɵ
|
|
148
|
+
i0.ɵɵconditional(!ctx_r1.NeverExpires && (ctx_r1.SelectedPreset == null ? null : ctx_r1.SelectedPreset.days) === -1 ? 20 : -1);
|
|
147
149
|
i0.ɵɵadvance();
|
|
148
|
-
i0.ɵɵ
|
|
150
|
+
i0.ɵɵconditional(!ctx_r1.NeverExpires && ctx_r1.ExpiresAt ? 21 : -1);
|
|
149
151
|
i0.ɵɵadvance();
|
|
150
|
-
i0.ɵɵ
|
|
152
|
+
i0.ɵɵconditional(ctx_r1.Error ? 22 : -1);
|
|
151
153
|
} }
|
|
152
|
-
function
|
|
153
|
-
i0.ɵɵelementStart(0, "div",
|
|
154
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
155
|
+
i0.ɵɵelementStart(0, "div", 40)(1, "span", 46);
|
|
154
156
|
i0.ɵɵtext(2);
|
|
155
157
|
i0.ɵɵelementEnd();
|
|
156
158
|
i0.ɵɵtext(3, " selected ");
|
|
@@ -160,11 +162,11 @@ function APIKeyCreateDialogComponent_div_11_div_7_Template(rf, ctx) { if (rf & 1
|
|
|
160
162
|
i0.ɵɵadvance(2);
|
|
161
163
|
i0.ɵɵtextInterpolate(ctx_r1.getSelectedScopeCount());
|
|
162
164
|
} }
|
|
163
|
-
function
|
|
164
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
165
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
+
i0.ɵɵelement(0, "mj-loading", 41);
|
|
165
167
|
} }
|
|
166
|
-
function
|
|
167
|
-
i0.ɵɵelementStart(0, "span",
|
|
168
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
168
170
|
i0.ɵɵtext(1);
|
|
169
171
|
i0.ɵɵelementEnd();
|
|
170
172
|
} if (rf & 2) {
|
|
@@ -172,16 +174,16 @@ function APIKeyCreateDialogComponent_div_11_div_9_div_1_div_14_div_1_span_6_Temp
|
|
|
172
174
|
i0.ɵɵadvance();
|
|
173
175
|
i0.ɵɵtextInterpolate1(" ", item_r11.scope.Description, " ");
|
|
174
176
|
} }
|
|
175
|
-
function
|
|
177
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
176
178
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
177
|
-
i0.ɵɵelementStart(0, "div",
|
|
178
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
179
|
-
i0.ɵɵlistener("change", function
|
|
179
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "label", 58)(2, "input", 28);
|
|
180
|
+
i0.ɵɵtwoWayListener("ngModelChange", function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_For_2_Template_input_ngModelChange_2_listener($event) { const item_r11 = i0.ɵɵrestoreView(_r10).$implicit; i0.ɵɵtwoWayBindingSet(item_r11.selected, $event) || (item_r11.selected = $event); return i0.ɵɵresetView($event); });
|
|
181
|
+
i0.ɵɵlistener("change", function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_For_2_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r10); const category_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.updateCategoryState(category_r9)); });
|
|
180
182
|
i0.ɵɵelementEnd();
|
|
181
|
-
i0.ɵɵelementStart(3, "div",
|
|
183
|
+
i0.ɵɵelementStart(3, "div", 59)(4, "span", 60);
|
|
182
184
|
i0.ɵɵtext(5);
|
|
183
185
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵ
|
|
186
|
+
i0.ɵɵconditionalCreate(6, APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_For_2_Conditional_6_Template, 2, 1, "span", 61);
|
|
185
187
|
i0.ɵɵelementEnd()()();
|
|
186
188
|
} if (rf & 2) {
|
|
187
189
|
const item_r11 = ctx.$implicit;
|
|
@@ -190,40 +192,40 @@ function APIKeyCreateDialogComponent_div_11_div_9_div_1_div_14_div_1_Template(rf
|
|
|
190
192
|
i0.ɵɵadvance(3);
|
|
191
193
|
i0.ɵɵtextInterpolate(item_r11.scope.Name);
|
|
192
194
|
i0.ɵɵadvance();
|
|
193
|
-
i0.ɵɵ
|
|
195
|
+
i0.ɵɵconditional(item_r11.scope.Description ? 6 : -1);
|
|
194
196
|
} }
|
|
195
|
-
function
|
|
196
|
-
i0.ɵɵelementStart(0, "div",
|
|
197
|
-
i0.ɵɵ
|
|
197
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
i0.ɵɵelementStart(0, "div", 56);
|
|
199
|
+
i0.ɵɵrepeaterCreate(1, APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_For_2_Template, 7, 3, "div", 57, i0.ɵɵrepeaterTrackByIdentity);
|
|
198
200
|
i0.ɵɵelementEnd();
|
|
199
201
|
} if (rf & 2) {
|
|
200
202
|
const category_r9 = i0.ɵɵnextContext().$implicit;
|
|
201
203
|
i0.ɵɵadvance();
|
|
202
|
-
i0.ɵɵ
|
|
204
|
+
i0.ɵɵrepeater(category_r9.scopes);
|
|
203
205
|
} }
|
|
204
|
-
function
|
|
206
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
205
207
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
206
|
-
i0.ɵɵelementStart(0, "div",
|
|
207
|
-
i0.ɵɵlistener("click", function
|
|
208
|
-
i0.ɵɵelementStart(2, "div",
|
|
208
|
+
i0.ɵɵelementStart(0, "div", 47)(1, "div", 48);
|
|
209
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Template_div_click_1_listener() { const category_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleCategory(category_r9)); });
|
|
210
|
+
i0.ɵɵelementStart(2, "div", 49);
|
|
209
211
|
i0.ɵɵelement(3, "i");
|
|
210
|
-
i0.ɵɵelementStart(4, "span",
|
|
212
|
+
i0.ɵɵelementStart(4, "span", 50);
|
|
211
213
|
i0.ɵɵtext(5);
|
|
212
214
|
i0.ɵɵelementEnd();
|
|
213
|
-
i0.ɵɵelementStart(6, "span",
|
|
215
|
+
i0.ɵɵelementStart(6, "span", 51);
|
|
214
216
|
i0.ɵɵtext(7);
|
|
215
217
|
i0.ɵɵelementEnd()();
|
|
216
|
-
i0.ɵɵelementStart(8, "div",
|
|
217
|
-
i0.ɵɵlistener("click", function
|
|
218
|
-
i0.ɵɵelementStart(10, "input",
|
|
219
|
-
i0.ɵɵlistener("change", function
|
|
218
|
+
i0.ɵɵelementStart(8, "div", 52)(9, "label", 53);
|
|
219
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Template_label_click_9_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
220
|
+
i0.ɵɵelementStart(10, "input", 54);
|
|
221
|
+
i0.ɵɵlistener("change", function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Template_input_change_10_listener() { const category_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleCategoryAll(category_r9)); });
|
|
220
222
|
i0.ɵɵelementEnd();
|
|
221
223
|
i0.ɵɵelementStart(11, "span");
|
|
222
224
|
i0.ɵɵtext(12, "All");
|
|
223
225
|
i0.ɵɵelementEnd()();
|
|
224
|
-
i0.ɵɵelement(13, "i",
|
|
226
|
+
i0.ɵɵelement(13, "i", 55);
|
|
225
227
|
i0.ɵɵelementEnd()();
|
|
226
|
-
i0.ɵɵ
|
|
228
|
+
i0.ɵɵconditionalCreate(14, APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Conditional_14_Template, 3, 0, "div", 56);
|
|
227
229
|
i0.ɵɵelementEnd();
|
|
228
230
|
} if (rf & 2) {
|
|
229
231
|
const category_r9 = ctx.$implicit;
|
|
@@ -239,20 +241,20 @@ function APIKeyCreateDialogComponent_div_11_div_9_div_1_Template(rf, ctx) { if (
|
|
|
239
241
|
i0.ɵɵadvance(3);
|
|
240
242
|
i0.ɵɵclassProp("fa-chevron-down", !category_r9.expanded)("fa-chevron-up", category_r9.expanded);
|
|
241
243
|
i0.ɵɵadvance();
|
|
242
|
-
i0.ɵɵ
|
|
244
|
+
i0.ɵɵconditional(category_r9.expanded ? 14 : -1);
|
|
243
245
|
} }
|
|
244
|
-
function
|
|
245
|
-
i0.ɵɵelementStart(0, "div",
|
|
246
|
-
i0.ɵɵ
|
|
246
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
247
|
+
i0.ɵɵelementStart(0, "div", 42);
|
|
248
|
+
i0.ɵɵrepeaterCreate(1, APIKeyCreateDialogComponent_Conditional_11_Conditional_9_For_2_Template, 15, 12, "div", 47, i0.ɵɵrepeaterTrackByIdentity);
|
|
247
249
|
i0.ɵɵelementEnd();
|
|
248
250
|
} if (rf & 2) {
|
|
249
251
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
250
252
|
i0.ɵɵadvance();
|
|
251
|
-
i0.ɵɵ
|
|
253
|
+
i0.ɵɵrepeater(ctx_r1.ScopeCategories);
|
|
252
254
|
} }
|
|
253
|
-
function
|
|
254
|
-
i0.ɵɵelementStart(0, "div",
|
|
255
|
-
i0.ɵɵelement(1, "i",
|
|
255
|
+
function APIKeyCreateDialogComponent_Conditional_11_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
256
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
257
|
+
i0.ɵɵelement(1, "i", 62);
|
|
256
258
|
i0.ɵɵelementStart(2, "div")(3, "strong");
|
|
257
259
|
i0.ɵɵtext(4, "Warning: No permissions selected");
|
|
258
260
|
i0.ɵɵelementEnd();
|
|
@@ -264,18 +266,19 @@ function APIKeyCreateDialogComponent_div_11_div_17_Template(rf, ctx) { if (rf &
|
|
|
264
266
|
i0.ɵɵtext(9, " and cannot perform any operations. This key will be rejected by all API endpoints until scopes are assigned.");
|
|
265
267
|
i0.ɵɵelementEnd()()();
|
|
266
268
|
} }
|
|
267
|
-
function
|
|
268
|
-
i0.ɵɵelementStart(0, "div",
|
|
269
|
+
function APIKeyCreateDialogComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
270
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 38)(2, "div", 39)(3, "h4");
|
|
269
271
|
i0.ɵɵtext(4, "Select Permission Scopes");
|
|
270
272
|
i0.ɵɵelementEnd();
|
|
271
273
|
i0.ɵɵelementStart(5, "p");
|
|
272
274
|
i0.ɵɵtext(6, "Choose what this API key can access. You can always modify this later.");
|
|
273
275
|
i0.ɵɵelementEnd()();
|
|
274
|
-
i0.ɵɵ
|
|
276
|
+
i0.ɵɵconditionalCreate(7, APIKeyCreateDialogComponent_Conditional_11_Conditional_7_Template, 4, 1, "div", 40);
|
|
275
277
|
i0.ɵɵelementEnd();
|
|
276
|
-
i0.ɵɵ
|
|
277
|
-
i0.ɵɵ
|
|
278
|
-
i0.ɵɵ
|
|
278
|
+
i0.ɵɵconditionalCreate(8, APIKeyCreateDialogComponent_Conditional_11_Conditional_8_Template, 1, 0, "mj-loading", 41);
|
|
279
|
+
i0.ɵɵconditionalCreate(9, APIKeyCreateDialogComponent_Conditional_11_Conditional_9_Template, 3, 0, "div", 42);
|
|
280
|
+
i0.ɵɵelementStart(10, "div", 43);
|
|
281
|
+
i0.ɵɵelement(11, "i", 44);
|
|
279
282
|
i0.ɵɵelementStart(12, "span");
|
|
280
283
|
i0.ɵɵtext(13, "Tip: Use wildcards like ");
|
|
281
284
|
i0.ɵɵelementStart(14, "code");
|
|
@@ -283,24 +286,24 @@ function APIKeyCreateDialogComponent_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
283
286
|
i0.ɵɵelementEnd();
|
|
284
287
|
i0.ɵɵtext(16, " for broad access within a category");
|
|
285
288
|
i0.ɵɵelementEnd()();
|
|
286
|
-
i0.ɵɵ
|
|
289
|
+
i0.ɵɵconditionalCreate(17, APIKeyCreateDialogComponent_Conditional_11_Conditional_17_Template, 10, 0, "div", 45);
|
|
287
290
|
i0.ɵɵelementEnd();
|
|
288
291
|
} if (rf & 2) {
|
|
289
292
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
290
293
|
i0.ɵɵadvance(7);
|
|
291
|
-
i0.ɵɵ
|
|
294
|
+
i0.ɵɵconditional(ctx_r1.getSelectedScopeCount() > 0 ? 7 : -1);
|
|
292
295
|
i0.ɵɵadvance();
|
|
293
|
-
i0.ɵɵ
|
|
296
|
+
i0.ɵɵconditional(ctx_r1.IsLoadingScopes ? 8 : -1);
|
|
294
297
|
i0.ɵɵadvance();
|
|
295
|
-
i0.ɵɵ
|
|
298
|
+
i0.ɵɵconditional(!ctx_r1.IsLoadingScopes ? 9 : -1);
|
|
296
299
|
i0.ɵɵadvance(8);
|
|
297
|
-
i0.ɵɵ
|
|
300
|
+
i0.ɵɵconditional(!ctx_r1.IsLoadingScopes && ctx_r1.getSelectedScopeCount() === 0 ? 17 : -1);
|
|
298
301
|
} }
|
|
299
|
-
function
|
|
300
|
-
i0.ɵɵelementStart(0, "div",
|
|
302
|
+
function APIKeyCreateDialogComponent_Conditional_12_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
303
|
+
i0.ɵɵelementStart(0, "div", 71)(1, "span", 72);
|
|
301
304
|
i0.ɵɵtext(2, "Description:");
|
|
302
305
|
i0.ɵɵelementEnd();
|
|
303
|
-
i0.ɵɵelementStart(3, "span",
|
|
306
|
+
i0.ɵɵelementStart(3, "span", 73);
|
|
304
307
|
i0.ɵɵtext(4);
|
|
305
308
|
i0.ɵɵelementEnd()();
|
|
306
309
|
} if (rf & 2) {
|
|
@@ -308,50 +311,50 @@ function APIKeyCreateDialogComponent_div_12_div_23_Template(rf, ctx) { if (rf &
|
|
|
308
311
|
i0.ɵɵadvance(4);
|
|
309
312
|
i0.ɵɵtextInterpolate(ctx_r1.Description);
|
|
310
313
|
} }
|
|
311
|
-
function
|
|
314
|
+
function APIKeyCreateDialogComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
312
315
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
313
|
-
i0.ɵɵelementStart(0, "div",
|
|
314
|
-
i0.ɵɵelement(2, "i",
|
|
316
|
+
i0.ɵɵelementStart(0, "div", 10)(1, "div", 63);
|
|
317
|
+
i0.ɵɵelement(2, "i", 64);
|
|
315
318
|
i0.ɵɵelementEnd();
|
|
316
|
-
i0.ɵɵelementStart(3, "h3",
|
|
319
|
+
i0.ɵɵelementStart(3, "h3", 65);
|
|
317
320
|
i0.ɵɵtext(4, "API Key Created Successfully!");
|
|
318
321
|
i0.ɵɵelementEnd();
|
|
319
|
-
i0.ɵɵelementStart(5, "div",
|
|
320
|
-
i0.ɵɵelement(7, "i",
|
|
322
|
+
i0.ɵɵelementStart(5, "div", 66)(6, "div", 67);
|
|
323
|
+
i0.ɵɵelement(7, "i", 62);
|
|
321
324
|
i0.ɵɵelementStart(8, "span");
|
|
322
325
|
i0.ɵɵtext(9, "Copy this key now. It won't be shown again!");
|
|
323
326
|
i0.ɵɵelementEnd()();
|
|
324
|
-
i0.ɵɵelementStart(10, "div",
|
|
327
|
+
i0.ɵɵelementStart(10, "div", 68)(11, "code");
|
|
325
328
|
i0.ɵɵtext(12);
|
|
326
329
|
i0.ɵɵelementEnd();
|
|
327
|
-
i0.ɵɵelementStart(13, "button",
|
|
328
|
-
i0.ɵɵlistener("click", function
|
|
329
|
-
i0.ɵɵelement(14, "i",
|
|
330
|
+
i0.ɵɵelementStart(13, "button", 69);
|
|
331
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_12_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.copyKey()); });
|
|
332
|
+
i0.ɵɵelement(14, "i", 55);
|
|
330
333
|
i0.ɵɵelementStart(15, "span");
|
|
331
334
|
i0.ɵɵtext(16);
|
|
332
335
|
i0.ɵɵelementEnd()()()();
|
|
333
|
-
i0.ɵɵelementStart(17, "div",
|
|
336
|
+
i0.ɵɵelementStart(17, "div", 70)(18, "div", 71)(19, "span", 72);
|
|
334
337
|
i0.ɵɵtext(20, "Label:");
|
|
335
338
|
i0.ɵɵelementEnd();
|
|
336
|
-
i0.ɵɵelementStart(21, "span",
|
|
339
|
+
i0.ɵɵelementStart(21, "span", 73);
|
|
337
340
|
i0.ɵɵtext(22);
|
|
338
341
|
i0.ɵɵelementEnd()();
|
|
339
|
-
i0.ɵɵ
|
|
340
|
-
i0.ɵɵelementStart(24, "div",
|
|
342
|
+
i0.ɵɵconditionalCreate(23, APIKeyCreateDialogComponent_Conditional_12_Conditional_23_Template, 5, 1, "div", 71);
|
|
343
|
+
i0.ɵɵelementStart(24, "div", 71)(25, "span", 72);
|
|
341
344
|
i0.ɵɵtext(26, "Expires:");
|
|
342
345
|
i0.ɵɵelementEnd();
|
|
343
|
-
i0.ɵɵelementStart(27, "span",
|
|
346
|
+
i0.ɵɵelementStart(27, "span", 73);
|
|
344
347
|
i0.ɵɵtext(28);
|
|
345
348
|
i0.ɵɵpipe(29, "date");
|
|
346
349
|
i0.ɵɵelementEnd()();
|
|
347
|
-
i0.ɵɵelementStart(30, "div",
|
|
350
|
+
i0.ɵɵelementStart(30, "div", 71)(31, "span", 72);
|
|
348
351
|
i0.ɵɵtext(32, "Scopes:");
|
|
349
352
|
i0.ɵɵelementEnd();
|
|
350
|
-
i0.ɵɵelementStart(33, "span",
|
|
353
|
+
i0.ɵɵelementStart(33, "span", 73);
|
|
351
354
|
i0.ɵɵtext(34);
|
|
352
355
|
i0.ɵɵelementEnd()()();
|
|
353
|
-
i0.ɵɵelementStart(35, "div",
|
|
354
|
-
i0.ɵɵelement(36, "i",
|
|
356
|
+
i0.ɵɵelementStart(35, "div", 74);
|
|
357
|
+
i0.ɵɵelement(36, "i", 75);
|
|
355
358
|
i0.ɵɵelementStart(37, "div")(38, "strong");
|
|
356
359
|
i0.ɵɵtext(39, "Security Note:");
|
|
357
360
|
i0.ɵɵelementEnd();
|
|
@@ -370,79 +373,67 @@ function APIKeyCreateDialogComponent_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
|
370
373
|
i0.ɵɵadvance(6);
|
|
371
374
|
i0.ɵɵtextInterpolate(ctx_r1.Label);
|
|
372
375
|
i0.ɵɵadvance();
|
|
373
|
-
i0.ɵɵ
|
|
376
|
+
i0.ɵɵconditional(ctx_r1.Description ? 23 : -1);
|
|
374
377
|
i0.ɵɵadvance(5);
|
|
375
378
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.NeverExpires ? "Never" : i0.ɵɵpipeBind2(29, 12, ctx_r1.ExpiresAt, "MMMM d, yyyy"), " ");
|
|
376
379
|
i0.ɵɵadvance(6);
|
|
377
380
|
i0.ɵɵtextInterpolate1("", ctx_r1.getSelectedScopeCount(), " permissions");
|
|
378
381
|
} }
|
|
379
|
-
function
|
|
382
|
+
function APIKeyCreateDialogComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
380
383
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
381
|
-
i0.ɵɵ
|
|
382
|
-
i0.ɵɵ
|
|
383
|
-
i0.ɵɵ
|
|
384
|
-
i0.ɵɵ
|
|
385
|
-
i0.ɵɵelement(3, "i", 94);
|
|
384
|
+
i0.ɵɵelementStart(0, "button", 76);
|
|
385
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.goToScopes()); });
|
|
386
|
+
i0.ɵɵtext(1, " Next: Permissions ");
|
|
387
|
+
i0.ɵɵelement(2, "i", 77);
|
|
386
388
|
i0.ɵɵelementEnd();
|
|
387
|
-
i0.ɵɵelementStart(
|
|
388
|
-
i0.ɵɵlistener("click", function
|
|
389
|
-
i0.ɵɵtext(
|
|
389
|
+
i0.ɵɵelementStart(3, "button", 78);
|
|
390
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_14_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
391
|
+
i0.ɵɵtext(4, "Cancel");
|
|
390
392
|
i0.ɵɵelementEnd();
|
|
391
|
-
i0.ɵɵelementContainerEnd();
|
|
392
393
|
} if (rf & 2) {
|
|
393
|
-
i0.ɵɵadvance();
|
|
394
394
|
i0.ɵɵproperty("themeColor", "primary");
|
|
395
395
|
} }
|
|
396
|
-
function
|
|
397
|
-
i0.ɵɵelement(0, "mj-loading",
|
|
396
|
+
function APIKeyCreateDialogComponent_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
397
|
+
i0.ɵɵelement(0, "mj-loading", 80);
|
|
398
398
|
} if (rf & 2) {
|
|
399
399
|
i0.ɵɵproperty("showText", false);
|
|
400
400
|
} }
|
|
401
|
-
function
|
|
401
|
+
function APIKeyCreateDialogComponent_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
402
402
|
i0.ɵɵelementStart(0, "span");
|
|
403
403
|
i0.ɵɵelement(1, "i", 4);
|
|
404
404
|
i0.ɵɵtext(2, " Generate Key ");
|
|
405
405
|
i0.ɵɵelementEnd();
|
|
406
406
|
} }
|
|
407
|
-
function
|
|
407
|
+
function APIKeyCreateDialogComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
408
408
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
409
|
-
i0.ɵɵ
|
|
410
|
-
i0.ɵɵ
|
|
411
|
-
i0.ɵɵ
|
|
412
|
-
i0.ɵɵ
|
|
409
|
+
i0.ɵɵelementStart(0, "button", 79);
|
|
410
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.createKey()); });
|
|
411
|
+
i0.ɵɵconditionalCreate(1, APIKeyCreateDialogComponent_Conditional_15_Conditional_1_Template, 1, 1, "mj-loading", 80);
|
|
412
|
+
i0.ɵɵconditionalCreate(2, APIKeyCreateDialogComponent_Conditional_15_Conditional_2_Template, 3, 0, "span");
|
|
413
413
|
i0.ɵɵelementEnd();
|
|
414
|
-
i0.ɵɵelementStart(
|
|
415
|
-
i0.ɵɵlistener("click", function
|
|
416
|
-
i0.ɵɵelement(
|
|
417
|
-
i0.ɵɵtext(
|
|
414
|
+
i0.ɵɵelementStart(3, "button", 78);
|
|
415
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_15_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.goBack()); });
|
|
416
|
+
i0.ɵɵelement(4, "i", 81);
|
|
417
|
+
i0.ɵɵtext(5, " Back ");
|
|
418
418
|
i0.ɵɵelementEnd();
|
|
419
|
-
i0.ɵɵelementContainerEnd();
|
|
420
419
|
} if (rf & 2) {
|
|
421
420
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
422
|
-
i0.ɵɵadvance();
|
|
423
421
|
i0.ɵɵproperty("themeColor", "primary")("disabled", ctx_r1.IsCreating);
|
|
424
422
|
i0.ɵɵadvance();
|
|
425
|
-
i0.ɵɵ
|
|
423
|
+
i0.ɵɵconditional(ctx_r1.IsCreating ? 1 : -1);
|
|
426
424
|
i0.ɵɵadvance();
|
|
427
|
-
i0.ɵɵ
|
|
425
|
+
i0.ɵɵconditional(!ctx_r1.IsCreating ? 2 : -1);
|
|
428
426
|
} }
|
|
429
|
-
function
|
|
427
|
+
function APIKeyCreateDialogComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
430
428
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
431
|
-
i0.ɵɵ
|
|
432
|
-
i0.ɵɵ
|
|
433
|
-
i0.ɵɵ
|
|
434
|
-
i0.ɵɵ
|
|
435
|
-
i0.ɵɵtext(3, " Done ");
|
|
429
|
+
i0.ɵɵelementStart(0, "button", 76);
|
|
430
|
+
i0.ɵɵlistener("click", function APIKeyCreateDialogComponent_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
431
|
+
i0.ɵɵelement(1, "i", 82);
|
|
432
|
+
i0.ɵɵtext(2, " Done ");
|
|
436
433
|
i0.ɵɵelementEnd();
|
|
437
|
-
i0.ɵɵelementContainerEnd();
|
|
438
434
|
} if (rf & 2) {
|
|
439
|
-
i0.ɵɵadvance();
|
|
440
435
|
i0.ɵɵproperty("themeColor", "primary");
|
|
441
436
|
} }
|
|
442
|
-
/** Tree shaking prevention function */
|
|
443
|
-
export function LoadAPIKeyCreateDialog() {
|
|
444
|
-
// This function prevents tree shaking
|
|
445
|
-
}
|
|
446
437
|
/**
|
|
447
438
|
* Dialog for creating new API keys
|
|
448
439
|
* Shows the raw key only once - it cannot be recovered after closing
|
|
@@ -710,48 +701,52 @@ export class APIKeyCreateDialogComponent {
|
|
|
710
701
|
}
|
|
711
702
|
static ɵfac = function APIKeyCreateDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || APIKeyCreateDialogComponent)(); };
|
|
712
703
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: APIKeyCreateDialogComponent, selectors: [["mj-api-key-create-dialog"]], hostBindings: function APIKeyCreateDialogComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
713
|
-
i0.ɵɵlistener("keydown.escape", function APIKeyCreateDialogComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); },
|
|
714
|
-
} }, inputs: { Visible: "Visible" }, outputs: { VisibleChange: "VisibleChange", Created: "Created", Closed: "Closed" }, decls: 17, vars: 11, consts: [[
|
|
715
|
-
i0.ɵɵ
|
|
704
|
+
i0.ɵɵlistener("keydown.escape", function APIKeyCreateDialogComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); }, i0.ɵɵresolveDocument);
|
|
705
|
+
} }, inputs: { Visible: "Visible" }, outputs: { VisibleChange: "VisibleChange", Created: "Created", Closed: "Closed" }, standalone: false, decls: 17, vars: 11, consts: [[1, "slideout-backdrop"], [1, "slideout-panel"], [1, "slideout-header"], [1, "slideout-title"], [1, "fa-solid", "fa-key"], ["title", "Close (Esc)", 1, "slideout-close"], [1, "step-indicator"], [1, "slideout-content"], [1, "step-panel"], [1, "step-panel", "scopes-step"], [1, "step-panel", "success-step"], [1, "slideout-footer"], ["kendoButton", "", 3, "themeColor"], [1, "slideout-backdrop", 3, "click"], ["title", "Close (Esc)", 1, "slideout-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "form-section"], [1, "form-label", "required"], ["kendoTextBox", "", "placeholder", "e.g., ElevenLabs Integration, CI/CD Pipeline", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "form-hint"], [1, "form-label"], ["kendoTextArea", "", "placeholder", "Optional notes about how this key will be used...", 1, "form-textarea", 3, "ngModelChange", "ngModel", "rows"], [1, "expiration-options"], [1, "checkbox-label"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModelChange", "change", "ngModel"], [1, "preset-buttons"], [1, "custom-date"], [1, "expiration-preview"], [1, "error-message"], [1, "preset-btn", 3, "active"], [1, "preset-btn", 3, "click"], ["format", "MMM d, yyyy", "placeholder", "Select expiration date", 3, "ngModelChange", "ngModel", "min"], [1, "fa-solid", "fa-calendar-check"], [1, "fa-solid", "fa-circle-exclamation"], [1, "scopes-header"], [1, "scopes-info"], [1, "scopes-count"], ["text", "Loading scopes..."], [1, "scope-categories"], [1, "scope-tip"], [1, "fa-solid", "fa-lightbulb"], [1, "no-scopes-warning"], [1, "count"], [1, "scope-category"], [1, "category-header", 3, "click"], [1, "category-left"], [1, "category-name"], [1, "category-badge"], [1, "category-right"], [1, "select-all-label", 3, "click"], ["type", "checkbox", "kendoCheckBox", "", 3, "change", "checked"], [1, "fa-solid"], [1, "category-scopes"], [1, "scope-item"], [1, "scope-label"], [1, "scope-info"], [1, "scope-name"], [1, "scope-desc"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "success-icon"], [1, "fa-solid", "fa-check-circle"], [1, "success-title"], [1, "key-display"], [1, "key-warning"], [1, "key-value"], [1, "copy-btn", 3, "click"], [1, "key-details"], [1, "detail-row"], [1, "detail-label"], [1, "detail-value"], [1, "security-note"], [1, "fa-solid", "fa-shield-check"], ["kendoButton", "", 3, "click", "themeColor"], [1, "fa-solid", "fa-arrow-right"], ["kendoButton", "", 3, "click"], ["kendoButton", "", 3, "click", "themeColor", "disabled"], ["size", "small", 3, "showText"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-check"]], template: function APIKeyCreateDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
706
|
+
i0.ɵɵconditionalCreate(0, APIKeyCreateDialogComponent_Conditional_0_Template, 1, 0, "div", 0);
|
|
716
707
|
i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
|
|
717
708
|
i0.ɵɵelement(4, "i", 4);
|
|
718
709
|
i0.ɵɵelementStart(5, "span");
|
|
719
710
|
i0.ɵɵtext(6, "Generate New API Key");
|
|
720
711
|
i0.ɵɵelementEnd()();
|
|
721
|
-
i0.ɵɵ
|
|
712
|
+
i0.ɵɵconditionalCreate(7, APIKeyCreateDialogComponent_Conditional_7_Template, 2, 0, "button", 5);
|
|
722
713
|
i0.ɵɵelementEnd();
|
|
723
|
-
i0.ɵɵ
|
|
714
|
+
i0.ɵɵconditionalCreate(8, APIKeyCreateDialogComponent_Conditional_8_Template, 12, 8, "div", 6);
|
|
724
715
|
i0.ɵɵelementStart(9, "div", 7);
|
|
725
|
-
i0.ɵɵ
|
|
716
|
+
i0.ɵɵconditionalCreate(10, APIKeyCreateDialogComponent_Conditional_10_Template, 23, 8, "div", 8);
|
|
717
|
+
i0.ɵɵconditionalCreate(11, APIKeyCreateDialogComponent_Conditional_11_Template, 18, 4, "div", 9);
|
|
718
|
+
i0.ɵɵconditionalCreate(12, APIKeyCreateDialogComponent_Conditional_12_Template, 41, 15, "div", 10);
|
|
726
719
|
i0.ɵɵelementEnd();
|
|
727
720
|
i0.ɵɵelementStart(13, "div", 11);
|
|
728
|
-
i0.ɵɵ
|
|
721
|
+
i0.ɵɵconditionalCreate(14, APIKeyCreateDialogComponent_Conditional_14_Template, 5, 1);
|
|
722
|
+
i0.ɵɵconditionalCreate(15, APIKeyCreateDialogComponent_Conditional_15_Template, 6, 4);
|
|
723
|
+
i0.ɵɵconditionalCreate(16, APIKeyCreateDialogComponent_Conditional_16_Template, 3, 1, "button", 12);
|
|
729
724
|
i0.ɵɵelementEnd()();
|
|
730
725
|
} if (rf & 2) {
|
|
731
|
-
i0.ɵɵ
|
|
726
|
+
i0.ɵɵconditional(ctx.Visible ? 0 : -1);
|
|
732
727
|
i0.ɵɵadvance();
|
|
733
728
|
i0.ɵɵclassProp("open", ctx.Visible);
|
|
734
729
|
i0.ɵɵadvance(6);
|
|
735
|
-
i0.ɵɵ
|
|
730
|
+
i0.ɵɵconditional(ctx.Step !== "success" ? 7 : -1);
|
|
736
731
|
i0.ɵɵadvance();
|
|
737
|
-
i0.ɵɵ
|
|
732
|
+
i0.ɵɵconditional(ctx.Step !== "success" ? 8 : -1);
|
|
738
733
|
i0.ɵɵadvance(2);
|
|
739
|
-
i0.ɵɵ
|
|
734
|
+
i0.ɵɵconditional(ctx.Step === "configure" ? 10 : -1);
|
|
740
735
|
i0.ɵɵadvance();
|
|
741
|
-
i0.ɵɵ
|
|
736
|
+
i0.ɵɵconditional(ctx.Step === "scopes" ? 11 : -1);
|
|
742
737
|
i0.ɵɵadvance();
|
|
743
|
-
i0.ɵɵ
|
|
738
|
+
i0.ɵɵconditional(ctx.Step === "success" ? 12 : -1);
|
|
744
739
|
i0.ɵɵadvance(2);
|
|
745
|
-
i0.ɵɵ
|
|
740
|
+
i0.ɵɵconditional(ctx.Step === "configure" ? 14 : -1);
|
|
746
741
|
i0.ɵɵadvance();
|
|
747
|
-
i0.ɵɵ
|
|
742
|
+
i0.ɵɵconditional(ctx.Step === "scopes" ? 15 : -1);
|
|
748
743
|
i0.ɵɵadvance();
|
|
749
|
-
i0.ɵɵ
|
|
750
|
-
} }, dependencies: [i1.NgForOf, i1.NgIf, i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.TextAreaDirective, i3.TextBoxDirective, i3.CheckBoxDirective, i4.DatePickerComponent, i5.ButtonComponent, i6.LoadingComponent, i1.DatePipe], styles: ["\n\n\n\n\n\n\n.slideout-backdrop[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n z-index: 100;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n.slideout-panel[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n right: 0;\n width: 520px;\n height: 100%;\n max-height: 100%;\n background: var(--card-background, #ffffff);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 101;\n display: flex;\n flex-direction: column;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n transform: translateX(100%);\n overflow: hidden;\n}\n\n.slideout-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n\n\n.slideout-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fafafa 0%, #f3f4f6 100%);\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.slideout-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n font-weight: 600;\n font-size: 17px;\n color: #1f2937;\n flex: 1;\n min-width: 0;\n}\n\n.slideout-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #f59e0b;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.slideout-close[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: #9ca3af;\n cursor: pointer;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.slideout-close[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.05);\n color: #374151;\n}\n\n\n\n.slideout-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.step-panel[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.slideout-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);\n border-top: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button {\n min-width: 100px;\n padding: 10px 20px;\n font-weight: 600;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button-solid-primary {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n box-shadow: 0 2px 8px rgba(245, 158, 11, 0.3);\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button-solid-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button i {\n margin: 0 5px;\n}\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n font-weight: 600;\n font-size: 14px;\n color: #6b7280;\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: #10b981;\n border-color: #10b981;\n color: white;\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: #92400e;\n font-weight: 600;\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 80px;\n height: 2px;\n background: #d1d5db;\n margin: 0 16px;\n margin-bottom: 20px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, #10b981, #f59e0b);\n}\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.scopes-content[_ngcontent-%COMP%] {\n max-height: 450px;\n}\n\n\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-weight: 600;\n font-size: 14px;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.form-label.required[_ngcontent-%COMP%]::after {\n content: ' *';\n color: #ef4444;\n}\n\n.form-input[_ngcontent-%COMP%], \n.form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6b7280;\n margin-top: 6px;\n}\n\n\n\n.expiration-options[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n}\n\n.preset-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.preset-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.preset-btn[_ngcontent-%COMP%]:hover {\n border-color: #f59e0b;\n background: #fffbeb;\n}\n\n.preset-btn.active[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.custom-date[_ngcontent-%COMP%] {\n margin-top: 4px;\n}\n\n.expiration-preview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: #ecfdf5;\n border-radius: 8px;\n font-size: 13px;\n color: #059669;\n}\n\n.expiration-preview[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-size: 14px;\n}\n\n\n\n.scopes-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n}\n\n.scopes-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 16px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.scopes-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: #6b7280;\n}\n\n.scopes-count[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n}\n\n.scopes-count[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n\n\n.scope-categories[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.scope-category[_ngcontent-%COMP%] {\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n overflow: hidden;\n}\n\n.category-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.category-header[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n}\n\n.category-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.category-left[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n}\n\n.category-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.category-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.select-all-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6b7280;\n cursor: pointer;\n}\n\n.category-right[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #9ca3af;\n font-size: 12px;\n}\n\n.category-scopes[_ngcontent-%COMP%] {\n padding: 8px 16px 16px;\n border-top: 1px solid #e5e7eb;\n background: white;\n}\n\n.scope-item[_ngcontent-%COMP%] {\n padding: 10px 0;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.scope-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.scope-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n cursor: pointer;\n}\n\n.scope-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.scope-name[_ngcontent-%COMP%] {\n display: block;\n font-weight: 500;\n font-size: 13px;\n color: #374151;\n font-family: monospace;\n}\n\n.scope-desc[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: #6b7280;\n margin-top: 2px;\n}\n\n.scope-tip[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: #eff6ff;\n border-radius: 8px;\n margin-top: 16px;\n font-size: 13px;\n color: #1d4ed8;\n}\n\n.scope-tip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n.scope-tip[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #dbeafe;\n padding: 2px 6px;\n border-radius: 4px;\n font-family: monospace;\n}\n\n\n\n.no-scopes-warning[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border: 1px solid #fecaca;\n border-radius: 10px;\n margin-top: 16px;\n font-size: 13px;\n color: #991b1b;\n}\n\n.no-scopes-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #dc2626;\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n.no-scopes-warning[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n color: #991b1b;\n font-size: 14px;\n margin-bottom: 4px;\n}\n\n.no-scopes-warning[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n line-height: 1.5;\n}\n\n\n\n.success-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.success-icon[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.success-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n color: #10b981;\n}\n\n.success-title[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 20px;\n font-weight: 700;\n color: #1f2937;\n}\n\n\n\n.key-display[_ngcontent-%COMP%] {\n background: #1f2937;\n border-radius: 12px;\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.key-warning[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: rgba(245, 158, 11, 0.2);\n border-radius: 8px;\n margin-bottom: 16px;\n font-size: 13px;\n font-weight: 500;\n color: #fcd34d;\n}\n\n.key-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n background: #374151;\n border-radius: 8px;\n padding: 12px 16px;\n}\n\n.key-value[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n flex: 1;\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 14px;\n color: #10b981;\n word-break: break-all;\n text-align: left;\n}\n\n.copy-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #4b5563;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.copy-btn[_ngcontent-%COMP%]:hover {\n background: #6b7280;\n}\n\n.copy-btn.copied[_ngcontent-%COMP%] {\n background: #10b981;\n}\n\n\n\n.key-details[_ngcontent-%COMP%] {\n text-align: left;\n background: #f9fafb;\n border-radius: 10px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding: 8px 0;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: #1f2937;\n}\n\n\n\n.security-note[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n text-align: left;\n padding: 16px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-radius: 10px;\n font-size: 13px;\n color: #065f46;\n}\n\n.security-note[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #10b981;\n margin-top: 2px;\n}\n\n.security-note[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 4px;\n}\n\n\n\n[_nghost-%COMP%] .form-input .k-input, \n[_nghost-%COMP%] .form-textarea .k-input-inner, \n[_nghost-%COMP%] .k-datepicker .k-input {\n padding: 10px 14px;\n border-radius: 8px;\n font-size: 14px;\n border-color: #e5e7eb;\n transition: all 0.2s ease;\n}\n\n[_nghost-%COMP%] .form-input:focus-within, \n[_nghost-%COMP%] .form-textarea:focus-within, \n[_nghost-%COMP%] .k-datepicker:focus-within {\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}"] });
|
|
744
|
+
i0.ɵɵconditional(ctx.Step === "success" ? 16 : -1);
|
|
745
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.TextBoxDirective, i2.TextAreaDirective, i2.CheckBoxDirective, i3.DatePickerComponent, i4.ButtonComponent, i5.LoadingComponent, i6.DatePipe], styles: ["\n\n\n\n\n\n\n.slideout-backdrop[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n z-index: 100;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n.slideout-panel[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n right: 0;\n width: 520px;\n height: 100%;\n max-height: 100%;\n background: var(--card-background, #ffffff);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 101;\n display: flex;\n flex-direction: column;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n transform: translateX(100%);\n overflow: hidden;\n}\n\n.slideout-panel.open[_ngcontent-%COMP%] {\n transform: translateX(0);\n}\n\n\n\n.slideout-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fafafa 0%, #f3f4f6 100%);\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.slideout-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n font-weight: 600;\n font-size: 17px;\n color: #1f2937;\n flex: 1;\n min-width: 0;\n}\n\n.slideout-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #f59e0b;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.slideout-close[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: #9ca3af;\n cursor: pointer;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.slideout-close[_ngcontent-%COMP%]:hover {\n background: rgba(0, 0, 0, 0.05);\n color: #374151;\n}\n\n\n\n.slideout-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n}\n\n.step-panel[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.slideout-footer[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);\n border-top: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button {\n min-width: 100px;\n padding: 10px 20px;\n font-weight: 600;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button-solid-primary {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n box-shadow: 0 2px 8px rgba(245, 158, 11, 0.3);\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button-solid-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n[_nghost-%COMP%] .slideout-footer .k-button i {\n margin: 0 5px;\n}\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n}\n\n.step-number[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n font-weight: 600;\n font-size: 14px;\n color: #6b7280;\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: #10b981;\n border-color: #10b981;\n color: white;\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.step.active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: #92400e;\n font-weight: 600;\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 80px;\n height: 2px;\n background: #d1d5db;\n margin: 0 16px;\n margin-bottom: 20px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, #10b981, #f59e0b);\n}\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.scopes-content[_ngcontent-%COMP%] {\n max-height: 450px;\n}\n\n\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-weight: 600;\n font-size: 14px;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.form-label.required[_ngcontent-%COMP%]::after {\n content: ' *';\n color: #ef4444;\n}\n\n.form-input[_ngcontent-%COMP%], \n.form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6b7280;\n margin-top: 6px;\n}\n\n\n\n.expiration-options[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n}\n\n.preset-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.preset-btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.preset-btn[_ngcontent-%COMP%]:hover {\n border-color: #f59e0b;\n background: #fffbeb;\n}\n\n.preset-btn.active[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.custom-date[_ngcontent-%COMP%] {\n margin-top: 4px;\n}\n\n.expiration-preview[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: #ecfdf5;\n border-radius: 8px;\n font-size: 13px;\n color: #059669;\n}\n\n.expiration-preview[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-size: 14px;\n}\n\n\n\n.scopes-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n}\n\n.scopes-info[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 16px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.scopes-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: #6b7280;\n}\n\n.scopes-count[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n}\n\n.scopes-count[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n\n\n\n.scope-categories[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.scope-category[_ngcontent-%COMP%] {\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n overflow: hidden;\n}\n\n.category-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.category-header[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n}\n\n.category-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.category-left[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n}\n\n.category-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.category-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.select-all-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6b7280;\n cursor: pointer;\n}\n\n.category-right[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n color: #9ca3af;\n font-size: 12px;\n}\n\n.category-scopes[_ngcontent-%COMP%] {\n padding: 8px 16px 16px;\n border-top: 1px solid #e5e7eb;\n background: white;\n}\n\n.scope-item[_ngcontent-%COMP%] {\n padding: 10px 0;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.scope-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.scope-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n cursor: pointer;\n}\n\n.scope-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.scope-name[_ngcontent-%COMP%] {\n display: block;\n font-weight: 500;\n font-size: 13px;\n color: #374151;\n font-family: monospace;\n}\n\n.scope-desc[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: #6b7280;\n margin-top: 2px;\n}\n\n.scope-tip[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: #eff6ff;\n border-radius: 8px;\n margin-top: 16px;\n font-size: 13px;\n color: #1d4ed8;\n}\n\n.scope-tip[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n.scope-tip[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: #dbeafe;\n padding: 2px 6px;\n border-radius: 4px;\n font-family: monospace;\n}\n\n\n\n.no-scopes-warning[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border: 1px solid #fecaca;\n border-radius: 10px;\n margin-top: 16px;\n font-size: 13px;\n color: #991b1b;\n}\n\n.no-scopes-warning[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #dc2626;\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n.no-scopes-warning[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n color: #991b1b;\n font-size: 14px;\n margin-bottom: 4px;\n}\n\n.no-scopes-warning[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n line-height: 1.5;\n}\n\n\n\n.success-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.success-icon[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.success-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n color: #10b981;\n}\n\n.success-title[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 20px;\n font-weight: 700;\n color: #1f2937;\n}\n\n\n\n.key-display[_ngcontent-%COMP%] {\n background: #1f2937;\n border-radius: 12px;\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.key-warning[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: rgba(245, 158, 11, 0.2);\n border-radius: 8px;\n margin-bottom: 16px;\n font-size: 13px;\n font-weight: 500;\n color: #fcd34d;\n}\n\n.key-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n background: #374151;\n border-radius: 8px;\n padding: 12px 16px;\n}\n\n.key-value[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n flex: 1;\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 14px;\n color: #10b981;\n word-break: break-all;\n text-align: left;\n}\n\n.copy-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #4b5563;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.copy-btn[_ngcontent-%COMP%]:hover {\n background: #6b7280;\n}\n\n.copy-btn.copied[_ngcontent-%COMP%] {\n background: #10b981;\n}\n\n\n\n.key-details[_ngcontent-%COMP%] {\n text-align: left;\n background: #f9fafb;\n border-radius: 10px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding: 8px 0;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: #1f2937;\n}\n\n\n\n.security-note[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n text-align: left;\n padding: 16px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-radius: 10px;\n font-size: 13px;\n color: #065f46;\n}\n\n.security-note[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #10b981;\n margin-top: 2px;\n}\n\n.security-note[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 4px;\n}\n\n\n\n[_nghost-%COMP%] .form-input .k-input, \n[_nghost-%COMP%] .form-textarea .k-input-inner, \n[_nghost-%COMP%] .k-datepicker .k-input {\n padding: 10px 14px;\n border-radius: 8px;\n font-size: 14px;\n border-color: #e5e7eb;\n transition: all 0.2s ease;\n}\n\n[_nghost-%COMP%] .form-input:focus-within, \n[_nghost-%COMP%] .form-textarea:focus-within, \n[_nghost-%COMP%] .k-datepicker:focus-within {\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}"] });
|
|
751
746
|
}
|
|
752
747
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(APIKeyCreateDialogComponent, [{
|
|
753
748
|
type: Component,
|
|
754
|
-
args: [{ selector: 'mj-api-key-create-dialog', template: "<!-- Slide-out Backdrop -->\n<div class=\"slideout-backdrop\" *ngIf=\"Visible\" (click)=\"Step !== 'success' ? close() : null\"></div>\n\n<!-- Slide-out Panel -->\n<div class=\"slideout-panel\" [class.open]=\"Visible\">\n <!-- Header -->\n <div class=\"slideout-header\">\n <div class=\"slideout-title\">\n <i class=\"fa-solid fa-key\"></i>\n <span>Generate New API Key</span>\n </div>\n <button class=\"slideout-close\" *ngIf=\"Step !== 'success'\" (click)=\"close()\" title=\"Close (Esc)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Step Indicator -->\n <div class=\"step-indicator\" *ngIf=\"Step !== 'success'\">\n <div class=\"step\" [class.active]=\"Step === 'configure'\" [class.completed]=\"Step === 'scopes'\">\n <div class=\"step-number\">1</div>\n <div class=\"step-label\">Configure</div>\n </div>\n <div class=\"step-connector\" [class.active]=\"Step === 'scopes'\"></div>\n <div class=\"step\" [class.active]=\"Step === 'scopes'\">\n <div class=\"step-number\">2</div>\n <div class=\"step-label\">Permissions</div>\n </div>\n </div>\n\n <div class=\"slideout-content\">\n <!-- Configure Step -->\n <div class=\"step-panel\" *ngIf=\"Step === 'configure'\">\n <div class=\"form-section\">\n <label class=\"form-label required\">Key Label</label>\n <input kendoTextBox [(ngModel)]=\"Label\"\n placeholder=\"e.g., ElevenLabs Integration, CI/CD Pipeline\"\n class=\"form-input\" />\n <div class=\"form-hint\">A memorable name to identify this key's purpose</div>\n </div>\n\n <div class=\"form-section\">\n <label class=\"form-label\">Description</label>\n <textarea kendoTextArea [(ngModel)]=\"Description\"\n placeholder=\"Optional notes about how this key will be used...\"\n [rows]=\"3\"\n class=\"form-textarea\"></textarea>\n </div>\n\n <div class=\"form-section\">\n <label class=\"form-label\">Expiration</label>\n <div class=\"expiration-options\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" kendoCheckBox\n [(ngModel)]=\"NeverExpires\"\n (change)=\"onNeverExpiresChange()\" />\n <span>Never expires</span>\n </label>\n\n <div class=\"preset-buttons\" *ngIf=\"!NeverExpires\">\n <button *ngFor=\"let preset of ExpirationPresets\"\n class=\"preset-btn\"\n [class.active]=\"SelectedPreset === preset\"\n (click)=\"onPresetSelect(preset)\">\n {{preset.label}}\n </button>\n </div>\n\n <div class=\"custom-date\" *ngIf=\"!NeverExpires && SelectedPreset?.days === -1\">\n <kendo-datepicker [(ngModel)]=\"ExpiresAt\"\n [min]=\"getMinDate()\"\n format=\"MMM d, yyyy\"\n placeholder=\"Select expiration date\">\n </kendo-datepicker>\n </div>\n\n <div class=\"expiration-preview\" *ngIf=\"!NeverExpires && ExpiresAt\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Key will expire on {{ExpiresAt | date:'MMMM d, yyyy'}}</span>\n </div>\n </div>\n </div>\n\n <div class=\"error-message\" *ngIf=\"Error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{Error}}\n </div>\n </div>\n\n <!-- Scopes Step -->\n <div class=\"step-panel scopes-step\" *ngIf=\"Step === 'scopes'\">\n <div class=\"scopes-header\">\n <div class=\"scopes-info\">\n <h4>Select Permission Scopes</h4>\n <p>Choose what this API key can access. You can always modify this later.</p>\n </div>\n <div class=\"scopes-count\" *ngIf=\"getSelectedScopeCount() > 0\">\n <span class=\"count\">{{getSelectedScopeCount()}}</span> selected\n </div>\n </div>\n\n <mj-loading *ngIf=\"IsLoadingScopes\" text=\"Loading scopes...\"></mj-loading>\n\n <div class=\"scope-categories\" *ngIf=\"!IsLoadingScopes\">\n <div class=\"scope-category\" *ngFor=\"let category of ScopeCategories\">\n <div class=\"category-header\" (click)=\"toggleCategory(category)\">\n <div class=\"category-left\">\n <i [class]=\"category.icon\" [style.color]=\"category.color\"></i>\n <span class=\"category-name\">{{category.name}}</span>\n <span class=\"category-badge\">{{category.scopes.length}}</span>\n </div>\n <div class=\"category-right\">\n <label class=\"select-all-label\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" kendoCheckBox\n [checked]=\"category.allSelected\"\n (change)=\"toggleCategoryAll(category)\" />\n <span>All</span>\n </label>\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!category.expanded\"\n [class.fa-chevron-up]=\"category.expanded\"></i>\n </div>\n </div>\n\n <div class=\"category-scopes\" *ngIf=\"category.expanded\">\n <div class=\"scope-item\" *ngFor=\"let item of category.scopes\">\n <label class=\"scope-label\">\n <input type=\"checkbox\" kendoCheckBox\n [(ngModel)]=\"item.selected\"\n (change)=\"updateCategoryState(category)\" />\n <div class=\"scope-info\">\n <span class=\"scope-name\">{{item.scope.Name}}</span>\n <span class=\"scope-desc\" *ngIf=\"item.scope.Description\">\n {{item.scope.Description}}\n </span>\n </div>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"scope-tip\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <span>Tip: Use wildcards like <code>entities:*</code> for broad access within a category</span>\n </div>\n\n <!-- No Scopes Warning -->\n <div class=\"no-scopes-warning\" *ngIf=\"!IsLoadingScopes && getSelectedScopeCount() === 0\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div>\n <strong>Warning: No permissions selected</strong>\n <p>API keys without any assigned scopes will have <strong>no permissions</strong> and cannot perform any operations. This key will be rejected by all API endpoints until scopes are assigned.</p>\n </div>\n </div>\n </div>\n\n <!-- Success Step -->\n <div class=\"step-panel success-step\" *ngIf=\"Step === 'success'\">\n <div class=\"success-icon\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <h3 class=\"success-title\">API Key Created Successfully!</h3>\n\n <div class=\"key-display\">\n <div class=\"key-warning\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>Copy this key now. It won't be shown again!</span>\n </div>\n\n <div class=\"key-value\">\n <code>{{RawApiKey}}</code>\n <button class=\"copy-btn\" (click)=\"copyKey()\" [class.copied]=\"KeyCopied\">\n <i class=\"fa-solid\" [class.fa-copy]=\"!KeyCopied\" [class.fa-check]=\"KeyCopied\"></i>\n <span>{{KeyCopied ? 'Copied!' : 'Copy'}}</span>\n </button>\n </div>\n </div>\n\n <div class=\"key-details\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Label:</span>\n <span class=\"detail-value\">{{Label}}</span>\n </div>\n <div class=\"detail-row\" *ngIf=\"Description\">\n <span class=\"detail-label\">Description:</span>\n <span class=\"detail-value\">{{Description}}</span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Expires:</span>\n <span class=\"detail-value\">\n {{NeverExpires ? 'Never' : (ExpiresAt | date:'MMMM d, yyyy')}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Scopes:</span>\n <span class=\"detail-value\">{{getSelectedScopeCount()}} permissions</span>\n </div>\n </div>\n\n <div class=\"security-note\">\n <i class=\"fa-solid fa-shield-check\"></i>\n <div>\n <strong>Security Note:</strong>\n Store this key securely. We only store a hash - the original key cannot be recovered.\n </div>\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"slideout-footer\">\n <ng-container *ngIf=\"Step === 'configure'\">\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"goToScopes()\">\n Next: Permissions\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button kendoButton (click)=\"close()\">Cancel</button>\n </ng-container>\n\n <ng-container *ngIf=\"Step === 'scopes'\">\n <button kendoButton [themeColor]=\"'primary'\"\n [disabled]=\"IsCreating\"\n (click)=\"createKey()\">\n <mj-loading *ngIf=\"IsCreating\" [showText]=\"false\" size=\"small\"></mj-loading>\n <span *ngIf=\"!IsCreating\">\n <i class=\"fa-solid fa-key\"></i>\n Generate Key\n </span>\n </button>\n <button kendoButton (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"Step === 'success'\">\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"close()\">\n <i class=\"fa-solid fa-check\"></i>\n Done\n </button>\n </ng-container>\n </div>\n</div>\n", styles: ["/* ========================================\n Slide-out Panel Styles\n ======================================== */\n\n/* Backdrop */\n.slideout-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n z-index: 100;\n animation: fadeIn 0.2s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Slide-out Panel */\n.slideout-panel {\n position: absolute;\n top: 0;\n right: 0;\n width: 520px;\n height: 100%;\n max-height: 100%;\n background: var(--card-background, #ffffff);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 101;\n display: flex;\n flex-direction: column;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n transform: translateX(100%);\n overflow: hidden;\n}\n\n.slideout-panel.open {\n transform: translateX(0);\n}\n\n/* Panel Header */\n.slideout-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fafafa 0%, #f3f4f6 100%);\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.slideout-title {\n display: flex;\n align-items: center;\n gap: 12px;\n font-weight: 600;\n font-size: 17px;\n color: #1f2937;\n flex: 1;\n min-width: 0;\n}\n\n.slideout-title i {\n color: #f59e0b;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.slideout-close {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: #9ca3af;\n cursor: pointer;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.slideout-close:hover {\n background: rgba(0, 0, 0, 0.05);\n color: #374151;\n}\n\n/* Panel Content */\n.slideout-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.step-panel {\n padding: 24px;\n}\n\n/* Panel Footer */\n.slideout-footer {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);\n border-top: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n:host ::ng-deep .slideout-footer .k-button {\n min-width: 100px;\n padding: 10px 20px;\n font-weight: 600;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n:host ::ng-deep .slideout-footer .k-button-solid-primary {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n box-shadow: 0 2px 8px rgba(245, 158, 11, 0.3);\n}\n\n:host ::ng-deep .slideout-footer .k-button-solid-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n:host ::ng-deep .slideout-footer .k-button i {\n margin: 0 5px;\n}\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.step {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n}\n\n.step-number {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n font-weight: 600;\n font-size: 14px;\n color: #6b7280;\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.step.completed .step-number {\n background: #10b981;\n border-color: #10b981;\n color: white;\n}\n\n.step-label {\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.step.active .step-label {\n color: #92400e;\n font-weight: 600;\n}\n\n.step-connector {\n width: 80px;\n height: 2px;\n background: #d1d5db;\n margin: 0 16px;\n margin-bottom: 20px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: linear-gradient(90deg, #10b981, #f59e0b);\n}\n\n/* Dialog Content */\n.dialog-content {\n padding: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.scopes-content {\n max-height: 450px;\n}\n\n/* Form Sections */\n.form-section {\n margin-bottom: 24px;\n}\n\n.form-label {\n display: block;\n font-weight: 600;\n font-size: 14px;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.form-label.required::after {\n content: ' *';\n color: #ef4444;\n}\n\n.form-input,\n.form-textarea {\n width: 100%;\n}\n\n.form-hint {\n font-size: 12px;\n color: #6b7280;\n margin-top: 6px;\n}\n\n/* Expiration Options */\n.expiration-options {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n}\n\n.preset-buttons {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.preset-btn {\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.preset-btn:hover {\n border-color: #f59e0b;\n background: #fffbeb;\n}\n\n.preset-btn.active {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.custom-date {\n margin-top: 4px;\n}\n\n.expiration-preview {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: #ecfdf5;\n border-radius: 8px;\n font-size: 13px;\n color: #059669;\n}\n\n.expiration-preview i {\n color: #10b981;\n}\n\n/* Error Message */\n.error-message {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-size: 14px;\n}\n\n/* Scopes */\n.scopes-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n}\n\n.scopes-info h4 {\n margin: 0 0 4px 0;\n font-size: 16px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.scopes-info p {\n margin: 0;\n font-size: 13px;\n color: #6b7280;\n}\n\n.scopes-count {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n}\n\n.scopes-count .count {\n font-weight: 700;\n}\n\n/* Scope Categories */\n.scope-categories {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.scope-category {\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n overflow: hidden;\n}\n\n.category-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.category-header:hover {\n background: #f3f4f6;\n}\n\n.category-left {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.category-left i {\n font-size: 16px;\n}\n\n.category-name {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n}\n\n.category-badge {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.category-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.select-all-label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6b7280;\n cursor: pointer;\n}\n\n.category-right > i {\n color: #9ca3af;\n font-size: 12px;\n}\n\n.category-scopes {\n padding: 8px 16px 16px;\n border-top: 1px solid #e5e7eb;\n background: white;\n}\n\n.scope-item {\n padding: 10px 0;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.scope-item:last-child {\n border-bottom: none;\n}\n\n.scope-label {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n cursor: pointer;\n}\n\n.scope-info {\n flex: 1;\n}\n\n.scope-name {\n display: block;\n font-weight: 500;\n font-size: 13px;\n color: #374151;\n font-family: monospace;\n}\n\n.scope-desc {\n display: block;\n font-size: 12px;\n color: #6b7280;\n margin-top: 2px;\n}\n\n.scope-tip {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: #eff6ff;\n border-radius: 8px;\n margin-top: 16px;\n font-size: 13px;\n color: #1d4ed8;\n}\n\n.scope-tip i {\n color: #3b82f6;\n}\n\n.scope-tip code {\n background: #dbeafe;\n padding: 2px 6px;\n border-radius: 4px;\n font-family: monospace;\n}\n\n/* No Scopes Warning */\n.no-scopes-warning {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border: 1px solid #fecaca;\n border-radius: 10px;\n margin-top: 16px;\n font-size: 13px;\n color: #991b1b;\n}\n\n.no-scopes-warning i {\n font-size: 20px;\n color: #dc2626;\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n.no-scopes-warning strong {\n display: block;\n color: #991b1b;\n font-size: 14px;\n margin-bottom: 4px;\n}\n\n.no-scopes-warning p {\n margin: 0;\n line-height: 1.5;\n}\n\n/* Success Content */\n.success-content {\n text-align: center;\n}\n\n.success-icon {\n margin-bottom: 16px;\n}\n\n.success-icon i {\n font-size: 64px;\n color: #10b981;\n}\n\n.success-title {\n margin: 0 0 24px 0;\n font-size: 20px;\n font-weight: 700;\n color: #1f2937;\n}\n\n/* Key Display */\n.key-display {\n background: #1f2937;\n border-radius: 12px;\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.key-warning {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: rgba(245, 158, 11, 0.2);\n border-radius: 8px;\n margin-bottom: 16px;\n font-size: 13px;\n font-weight: 500;\n color: #fcd34d;\n}\n\n.key-value {\n display: flex;\n align-items: center;\n gap: 12px;\n background: #374151;\n border-radius: 8px;\n padding: 12px 16px;\n}\n\n.key-value code {\n flex: 1;\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 14px;\n color: #10b981;\n word-break: break-all;\n text-align: left;\n}\n\n.copy-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #4b5563;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.copy-btn:hover {\n background: #6b7280;\n}\n\n.copy-btn.copied {\n background: #10b981;\n}\n\n/* Key Details */\n.key-details {\n text-align: left;\n background: #f9fafb;\n border-radius: 10px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n justify-content: space-between;\n padding: 8px 0;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: #6b7280;\n}\n\n.detail-value {\n font-size: 13px;\n font-weight: 500;\n color: #1f2937;\n}\n\n/* Security Note */\n.security-note {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n text-align: left;\n padding: 16px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-radius: 10px;\n font-size: 13px;\n color: #065f46;\n}\n\n.security-note i {\n font-size: 20px;\n color: #10b981;\n margin-top: 2px;\n}\n\n.security-note strong {\n display: block;\n margin-bottom: 4px;\n}\n\n/* Form input styling */\n:host ::ng-deep .form-input .k-input,\n:host ::ng-deep .form-textarea .k-input-inner,\n:host ::ng-deep .k-datepicker .k-input {\n padding: 10px 14px;\n border-radius: 8px;\n font-size: 14px;\n border-color: #e5e7eb;\n transition: all 0.2s ease;\n}\n\n:host ::ng-deep .form-input:focus-within,\n:host ::ng-deep .form-textarea:focus-within,\n:host ::ng-deep .k-datepicker:focus-within {\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}\n"] }]
|
|
749
|
+
args: [{ standalone: false, selector: 'mj-api-key-create-dialog', template: "<!-- Slide-out Backdrop -->\n@if (Visible) {\n <div class=\"slideout-backdrop\" (click)=\"Step !== 'success' ? close() : null\"></div>\n}\n\n<!-- Slide-out Panel -->\n<div class=\"slideout-panel\" [class.open]=\"Visible\">\n <!-- Header -->\n <div class=\"slideout-header\">\n <div class=\"slideout-title\">\n <i class=\"fa-solid fa-key\"></i>\n <span>Generate New API Key</span>\n </div>\n @if (Step !== 'success') {\n <button class=\"slideout-close\" (click)=\"close()\" title=\"Close (Esc)\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <!-- Step Indicator -->\n @if (Step !== 'success') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"Step === 'configure'\" [class.completed]=\"Step === 'scopes'\">\n <div class=\"step-number\">1</div>\n <div class=\"step-label\">Configure</div>\n </div>\n <div class=\"step-connector\" [class.active]=\"Step === 'scopes'\"></div>\n <div class=\"step\" [class.active]=\"Step === 'scopes'\">\n <div class=\"step-number\">2</div>\n <div class=\"step-label\">Permissions</div>\n </div>\n </div>\n }\n\n <div class=\"slideout-content\">\n <!-- Configure Step -->\n @if (Step === 'configure') {\n <div class=\"step-panel\">\n <div class=\"form-section\">\n <label class=\"form-label required\">Key Label</label>\n <input kendoTextBox [(ngModel)]=\"Label\"\n placeholder=\"e.g., ElevenLabs Integration, CI/CD Pipeline\"\n class=\"form-input\" />\n <div class=\"form-hint\">A memorable name to identify this key's purpose</div>\n </div>\n <div class=\"form-section\">\n <label class=\"form-label\">Description</label>\n <textarea kendoTextArea [(ngModel)]=\"Description\"\n placeholder=\"Optional notes about how this key will be used...\"\n [rows]=\"3\"\n class=\"form-textarea\"></textarea>\n </div>\n <div class=\"form-section\">\n <label class=\"form-label\">Expiration</label>\n <div class=\"expiration-options\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" kendoCheckBox\n [(ngModel)]=\"NeverExpires\"\n (change)=\"onNeverExpiresChange()\" />\n <span>Never expires</span>\n </label>\n @if (!NeverExpires) {\n <div class=\"preset-buttons\">\n @for (preset of ExpirationPresets; track preset) {\n <button\n class=\"preset-btn\"\n [class.active]=\"SelectedPreset === preset\"\n (click)=\"onPresetSelect(preset)\">\n {{preset.label}}\n </button>\n }\n </div>\n }\n @if (!NeverExpires && SelectedPreset?.days === -1) {\n <div class=\"custom-date\">\n <kendo-datepicker [(ngModel)]=\"ExpiresAt\"\n [min]=\"getMinDate()\"\n format=\"MMM d, yyyy\"\n placeholder=\"Select expiration date\">\n </kendo-datepicker>\n </div>\n }\n @if (!NeverExpires && ExpiresAt) {\n <div class=\"expiration-preview\">\n <i class=\"fa-solid fa-calendar-check\"></i>\n <span>Key will expire on {{ExpiresAt | date:'MMMM d, yyyy'}}</span>\n </div>\n }\n </div>\n </div>\n @if (Error) {\n <div class=\"error-message\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n {{Error}}\n </div>\n }\n </div>\n }\n\n <!-- Scopes Step -->\n @if (Step === 'scopes') {\n <div class=\"step-panel scopes-step\">\n <div class=\"scopes-header\">\n <div class=\"scopes-info\">\n <h4>Select Permission Scopes</h4>\n <p>Choose what this API key can access. You can always modify this later.</p>\n </div>\n @if (getSelectedScopeCount() > 0) {\n <div class=\"scopes-count\">\n <span class=\"count\">{{getSelectedScopeCount()}}</span> selected\n </div>\n }\n </div>\n @if (IsLoadingScopes) {\n <mj-loading text=\"Loading scopes...\"></mj-loading>\n }\n @if (!IsLoadingScopes) {\n <div class=\"scope-categories\">\n @for (category of ScopeCategories; track category) {\n <div class=\"scope-category\">\n <div class=\"category-header\" (click)=\"toggleCategory(category)\">\n <div class=\"category-left\">\n <i [class]=\"category.icon\" [style.color]=\"category.color\"></i>\n <span class=\"category-name\">{{category.name}}</span>\n <span class=\"category-badge\">{{category.scopes.length}}</span>\n </div>\n <div class=\"category-right\">\n <label class=\"select-all-label\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" kendoCheckBox\n [checked]=\"category.allSelected\"\n (change)=\"toggleCategoryAll(category)\" />\n <span>All</span>\n </label>\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!category.expanded\"\n [class.fa-chevron-up]=\"category.expanded\"></i>\n </div>\n </div>\n @if (category.expanded) {\n <div class=\"category-scopes\">\n @for (item of category.scopes; track item) {\n <div class=\"scope-item\">\n <label class=\"scope-label\">\n <input type=\"checkbox\" kendoCheckBox\n [(ngModel)]=\"item.selected\"\n (change)=\"updateCategoryState(category)\" />\n <div class=\"scope-info\">\n <span class=\"scope-name\">{{item.scope.Name}}</span>\n @if (item.scope.Description) {\n <span class=\"scope-desc\">\n {{item.scope.Description}}\n </span>\n }\n </div>\n </label>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <div class=\"scope-tip\">\n <i class=\"fa-solid fa-lightbulb\"></i>\n <span>Tip: Use wildcards like <code>entities:*</code> for broad access within a category</span>\n </div>\n <!-- No Scopes Warning -->\n @if (!IsLoadingScopes && getSelectedScopeCount() === 0) {\n <div class=\"no-scopes-warning\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <div>\n <strong>Warning: No permissions selected</strong>\n <p>API keys without any assigned scopes will have <strong>no permissions</strong> and cannot perform any operations. This key will be rejected by all API endpoints until scopes are assigned.</p>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Success Step -->\n @if (Step === 'success') {\n <div class=\"step-panel success-step\">\n <div class=\"success-icon\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <h3 class=\"success-title\">API Key Created Successfully!</h3>\n <div class=\"key-display\">\n <div class=\"key-warning\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>Copy this key now. It won't be shown again!</span>\n </div>\n <div class=\"key-value\">\n <code>{{RawApiKey}}</code>\n <button class=\"copy-btn\" (click)=\"copyKey()\" [class.copied]=\"KeyCopied\">\n <i class=\"fa-solid\" [class.fa-copy]=\"!KeyCopied\" [class.fa-check]=\"KeyCopied\"></i>\n <span>{{KeyCopied ? 'Copied!' : 'Copy'}}</span>\n </button>\n </div>\n </div>\n <div class=\"key-details\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Label:</span>\n <span class=\"detail-value\">{{Label}}</span>\n </div>\n @if (Description) {\n <div class=\"detail-row\">\n <span class=\"detail-label\">Description:</span>\n <span class=\"detail-value\">{{Description}}</span>\n </div>\n }\n <div class=\"detail-row\">\n <span class=\"detail-label\">Expires:</span>\n <span class=\"detail-value\">\n {{NeverExpires ? 'Never' : (ExpiresAt | date:'MMMM d, yyyy')}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Scopes:</span>\n <span class=\"detail-value\">{{getSelectedScopeCount()}} permissions</span>\n </div>\n </div>\n <div class=\"security-note\">\n <i class=\"fa-solid fa-shield-check\"></i>\n <div>\n <strong>Security Note:</strong>\n Store this key securely. We only store a hash - the original key cannot be recovered.\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Footer -->\n <div class=\"slideout-footer\">\n @if (Step === 'configure') {\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"goToScopes()\">\n Next: Permissions\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n <button kendoButton (click)=\"close()\">Cancel</button>\n }\n\n @if (Step === 'scopes') {\n <button kendoButton [themeColor]=\"'primary'\"\n [disabled]=\"IsCreating\"\n (click)=\"createKey()\">\n @if (IsCreating) {\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n }\n @if (!IsCreating) {\n <span>\n <i class=\"fa-solid fa-key\"></i>\n Generate Key\n </span>\n }\n </button>\n <button kendoButton (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n }\n\n @if (Step === 'success') {\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"close()\">\n <i class=\"fa-solid fa-check\"></i>\n Done\n </button>\n }\n </div>\n</div>\n", styles: ["/* ========================================\n Slide-out Panel Styles\n ======================================== */\n\n/* Backdrop */\n.slideout-backdrop {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n z-index: 100;\n animation: fadeIn 0.2s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* Slide-out Panel */\n.slideout-panel {\n position: absolute;\n top: 0;\n right: 0;\n width: 520px;\n height: 100%;\n max-height: 100%;\n background: var(--card-background, #ffffff);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 101;\n display: flex;\n flex-direction: column;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n transform: translateX(100%);\n overflow: hidden;\n}\n\n.slideout-panel.open {\n transform: translateX(0);\n}\n\n/* Panel Header */\n.slideout-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fafafa 0%, #f3f4f6 100%);\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.slideout-title {\n display: flex;\n align-items: center;\n gap: 12px;\n font-weight: 600;\n font-size: 17px;\n color: #1f2937;\n flex: 1;\n min-width: 0;\n}\n\n.slideout-title i {\n color: #f59e0b;\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.slideout-close {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 8px;\n color: #9ca3af;\n cursor: pointer;\n transition: all 0.2s ease;\n flex-shrink: 0;\n}\n\n.slideout-close:hover {\n background: rgba(0, 0, 0, 0.05);\n color: #374151;\n}\n\n/* Panel Content */\n.slideout-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.step-panel {\n padding: 24px;\n}\n\n/* Panel Footer */\n.slideout-footer {\n display: flex;\n gap: 12px;\n padding: 16px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);\n border-top: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n:host ::ng-deep .slideout-footer .k-button {\n min-width: 100px;\n padding: 10px 20px;\n font-weight: 600;\n border-radius: 8px;\n transition: all 0.2s ease;\n}\n\n:host ::ng-deep .slideout-footer .k-button-solid-primary {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: none;\n box-shadow: 0 2px 8px rgba(245, 158, 11, 0.3);\n}\n\n:host ::ng-deep .slideout-footer .k-button-solid-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.4);\n}\n\n:host ::ng-deep .slideout-footer .k-button i {\n margin: 0 5px;\n}\n\n/* Step Indicator */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);\n border-bottom: 1px solid #fcd34d;\n}\n\n.step {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n}\n\n.step-number {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n font-weight: 600;\n font-size: 14px;\n color: #6b7280;\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.step.completed .step-number {\n background: #10b981;\n border-color: #10b981;\n color: white;\n}\n\n.step-label {\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.step.active .step-label {\n color: #92400e;\n font-weight: 600;\n}\n\n.step-connector {\n width: 80px;\n height: 2px;\n background: #d1d5db;\n margin: 0 16px;\n margin-bottom: 20px;\n transition: background 0.2s ease;\n}\n\n.step-connector.active {\n background: linear-gradient(90deg, #10b981, #f59e0b);\n}\n\n/* Dialog Content */\n.dialog-content {\n padding: 24px;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.scopes-content {\n max-height: 450px;\n}\n\n/* Form Sections */\n.form-section {\n margin-bottom: 24px;\n}\n\n.form-label {\n display: block;\n font-weight: 600;\n font-size: 14px;\n color: #374151;\n margin-bottom: 8px;\n}\n\n.form-label.required::after {\n content: ' *';\n color: #ef4444;\n}\n\n.form-input,\n.form-textarea {\n width: 100%;\n}\n\n.form-hint {\n font-size: 12px;\n color: #6b7280;\n margin-top: 6px;\n}\n\n/* Expiration Options */\n.expiration-options {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n}\n\n.preset-buttons {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.preset-btn {\n padding: 8px 16px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.preset-btn:hover {\n border-color: #f59e0b;\n background: #fffbeb;\n}\n\n.preset-btn.active {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-color: #f59e0b;\n color: white;\n}\n\n.custom-date {\n margin-top: 4px;\n}\n\n.expiration-preview {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: #ecfdf5;\n border-radius: 8px;\n font-size: 13px;\n color: #059669;\n}\n\n.expiration-preview i {\n color: #10b981;\n}\n\n/* Error Message */\n.error-message {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 8px;\n color: #dc2626;\n font-size: 14px;\n}\n\n/* Scopes */\n.scopes-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n}\n\n.scopes-info h4 {\n margin: 0 0 4px 0;\n font-size: 16px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.scopes-info p {\n margin: 0;\n font-size: 13px;\n color: #6b7280;\n}\n\n.scopes-count {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border-radius: 20px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n}\n\n.scopes-count .count {\n font-weight: 700;\n}\n\n/* Scope Categories */\n.scope-categories {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.scope-category {\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n overflow: hidden;\n}\n\n.category-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.category-header:hover {\n background: #f3f4f6;\n}\n\n.category-left {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.category-left i {\n font-size: 16px;\n}\n\n.category-name {\n font-weight: 600;\n font-size: 14px;\n color: #1f2937;\n}\n\n.category-badge {\n padding: 2px 8px;\n background: #e5e7eb;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n color: #6b7280;\n}\n\n.category-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.select-all-label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #6b7280;\n cursor: pointer;\n}\n\n.category-right > i {\n color: #9ca3af;\n font-size: 12px;\n}\n\n.category-scopes {\n padding: 8px 16px 16px;\n border-top: 1px solid #e5e7eb;\n background: white;\n}\n\n.scope-item {\n padding: 10px 0;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.scope-item:last-child {\n border-bottom: none;\n}\n\n.scope-label {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n cursor: pointer;\n}\n\n.scope-info {\n flex: 1;\n}\n\n.scope-name {\n display: block;\n font-weight: 500;\n font-size: 13px;\n color: #374151;\n font-family: monospace;\n}\n\n.scope-desc {\n display: block;\n font-size: 12px;\n color: #6b7280;\n margin-top: 2px;\n}\n\n.scope-tip {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 16px;\n background: #eff6ff;\n border-radius: 8px;\n margin-top: 16px;\n font-size: 13px;\n color: #1d4ed8;\n}\n\n.scope-tip i {\n color: #3b82f6;\n}\n\n.scope-tip code {\n background: #dbeafe;\n padding: 2px 6px;\n border-radius: 4px;\n font-family: monospace;\n}\n\n/* No Scopes Warning */\n.no-scopes-warning {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: linear-gradient(135deg, #fef2f2 0%, #fee2e2 100%);\n border: 1px solid #fecaca;\n border-radius: 10px;\n margin-top: 16px;\n font-size: 13px;\n color: #991b1b;\n}\n\n.no-scopes-warning i {\n font-size: 20px;\n color: #dc2626;\n margin-top: 2px;\n flex-shrink: 0;\n}\n\n.no-scopes-warning strong {\n display: block;\n color: #991b1b;\n font-size: 14px;\n margin-bottom: 4px;\n}\n\n.no-scopes-warning p {\n margin: 0;\n line-height: 1.5;\n}\n\n/* Success Content */\n.success-content {\n text-align: center;\n}\n\n.success-icon {\n margin-bottom: 16px;\n}\n\n.success-icon i {\n font-size: 64px;\n color: #10b981;\n}\n\n.success-title {\n margin: 0 0 24px 0;\n font-size: 20px;\n font-weight: 700;\n color: #1f2937;\n}\n\n/* Key Display */\n.key-display {\n background: #1f2937;\n border-radius: 12px;\n padding: 20px;\n margin-bottom: 24px;\n}\n\n.key-warning {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 16px;\n background: rgba(245, 158, 11, 0.2);\n border-radius: 8px;\n margin-bottom: 16px;\n font-size: 13px;\n font-weight: 500;\n color: #fcd34d;\n}\n\n.key-value {\n display: flex;\n align-items: center;\n gap: 12px;\n background: #374151;\n border-radius: 8px;\n padding: 12px 16px;\n}\n\n.key-value code {\n flex: 1;\n font-family: 'Fira Code', 'Consolas', monospace;\n font-size: 14px;\n color: #10b981;\n word-break: break-all;\n text-align: left;\n}\n\n.copy-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #4b5563;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.copy-btn:hover {\n background: #6b7280;\n}\n\n.copy-btn.copied {\n background: #10b981;\n}\n\n/* Key Details */\n.key-details {\n text-align: left;\n background: #f9fafb;\n border-radius: 10px;\n padding: 16px 20px;\n margin-bottom: 20px;\n}\n\n.detail-row {\n display: flex;\n justify-content: space-between;\n padding: 8px 0;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: #6b7280;\n}\n\n.detail-value {\n font-size: 13px;\n font-weight: 500;\n color: #1f2937;\n}\n\n/* Security Note */\n.security-note {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n text-align: left;\n padding: 16px;\n background: linear-gradient(135deg, #ecfdf5 0%, #d1fae5 100%);\n border-radius: 10px;\n font-size: 13px;\n color: #065f46;\n}\n\n.security-note i {\n font-size: 20px;\n color: #10b981;\n margin-top: 2px;\n}\n\n.security-note strong {\n display: block;\n margin-bottom: 4px;\n}\n\n/* Form input styling */\n:host ::ng-deep .form-input .k-input,\n:host ::ng-deep .form-textarea .k-input-inner,\n:host ::ng-deep .k-datepicker .k-input {\n padding: 10px 14px;\n border-radius: 8px;\n font-size: 14px;\n border-color: #e5e7eb;\n transition: all 0.2s ease;\n}\n\n:host ::ng-deep .form-input:focus-within,\n:host ::ng-deep .form-textarea:focus-within,\n:host ::ng-deep .k-datepicker:focus-within {\n box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1);\n}\n"] }]
|
|
755
750
|
}], null, { Visible: [{
|
|
756
751
|
type: Input
|
|
757
752
|
}], VisibleChange: [{
|
|
@@ -764,5 +759,5 @@ export class APIKeyCreateDialogComponent {
|
|
|
764
759
|
type: HostListener,
|
|
765
760
|
args: ['document:keydown.escape']
|
|
766
761
|
}] }); })();
|
|
767
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(APIKeyCreateDialogComponent, { className: "APIKeyCreateDialogComponent", filePath: "src/APIKeys/api-key-create-dialog.component.ts", lineNumber:
|
|
762
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(APIKeyCreateDialogComponent, { className: "APIKeyCreateDialogComponent", filePath: "src/APIKeys/api-key-create-dialog.component.ts", lineNumber: 40 }); })();
|
|
768
763
|
//# sourceMappingURL=api-key-create-dialog.component.js.map
|