@memberjunction/ng-dashboards 6.2.0-edge.3 → 6.2.0-edge.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/analytics/realtime/realtime-transcripts-data.d.ts +4 -3
- package/dist/AI/components/analytics/realtime/realtime-transcripts-data.d.ts.map +1 -1
- package/dist/AI/components/analytics/realtime/realtime-transcripts-data.js +8 -5
- package/dist/AI/components/analytics/realtime/realtime-transcripts-data.js.map +1 -1
- package/dist/AI/components/duplicates/compare-value.component.d.ts +67 -0
- package/dist/AI/components/duplicates/compare-value.component.d.ts.map +1 -0
- package/dist/AI/components/duplicates/compare-value.component.js +168 -0
- package/dist/AI/components/duplicates/compare-value.component.js.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +49 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +287 -169
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +77 -0
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +116 -0
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -0
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
- 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 +16 -4
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +2 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +12 -6
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-index-auto.d.ts +29 -0
- package/dist/AI/components/vectors/vector-index-auto.d.ts.map +1 -0
- package/dist/AI/components/vectors/vector-index-auto.js +59 -0
- package/dist/AI/components/vectors/vector-index-auto.js.map +1 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +9 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +65 -20
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +7 -3
- 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 +3 -2
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +0 -3
- 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 +5 -14
- 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 +1 -0
- 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 +1 -0
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +12 -10
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-agent-context.d.ts +14 -43
- package/dist/DashboardBrowser/dashboard-browser-agent-context.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-agent-context.js +6 -29
- package/dist/DashboardBrowser/dashboard-browser-agent-context.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +174 -321
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +522 -1195
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-library-filter.d.ts +116 -0
- package/dist/DashboardBrowser/dashboard-library-filter.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboard-library-filter.js +277 -0
- package/dist/DashboardBrowser/dashboard-library-filter.js.map +1 -0
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboards-agent-tools.d.ts +26 -0
- package/dist/DashboardBrowser/dashboards-agent-tools.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboards-agent-tools.js +32 -0
- package/dist/DashboardBrowser/dashboards-agent-tools.js.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.d.ts +58 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.js +391 -0
- package/dist/DashboardBrowser/dashboards-categories-resource.component.js.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.d.ts +37 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.js +68 -0
- package/dist/DashboardBrowser/dashboards-categories.helpers.js.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.component.d.ts +295 -0
- package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.component.js +1022 -0
- package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.types.d.ts +23 -0
- package/dist/DashboardEditor/dashboard-editor.types.d.ts.map +1 -0
- package/dist/DashboardEditor/dashboard-editor.types.js +3 -0
- package/dist/DashboardEditor/dashboard-editor.types.js.map +1 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.d.ts +11 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.d.ts.map +1 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.js +17 -0
- package/dist/DashboardEditor/dashboard-viewer-factory.js.map +1 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +26 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +302 -219
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts +1 -1
- package/dist/DataExplorer/services/explorer-state.service.js +2 -5
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
- package/dist/FormBuilder/form-builder-resource.component.d.ts +0 -14
- package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
- package/dist/FormBuilder/form-builder-resource.component.js +7 -29
- package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
- package/dist/Home/home-agent-context.d.ts +29 -10
- package/dist/Home/home-agent-context.d.ts.map +1 -1
- package/dist/Home/home-agent-context.js +50 -24
- package/dist/Home/home-agent-context.js.map +1 -1
- package/dist/Home/home-dashboard-switcher.component.d.ts +95 -0
- package/dist/Home/home-dashboard-switcher.component.d.ts.map +1 -0
- package/dist/Home/home-dashboard-switcher.component.js +442 -0
- package/dist/Home/home-dashboard-switcher.component.js.map +1 -0
- package/dist/Home/home-dashboard.component.d.ts +330 -17
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +1702 -1014
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Home/home-menus.d.ts +38 -0
- package/dist/Home/home-menus.d.ts.map +1 -0
- package/dist/Home/home-menus.js +53 -0
- package/dist/Home/home-menus.js.map +1 -0
- package/dist/Home/home-pinned-dashboards.d.ts +33 -0
- package/dist/Home/home-pinned-dashboards.d.ts.map +1 -0
- package/dist/Home/home-pinned-dashboards.js +76 -0
- package/dist/Home/home-pinned-dashboards.js.map +1 -0
- package/dist/PredictiveStudio/components/ps-production.component.d.ts +5 -1
- package/dist/PredictiveStudio/components/ps-production.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-production.component.js +64 -41
- package/dist/PredictiveStudio/components/ps-production.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +3 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/RealtimeRecordings/realtime-recordings-dashboard.component.js +2 -2
- package/dist/RealtimeRecordings/realtime-recordings-dashboard.component.js.map +1 -1
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts +1 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.d.ts.map +1 -1
- package/dist/TelephonyOperations/telephony-operations-dashboard.component.js +7 -0
- package/dist/TelephonyOperations/telephony-operations-dashboard.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 +7 -7
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +21 -20
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +4 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +69 -62
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +22 -2
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +1 -1
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +3 -1
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/dist/shared/dashboard-library-changes.d.ts +23 -0
- package/dist/shared/dashboard-library-changes.d.ts.map +1 -0
- package/dist/shared/dashboard-library-changes.js +26 -0
- package/dist/shared/dashboard-library-changes.js.map +1 -0
- package/dist/shared/dashboard-owner-names.d.ts +17 -0
- package/dist/shared/dashboard-owner-names.d.ts.map +1 -0
- package/dist/shared/dashboard-owner-names.js +65 -0
- package/dist/shared/dashboard-owner-names.js.map +1 -0
- package/dist/shared/dashboard-recents.d.ts +34 -0
- package/dist/shared/dashboard-recents.d.ts.map +1 -0
- package/dist/shared/dashboard-recents.js +87 -0
- package/dist/shared/dashboard-recents.js.map +1 -0
- package/dist/shared/dashboards-app-install.d.ts +59 -0
- package/dist/shared/dashboards-app-install.d.ts.map +1 -0
- package/dist/shared/dashboards-app-install.js +97 -0
- package/dist/shared/dashboards-app-install.js.map +1 -0
- package/dist/shared/dashboards-app.helpers.d.ts +42 -0
- package/dist/shared/dashboards-app.helpers.d.ts.map +1 -0
- package/dist/shared/dashboards-app.helpers.js +143 -0
- package/dist/shared/dashboards-app.helpers.js.map +1 -0
- package/package.json +69 -68
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials-list-resource.component.js","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-list-resource.component.ts","../../../src/Credentials/components/credentials-list-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ResourceData, MJCredentialEntity, MJCredentialTypeEntity } from '@memberjunction/core-entities';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { CredentialEditPanelComponent } from '@memberjunction/ng-credentials';\nimport { FilterFieldConfig, ViewToggleOption, MJConfirmService } from '@memberjunction/ng-ui-components';\ntype ViewMode = 'grid' | 'list';\ntype StatusFilter = '' | 'active' | 'inactive' | 'expired' | 'expiring';\n\n@RegisterClass(BaseResourceComponent, 'CredentialsListResource')\n@Component({\n standalone: false,\n selector: 'mj-credentials-list-resource',\n templateUrl: './credentials-list-resource.component.html',\n styleUrls: ['./credentials-list-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CredentialsListResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public isLoading = true;\n public Credentials: MJCredentialEntity[] = [];\n\n /** @deprecated Use {@link Credentials}. */\n public get credentials(): MJCredentialEntity[] {\n return this.Credentials;\n }\n /** @deprecated Use {@link Credentials}. */\n public set credentials(value: MJCredentialEntity[]) {\n this.Credentials = value;\n }\n public FilteredCredentials: MJCredentialEntity[] = [];\n\n /** @deprecated Use {@link FilteredCredentials}. */\n public get filteredCredentials(): MJCredentialEntity[] {\n return this.FilteredCredentials;\n }\n /** @deprecated Use {@link FilteredCredentials}. */\n public set filteredCredentials(value: MJCredentialEntity[]) {\n this.FilteredCredentials = value;\n }\n public Types: MJCredentialTypeEntity[] = [];\n\n /** @deprecated Use {@link Types}. */\n public get types(): MJCredentialTypeEntity[] {\n return this.Types;\n }\n /** @deprecated Use {@link Types}. */\n public set types(value: MJCredentialTypeEntity[]) {\n this.Types = value;\n }\n\n // View state\n public ViewMode: ViewMode = 'grid';\n\n /** @deprecated Use {@link ViewMode}. */\n public get viewMode(): ViewMode {\n return this.ViewMode;\n }\n /** @deprecated Use {@link ViewMode}. */\n public set viewMode(value: ViewMode) {\n this.ViewMode = value;\n }\n public SearchText = '';\n\n /** @deprecated Use {@link SearchText}. */\n public get searchText() {\n return this.SearchText;\n }\n /** @deprecated Use {@link SearchText}. */\n public set searchText(value) {\n this.SearchText = value;\n }\n public SelectedTypeFilter = '';\n\n /** @deprecated Use {@link SelectedTypeFilter}. */\n public get selectedTypeFilter() {\n return this.SelectedTypeFilter;\n }\n /** @deprecated Use {@link SelectedTypeFilter}. */\n public set selectedTypeFilter(value) {\n this.SelectedTypeFilter = value;\n }\n public SelectedStatusFilter: StatusFilter = '';\n\n /** @deprecated Use {@link SelectedStatusFilter}. */\n public get selectedStatusFilter(): StatusFilter {\n return this.SelectedStatusFilter;\n }\n /** @deprecated Use {@link SelectedStatusFilter}. */\n public set selectedStatusFilter(value: StatusFilter) {\n this.SelectedStatusFilter = value;\n }\n public ShowActiveOnly = false;\n\n /** @deprecated Use {@link ShowActiveOnly}. */\n public get showActiveOnly() {\n return this.ShowActiveOnly;\n }\n /** @deprecated Use {@link ShowActiveOnly}. */\n public set showActiveOnly(value) {\n this.ShowActiveOnly = value;\n }\n\n // Selection for bulk operations\n public SelectedCredentials = new Set<string>();\n\n /** @deprecated Use {@link SelectedCredentials}. */\n public get selectedCredentials() {\n return this.SelectedCredentials;\n }\n /** @deprecated Use {@link SelectedCredentials}. */\n public set selectedCredentials(value) {\n this.SelectedCredentials = value;\n }\n private _isAllSelected = false;\n\n // Permissions\n private _metadata = this.ProviderToUse;\n private _permissionCache = new Map<string, boolean>();\n\n protected override destroy$ = new Subject<void>();\n\n @ViewChild('editPanel') EditPanel!: CredentialEditPanelComponent;\n\n /** @deprecated Use {@link EditPanel}. */\n get editPanel(): CredentialEditPanelComponent {\n return this.EditPanel;\n }\n /** @deprecated Use {@link EditPanel}. */\n set editPanel(value: CredentialEditPanelComponent) {\n this.EditPanel = value;\n }\n\n public readonly ViewOptions: ViewToggleOption[] = [\n { key: 'grid', icon: 'fa-solid fa-grip', title: 'Grid view' },\n { key: 'list', icon: 'fa-solid fa-list', title: 'List view' }\n ];\n\n /** @deprecated Use {@link ViewOptions}. */\n public get viewOptions(): ViewToggleOption[] {\n return this.ViewOptions;\n }\n\n public get FilterFields(): FilterFieldConfig[] {\n const typeOptions = [\n { text: 'All Types', value: '' as const },\n ...this.Types.map(t => ({ text: t.Name, value: t.ID as string }))\n ];\n return [\n {\n key: 'typeFilter',\n type: 'dropdown',\n label: 'Type',\n icon: 'fa-solid fa-shapes',\n placeholder: 'All Types',\n filterable: true,\n options: typeOptions\n },\n {\n key: 'statusFilter',\n type: 'dropdown',\n label: 'Status',\n icon: 'fa-solid fa-circle-info',\n placeholder: 'All Statuses',\n options: [\n { text: 'All Statuses', value: '' },\n { text: 'Active', value: 'active' },\n { text: 'Inactive', value: 'inactive' },\n { text: 'Expiring Soon', value: 'expiring' },\n { text: 'Expired', value: 'expired' }\n ]\n }\n ];\n }\n public get FilterValues(): Record<string, unknown> {\n return { typeFilter: this.SelectedTypeFilter, statusFilter: this.SelectedStatusFilter };\n }\n public get ActiveFilterCount(): number {\n let n = 0;\n if (this.SelectedTypeFilter) n++;\n if (this.SelectedStatusFilter) n++;\n return n;\n }\n public OnFilterValuesChange(v: Record<string, unknown>): void {\n const next = (v ?? {}) as { typeFilter?: string; statusFilter?: StatusFilter };\n if ((next.typeFilter ?? '') !== this.SelectedTypeFilter) {\n this.OnTypeFilterChange(next.typeFilter ?? '');\n }\n if ((next.statusFilter ?? '') !== this.SelectedStatusFilter) {\n this.OnStatusFilterChange(next.statusFilter ?? '');\n }\n }\n\n /** @deprecated Use {@link OnFilterValuesChange}. */\n public onFilterValuesChange(v: Record<string, unknown>): void {\n return this.OnFilterValuesChange(v);\n }\n public ResetFilters(): void {\n if (this.SelectedTypeFilter) this.OnTypeFilterChange('');\n if (this.SelectedStatusFilter) this.OnStatusFilterChange('');\n }\n\n /** @deprecated Use {@link ResetFilters}. */\n public resetFilters(): void {\n return this.ResetFilters();\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n private confirm: MJConfirmService\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Credentials';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-key';\n }\n\n // === Permission Checks ===\n public get UserCanCreate(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Create');\n }\n\n public get UserCanUpdate(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Update');\n }\n\n public get UserCanDelete(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Delete');\n }\n\n private checkEntityPermission(entityName: string, permissionType: 'Create' | 'Read' | 'Update' | 'Delete'): boolean {\n const cacheKey = `${entityName}_${permissionType}`;\n\n if (this._permissionCache.has(cacheKey)) {\n return this._permissionCache.get(cacheKey)!;\n }\n\n try {\n const entityInfo = this._metadata.Entities.find(e => e.Name === entityName);\n if (!entityInfo) {\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n\n const userPermissions = entityInfo.GetUserPermisions(this._metadata.CurrentUser);\n let hasPermission = false;\n\n switch (permissionType) {\n case 'Create': hasPermission = userPermissions.CanCreate; break;\n case 'Read': hasPermission = userPermissions.CanRead; break;\n case 'Update': hasPermission = userPermissions.CanUpdate; break;\n case 'Delete': hasPermission = userPermissions.CanDelete; break;\n }\n\n this._permissionCache.set(cacheKey, hasPermission);\n return hasPermission;\n } catch (error) {\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n }\n\n private async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.markForCheck();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n const [credResult, typeResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Credentials',\n OrderBy: '__mj_UpdatedAt DESC',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: Credential Types',\n OrderBy: 'Category, Name',\n ResultType: 'entity_object'\n }\n ]);\n\n if (credResult.Success) {\n this.Credentials = credResult.Results as MJCredentialEntity[];\n }\n\n if (typeResult.Success) {\n this.Types = typeResult.Results as MJCredentialTypeEntity[];\n }\n\n this.applyFilters();\n\n } catch (error) {\n console.error('Error loading credentials:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error loading credentials', 'error', 3000);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n\n // Handle navigation params from Data.Configuration (passed via NavigationService)\n this.handleNavigationConfig();\n }\n }\n\n // === Navigation Handling ===\n\n private handleNavigationConfig(): void {\n const config = this.Data?.Configuration;\n if (!config) {\n return;\n }\n\n // Apply filters from navigation config\n if (config.typeId) {\n this.SelectedTypeFilter = config.typeId as string;\n this.applyFilters();\n }\n\n if (config.openCreatePanel) {\n // Open create panel (optionally with type/category pre-selected)\n setTimeout(() => {\n if (config.categoryId) {\n this.CreateNewCredentialWithType(config.typeId as string, config.categoryId as string);\n } else if (config.typeId) {\n this.CreateNewCredentialWithType(config.typeId as string);\n } else {\n this.CreateNewCredential();\n }\n }, 100);\n }\n }\n\n // === CRUD Operations ===\n\n public CreateNewCredential(): void {\n if (this.EditPanel) {\n this.EditPanel.open(null);\n }\n }\n\n /** @deprecated Use {@link CreateNewCredential}. */\n public createNewCredential(): void {\n return this.CreateNewCredential();\n }\n\n public CreateNewCredentialWithType(typeId?: string, categoryId?: string): void {\n if (this.EditPanel) {\n this.EditPanel.open(null, typeId, categoryId);\n }\n }\n\n /** @deprecated Use {@link CreateNewCredentialWithType}. */\n public createNewCredentialWithType(typeId?: string, categoryId?: string): void {\n return this.CreateNewCredentialWithType(typeId, categoryId);\n }\n\n public EditCredential(credential: MJCredentialEntity, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.EditPanel) {\n this.EditPanel.open(credential);\n }\n }\n\n /** @deprecated Use {@link EditCredential}. */\n public editCredential(credential: MJCredentialEntity, event?: Event): void {\n return this.EditCredential(credential, event);\n }\n\n public OnCredentialSaved(credential: MJCredentialEntity): void {\n // Check if it's a new credential or update\n const existingIndex = this.Credentials.findIndex(c => UUIDsEqual(c.ID, credential.ID));\n if (existingIndex >= 0) {\n // Update existing\n this.Credentials[existingIndex] = credential;\n } else {\n // Add new\n this.Credentials.unshift(credential);\n }\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link OnCredentialSaved}. */\n public onCredentialSaved(credential: MJCredentialEntity): void {\n return this.OnCredentialSaved(credential);\n }\n\n public OnCredentialDeleted(credentialId: string): void {\n this.Credentials = this.Credentials.filter(c => !UUIDsEqual(c.ID, credentialId));\n this.SelectedCredentials.delete(credentialId);\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link OnCredentialDeleted}. */\n public onCredentialDeleted(credentialId: string): void {\n return this.OnCredentialDeleted(credentialId);\n }\n\n public async DeleteCredential(credential: MJCredentialEntity, event?: Event): Promise<void> {\n if (event) {\n event.stopPropagation();\n }\n\n if (!this.UserCanDelete) {\n MJNotificationService.Instance.CreateSimpleNotification('You do not have permission to delete credentials', 'warning', 3000);\n return;\n }\n\n const confirmed = await this.confirm.ConfirmDelete({\n title: 'Delete credential',\n message: `Delete \"${credential.Name}\"?`,\n detail: 'This action cannot be undone.',\n });\n if (!confirmed) return;\n\n try {\n const success = await credential.Delete();\n if (success) {\n MJNotificationService.Instance.CreateSimpleNotification(`Credential \"${credential.Name}\" deleted successfully`, 'success', 3000);\n this.Credentials = this.Credentials.filter(c => !UUIDsEqual(c.ID, credential.ID));\n this.SelectedCredentials.delete(credential.ID);\n this.applyFilters();\n } else {\n MJNotificationService.Instance.CreateSimpleNotification('Failed to delete credential', 'error', 3000);\n }\n } catch (error) {\n console.error('Error deleting credential:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error deleting credential', 'error', 3000);\n }\n }\n\n /** @deprecated Use {@link DeleteCredential}. */\n public async deleteCredential(credential: MJCredentialEntity, event?: Event): Promise<void> {\n return this.DeleteCredential(credential, event);\n }\n\n public async ToggleCredentialActive(credential: MJCredentialEntity, event?: Event): Promise<void> {\n if (event) {\n event.stopPropagation();\n }\n\n if (!this.UserCanUpdate) {\n MJNotificationService.Instance.CreateSimpleNotification('You do not have permission to update credentials', 'warning', 3000);\n return;\n }\n\n try {\n credential.IsActive = !credential.IsActive;\n const success = await credential.Save();\n\n if (success) {\n const status = credential.IsActive ? 'activated' : 'deactivated';\n MJNotificationService.Instance.CreateSimpleNotification(`Credential \"${credential.Name}\" ${status}`, 'success', 2000);\n this.applyFilters();\n } else {\n // Revert on failure\n credential.IsActive = !credential.IsActive;\n MJNotificationService.Instance.CreateSimpleNotification('Failed to update credential', 'error', 3000);\n }\n } catch (error) {\n console.error('Error updating credential:', error);\n credential.IsActive = !credential.IsActive;\n MJNotificationService.Instance.CreateSimpleNotification('Error updating credential', 'error', 3000);\n }\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleCredentialActive}. */\n public async toggleCredentialActive(credential: MJCredentialEntity, event?: Event): Promise<void> {\n return this.ToggleCredentialActive(credential, event);\n }\n\n // === Selection ===\n\n public ToggleSelection(credential: MJCredentialEntity, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.SelectedCredentials.has(credential.ID)) {\n this.SelectedCredentials.delete(credential.ID);\n } else {\n this.SelectedCredentials.add(credential.ID);\n }\n this.updateAllSelectedState();\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleSelection}. */\n public toggleSelection(credential: MJCredentialEntity, event?: Event): void {\n return this.ToggleSelection(credential, event);\n }\n\n public ToggleSelectAll(): void {\n if (this._isAllSelected) {\n this.SelectedCredentials.clear();\n } else {\n this.FilteredCredentials.forEach(c => this.SelectedCredentials.add(c.ID));\n }\n this._isAllSelected = !this._isAllSelected;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleSelectAll}. */\n public toggleSelectAll(): void {\n return this.ToggleSelectAll();\n }\n\n public IsAllSelected(): boolean {\n return this._isAllSelected;\n }\n\n /** @deprecated Use {@link IsAllSelected}. */\n public isAllSelected(): boolean {\n return this.IsAllSelected();\n }\n\n public IsSelected(credential: MJCredentialEntity): boolean {\n return this.SelectedCredentials.has(credential.ID);\n }\n\n /** @deprecated Use {@link IsSelected}. */\n public isSelected(credential: MJCredentialEntity): boolean {\n return this.IsSelected(credential);\n }\n\n public ClearSelection(): void {\n this.SelectedCredentials.clear();\n this._isAllSelected = false;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ClearSelection}. */\n public clearSelection(): void {\n return this.ClearSelection();\n }\n\n private updateAllSelectedState(): void {\n this._isAllSelected = this.FilteredCredentials.length > 0 &&\n this.FilteredCredentials.every(c => this.SelectedCredentials.has(c.ID));\n }\n\n public async DeleteSelected(): Promise<void> {\n if (!this.UserCanDelete || this.SelectedCredentials.size === 0) return;\n\n const count = this.SelectedCredentials.size;\n const confirmed = await this.confirm.ConfirmDelete({\n title: 'Delete credentials',\n message: `Delete ${count} credential(s)?`,\n detail: 'This action cannot be undone.',\n });\n if (!confirmed) return;\n\n const toDelete = Array.from(this.SelectedCredentials)\n .map(id => this.Credentials.find(c => UUIDsEqual(c.ID, id)))\n .filter((c): c is MJCredentialEntity => c != null);\n\n if (toDelete.length === 0) return;\n\n const tg = await this._metadata.CreateTransactionGroup();\n for (const credential of toDelete) {\n credential.TransactionGroup = tg;\n await credential.Delete();\n }\n\n if (await tg.Submit()) {\n const deletedIds = new Set(toDelete.map(c => c.ID));\n this.Credentials = this.Credentials.filter(c => !deletedIds.has(c.ID));\n this.SelectedCredentials.clear();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `${toDelete.length} credential(s) deleted`,\n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete credentials — all changes have been rolled back',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteSelected}. */\n public async deleteSelected(): Promise<void> {\n return this.DeleteSelected();\n }\n\n // === Filtering ===\n\n public OnSearchChange(value: string): void {\n this.SearchText = value;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnSearchChange}. */\n public onSearchChange(value: string): void {\n return this.OnSearchChange(value);\n }\n\n public OnTypeFilterChange(typeId: string): void {\n this.SelectedTypeFilter = typeId;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnTypeFilterChange}. */\n public onTypeFilterChange(typeId: string): void {\n return this.OnTypeFilterChange(typeId);\n }\n\n public OnStatusFilterChange(status: StatusFilter): void {\n this.SelectedStatusFilter = status;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnStatusFilterChange}. */\n public onStatusFilterChange(status: StatusFilter): void {\n return this.OnStatusFilterChange(status);\n }\n\n public OnActiveFilterChange(showActive: boolean): void {\n this.ShowActiveOnly = showActive;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnActiveFilterChange}. */\n public onActiveFilterChange(showActive: boolean): void {\n return this.OnActiveFilterChange(showActive);\n }\n\n public ClearFilters(): void {\n this.SearchText = '';\n this.SelectedTypeFilter = '';\n this.SelectedStatusFilter = '';\n this.ShowActiveOnly = false;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link ClearFilters}. */\n public clearFilters(): void {\n return this.ClearFilters();\n }\n\n /** True when search and/or any filter narrow the list. */\n public get IsListNarrowed(): boolean {\n return !!(this.SearchText || this.SelectedTypeFilter || this.SelectedStatusFilter);\n }\n\n /** Empty-state CTA: reset filters when narrowed, otherwise create. */\n public OnEmptyStateAction(): void {\n if (this.IsListNarrowed) {\n this.ClearFilters();\n } else {\n this.CreateNewCredential();\n }\n }\n\n /** @deprecated Use {@link OnEmptyStateAction}. */\n public onEmptyStateAction(): void {\n return this.OnEmptyStateAction();\n }\n\n public get HasActiveFilters(): boolean {\n return this.SearchText !== '' ||\n this.SelectedTypeFilter !== '' ||\n this.SelectedStatusFilter !== '' ||\n this.ShowActiveOnly;\n }\n\n /** @deprecated Use {@link HasActiveFilters}. */\n public get hasActiveFilters(): boolean {\n return this.HasActiveFilters;\n }\n\n private applyFilters(): void {\n let filtered = [...this.Credentials];\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n\n // Filter by active status\n if (this.ShowActiveOnly) {\n filtered = filtered.filter(c => c.IsActive);\n }\n\n // Filter by status\n if (this.SelectedStatusFilter) {\n filtered = filtered.filter(c => {\n const statusClass = this.GetStatusClass(c);\n switch (this.SelectedStatusFilter) {\n case 'active': return statusClass === 'active';\n case 'inactive': return statusClass === 'inactive';\n case 'expired': return statusClass === 'expired';\n case 'expiring': return statusClass === 'expiring';\n default: return true;\n }\n });\n }\n\n // Filter by type\n if (this.SelectedTypeFilter) {\n filtered = filtered.filter(c => UUIDsEqual(c.CredentialTypeID, this.SelectedTypeFilter));\n }\n\n // Filter by search text\n if (this.SearchText.trim()) {\n const search = this.SearchText.toLowerCase().trim();\n filtered = filtered.filter(c =>\n c.Name.toLowerCase().includes(search) ||\n (c.Description && c.Description.toLowerCase().includes(search)) ||\n (c.CredentialType && c.CredentialType.toLowerCase().includes(search))\n );\n }\n\n this.FilteredCredentials = filtered;\n this.updateAllSelectedState();\n this.cdr.markForCheck();\n }\n\n // === View Mode ===\n\n public SetViewMode(mode: ViewMode): void {\n this.ViewMode = mode;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link SetViewMode}. */\n public setViewMode(mode: ViewMode): void {\n return this.SetViewMode(mode);\n }\n\n // === Helpers ===\n\n public GetTypeById(typeId: string): MJCredentialTypeEntity | undefined {\n return this.Types.find(t => UUIDsEqual(t.ID, typeId));\n }\n\n /** @deprecated Use {@link GetTypeById}. */\n public getTypeById(typeId: string): MJCredentialTypeEntity | undefined {\n return this.GetTypeById(typeId);\n }\n\n public GetTypesByCategory(): Map<string, MJCredentialTypeEntity[]> {\n const grouped = new Map<string, MJCredentialTypeEntity[]>();\n for (const type of this.Types) {\n const category = type.Category;\n if (!grouped.has(category)) {\n grouped.set(category, []);\n }\n grouped.get(category)!.push(type);\n }\n return grouped;\n }\n\n /** @deprecated Use {@link GetTypesByCategory}. */\n public getTypesByCategory(): Map<string, MJCredentialTypeEntity[]> {\n return this.GetTypesByCategory();\n }\n\n public GetStatusClass(credential: MJCredentialEntity): string {\n if (!credential.IsActive) {\n return 'inactive';\n }\n if (credential.ExpiresAt) {\n const expiresAt = new Date(credential.ExpiresAt);\n const now = new Date();\n const thirtyDays = 30 * 24 * 60 * 60 * 1000;\n if (expiresAt < now) {\n return 'expired';\n }\n if (expiresAt.getTime() - now.getTime() < thirtyDays) {\n return 'expiring';\n }\n }\n return 'active';\n }\n\n /** @deprecated Use {@link GetStatusClass}. */\n public getStatusClass(credential: MJCredentialEntity): string {\n return this.GetStatusClass(credential);\n }\n\n public GetStatusLabel(credential: MJCredentialEntity): string {\n const statusClass = this.GetStatusClass(credential);\n const labels: Record<string, string> = {\n 'active': 'Active',\n 'inactive': 'Inactive',\n 'expired': 'Expired',\n 'expiring': 'Expiring Soon'\n };\n return labels[statusClass] || 'Unknown';\n }\n\n /** @deprecated Use {@link GetStatusLabel}. */\n public getStatusLabel(credential: MJCredentialEntity): string {\n return this.GetStatusLabel(credential);\n }\n\n public GetStatusIcon(credential: MJCredentialEntity): string {\n const statusClass = this.GetStatusClass(credential);\n const icons: Record<string, string> = {\n 'active': 'fa-solid fa-check-circle',\n 'inactive': 'fa-solid fa-minus-circle',\n 'expired': 'fa-solid fa-times-circle',\n 'expiring': 'fa-solid fa-clock'\n };\n return icons[statusClass] || 'fa-solid fa-circle';\n }\n\n /** @deprecated Use {@link GetStatusIcon}. */\n public getStatusIcon(credential: MJCredentialEntity): string {\n return this.GetStatusIcon(credential);\n }\n\n public formatDate(date: Date | null | undefined): string {\n if (!date) return 'Never';\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n }\n\n public FormatDateTime(date: Date | null | undefined): string {\n if (!date) return 'Never';\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n });\n }\n\n /** @deprecated Use {@link FormatDateTime}. */\n public formatDateTime(date: Date | null | undefined): string {\n return this.FormatDateTime(date);\n }\n\n public GetTimeAgo(date: Date | null | undefined): string {\n if (!date) return 'Never';\n const now = new Date();\n const then = new Date(date);\n const diffMs = now.getTime() - then.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMins < 1) return 'Just now';\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 30) return `${diffDays}d ago`;\n return this.formatDate(date);\n }\n\n /** @deprecated Use {@link GetTimeAgo}. */\n public getTimeAgo(date: Date | null | undefined): string {\n return this.GetTimeAgo(date);\n }\n\n public GetTypeIcon(credential: MJCredentialEntity): string {\n const type = this.GetTypeById(credential.CredentialTypeID);\n if (!type) return 'fa-solid fa-key';\n\n const iconMap: Record<string, string> = {\n 'AI': 'fa-solid fa-brain',\n 'Communication': 'fa-solid fa-envelope',\n 'Storage': 'fa-solid fa-cloud',\n 'Database': 'fa-solid fa-database',\n 'Authentication': 'fa-solid fa-shield-halved',\n 'Integration': 'fa-solid fa-plug'\n };\n return iconMap[type.Category] || 'fa-solid fa-key';\n }\n\n /** @deprecated Use {@link GetTypeIcon}. */\n public getTypeIcon(credential: MJCredentialEntity): string {\n return this.GetTypeIcon(credential);\n }\n\n public Refresh(): void {\n this.SelectedCredentials.clear();\n this.loadData();\n }\n\n /** @deprecated Use {@link Refresh}. */\n public refresh(): void {\n return this.Refresh();\n }\n\n // === Stats ===\n\n public get ActiveCount(): number {\n return this.Credentials.filter(c => c.IsActive).length;\n }\n\n /** @deprecated Use {@link ActiveCount}. */\n public get activeCount(): number {\n return this.ActiveCount;\n }\n\n public GetActiveCount(): number {\n return this.ActiveCount;\n }\n\n /** @deprecated Use {@link GetActiveCount}. */\n public getActiveCount(): number {\n return this.GetActiveCount();\n }\n\n public get ExpiringCount(): number {\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n return this.Credentials.filter(c =>\n c.ExpiresAt &&\n new Date(c.ExpiresAt) >= now &&\n new Date(c.ExpiresAt) <= thirtyDaysFromNow &&\n c.IsActive\n ).length;\n }\n\n /** @deprecated Use {@link ExpiringCount}. */\n public get expiringCount(): number {\n return this.ExpiringCount;\n }\n\n public GetExpiringSoonCount(): number {\n return this.ExpiringCount;\n }\n\n /** @deprecated Use {@link GetExpiringSoonCount}. */\n public getExpiringSoonCount(): number {\n return this.GetExpiringSoonCount();\n }\n\n public get ExpiredCount(): number {\n const now = new Date();\n return this.Credentials.filter(c =>\n c.ExpiresAt && new Date(c.ExpiresAt) < now\n ).length;\n }\n\n /** @deprecated Use {@link ExpiredCount}. */\n public get expiredCount(): number {\n return this.ExpiredCount;\n }\n\n public GetExpiredCount(): number {\n return this.ExpiredCount;\n }\n\n /** @deprecated Use {@link GetExpiredCount}. */\n public getExpiredCount(): number {\n return this.GetExpiredCount();\n }\n\n // === Status Helpers ===\n\n public IsExpired(credential: MJCredentialEntity): boolean {\n if (!credential.ExpiresAt) return false;\n return new Date(credential.ExpiresAt) < new Date();\n }\n\n /** @deprecated Use {@link IsExpired}. */\n public isExpired(credential: MJCredentialEntity): boolean {\n return this.IsExpired(credential);\n }\n\n public IsExpiringSoon(credential: MJCredentialEntity): boolean {\n if (!credential.ExpiresAt) return false;\n const expiresAt = new Date(credential.ExpiresAt);\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n return expiresAt >= now && expiresAt <= thirtyDaysFromNow;\n }\n\n /** @deprecated Use {@link IsExpiringSoon}. */\n public isExpiringSoon(credential: MJCredentialEntity): boolean {\n return this.IsExpiringSoon(credential);\n }\n\n // === Bulk Operations ===\n\n public async BulkToggleActive(active: boolean): Promise<void> {\n if (!this.UserCanUpdate || this.SelectedCredentials.size === 0) return;\n\n const toUpdate: MJCredentialEntity[] = [];\n for (const credId of this.SelectedCredentials) {\n const credential = this.Credentials.find(c => UUIDsEqual(c.ID, credId));\n if (credential && credential.IsActive !== active) {\n toUpdate.push(credential);\n }\n }\n\n const action = active ? 'activated' : 'deactivated';\n\n if (toUpdate.length === 0) {\n this.ClearSelection();\n return;\n }\n\n const tg = await this._metadata.CreateTransactionGroup();\n for (const credential of toUpdate) {\n credential.IsActive = active;\n credential.TransactionGroup = tg;\n await credential.Save();\n }\n\n if (await tg.Submit()) {\n this.ClearSelection();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `${toUpdate.length} credential(s) ${action}`,\n 'success',\n 3000\n );\n } else {\n // Server rolled back — revert the client-side state to match\n for (const credential of toUpdate) {\n credential.IsActive = !active;\n }\n this.ClearSelection();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to ${action.slice(0, -1)} credentials — all changes have been rolled back`,\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link BulkToggleActive}. */\n public async bulkToggleActive(active: boolean): Promise<void> {\n return this.BulkToggleActive(active);\n }\n\n public async BulkDelete(): Promise<void> {\n if (!this.UserCanDelete || this.SelectedCredentials.size === 0) return;\n\n const count = this.SelectedCredentials.size;\n const confirmed = await this.confirm.ConfirmDelete({\n title: 'Delete credentials',\n message: `Delete ${count} credential(s)?`,\n detail: 'This action cannot be undone.',\n });\n if (!confirmed) return;\n\n const toDelete = Array.from(this.SelectedCredentials)\n .map(id => this.Credentials.find(c => UUIDsEqual(c.ID, id)))\n .filter((c): c is MJCredentialEntity => c != null);\n\n if (toDelete.length === 0) return;\n\n const tg = await this._metadata.CreateTransactionGroup();\n for (const credential of toDelete) {\n credential.TransactionGroup = tg;\n await credential.Delete();\n }\n\n if (await tg.Submit()) {\n const deletedIds = new Set(toDelete.map(c => c.ID));\n this.Credentials = this.Credentials.filter(c => !deletedIds.has(c.ID));\n this.ClearSelection();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `${toDelete.length} credential(s) deleted`,\n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete credentials — all changes have been rolled back',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link BulkDelete}. */\n public async bulkDelete(): Promise<void> {\n return this.BulkDelete();\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Credentials\"\n Icon=\"fa-solid fa-key\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredCredentials.length\"\n [Total]=\"credentials.length\"\n Label=\"credentials\">\n </mj-stat-badge>\n @if (getExpiringSoonCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-clock\"\n [Count]=\"getExpiringSoonCount()\"\n Label=\"expiring\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n @if (getExpiredCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-exclamation-circle\"\n [Count]=\"getExpiredCount()\"\n Label=\"expired\"\n Variant=\"error\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n @if (UserCanCreate) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"action-btn-label\">New Credential</span>\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search credentials...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"viewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (isLoading) {\n <mj-loading text=\"Loading credentials...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Bulk Actions Bar -->\n @if (selectedCredentials.size > 0) {\n <div class=\"bulk-actions\">\n <div class=\"bulk-info\">\n <span class=\"bulk-count\">{{selectedCredentials.size}} selected</span>\n <button class=\"btn-link\" (click)=\"clearSelection()\">Clear selection</button>\n </div>\n <div class=\"bulk-buttons\">\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(true)\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n Activate\n </button>\n }\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(false)\">\n <i class=\"fa-solid fa-toggle-off\"></i>\n Deactivate\n </button>\n }\n @if (UserCanDelete) {\n <button class=\"btn-bulk danger\" (click)=\"bulkDelete()\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </button>\n }\n </div>\n </div>\n }\n <!-- Grid View -->\n @if (viewMode === 'grid' && filteredCredentials.length > 0) {\n <div class=\"credentials-grid\">\n @for (credential of filteredCredentials; track credential) {\n <div\n class=\"credential-card\"\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n [class.expiring]=\"isExpiringSoon(credential)\"\n >\n <!-- Selection Checkbox -->\n @if (UserCanUpdate || UserCanDelete) {\n <div class=\"card-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </div>\n }\n <div class=\"card-header\">\n <div class=\"card-icon\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"card-title\">\n <div class=\"credential-name\">{{credential.Name}}</div>\n <div class=\"credential-type\">{{credential.CredentialType || 'Unknown Type'}}</div>\n </div>\n <div class=\"card-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\">\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"card-body\" (click)=\"editCredential(credential)\">\n <div class=\"status-badge\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"getStatusIcon(credential)\"></i>\n {{getStatusLabel(credential)}}\n </div>\n @if (credential.Description) {\n <p class=\"credential-description\">\n {{credential.Description}}\n </p>\n }\n <div class=\"credential-meta\">\n @if (credential.IsDefault) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-star\"></i>\n <span>Default</span>\n </div>\n }\n @if (credential.ExpiresAt) {\n <div class=\"meta-item\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n <i class=\"fa-solid fa-calendar\"></i>\n <span>{{isExpired(credential) ? 'Expired' : 'Expires'}}: {{formatDate(credential.ExpiresAt)}}</span>\n </div>\n }\n @if (credential.LastUsedAt) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>Last used: {{formatDate(credential.LastUsedAt)}}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"card-footer\">\n @if (credential.Category) {\n <div class=\"category-tag\">\n <i class=\"fa-solid fa-folder\"></i>\n {{credential.Category}}\n </div>\n }\n <div class=\"created-info\">\n Created {{formatDate(credential.__mj_CreatedAt)}}\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- List View -->\n @if (viewMode === 'list' && filteredCredentials.length > 0) {\n <div class=\"credentials-table-container\">\n <table class=\"credentials-table\">\n <thead>\n <tr>\n @if (UserCanUpdate || UserCanDelete) {\n <th class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"isAllSelected()\"\n (change)=\"toggleSelectAll()\"\n />\n </th>\n }\n <th class=\"col-name\">Name</th>\n <th class=\"col-type\">Type</th>\n <th class=\"col-category\">Category</th>\n <th class=\"col-status\">Status</th>\n <th class=\"col-expires\">Expires</th>\n <th class=\"col-used\">Last Used</th>\n <th class=\"col-actions\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (credential of filteredCredentials; track credential) {\n <tr\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n >\n @if (UserCanUpdate || UserCanDelete) {\n <td class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </td>\n }\n <td class=\"col-name\" (click)=\"editCredential(credential)\">\n <div class=\"name-cell\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\" [ngClass]=\"getStatusClass(credential)\"></i>\n <div class=\"name-info\">\n <span class=\"credential-name\">{{credential.Name}}</span>\n @if (credential.Description) {\n <span class=\"credential-desc\">{{credential.Description}}</span>\n }\n </div>\n @if (credential.IsDefault) {\n <span class=\"default-badge\">Default</span>\n }\n </div>\n </td>\n <td class=\"col-type\">{{credential.CredentialType || '-'}}</td>\n <td class=\"col-category\">\n @if (credential.Category) {\n <span class=\"category-pill\">{{credential.Category}}</span>\n }\n @if (!credential.Category) {\n <span>-</span>\n }\n </td>\n <td class=\"col-status\">\n <span class=\"status-pill\" [ngClass]=\"getStatusClass(credential)\">\n {{getStatusLabel(credential)}}\n </span>\n </td>\n <td class=\"col-expires\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n {{credential.ExpiresAt ? formatDate(credential.ExpiresAt) : 'Never'}}\n </td>\n <td class=\"col-used\">\n {{credential.LastUsedAt ? formatDate(credential.LastUsedAt) : 'Never'}}\n </td>\n <td class=\"col-actions\">\n <div class=\"table-actions\">\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\"\n >\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button\n class=\"table-action-btn danger\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- Empty State -->\n @if (filteredCredentials.length === 0) {\n <mj-empty-state\n [Variant]=\"IsListNarrowed ? 'no-results' : 'empty'\"\n Icon=\"fa-solid fa-key\"\n Title=\"No Credentials Found\"\n [Message]=\"IsListNarrowed ? 'No credentials match your current filters.' : 'Get started by creating your first credential.'\"\n [ActionText]=\"IsListNarrowed ? 'Reset filters' : (UserCanCreate ? 'Create Credential' : '')\"\n [ActionIcon]=\"IsListNarrowed ? 'fa-solid fa-rotate-left' : 'fa-solid fa-plus'\"\n (Action)=\"onEmptyStateAction()\" />\n }\n }\n\n <!-- Edit Panel -->\n <mj-credential-edit-panel\n #editPanel\n [credentialTypes]=\"types\"\n (saved)=\"onCredentialSaved($event)\"\n (deleted)=\"onCredentialDeleted($event)\"\n ></mj-credential-edit-panel>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
1
|
+
{"version":3,"file":"credentials-list-resource.component.js","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-list-resource.component.ts","../../../src/Credentials/components/credentials-list-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ResourceData, MJCredentialEntity, MJCredentialTypeEntity } from '@memberjunction/core-entities';\nimport { IndexByUUID, RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { CredentialEditPanelComponent } from '@memberjunction/ng-credentials';\nimport { FilterFieldConfig, ViewToggleOption, MJConfirmService } from '@memberjunction/ng-ui-components';\ntype ViewMode = 'grid' | 'list';\ntype StatusFilter = '' | 'active' | 'inactive' | 'expired' | 'expiring';\n\n@RegisterClass(BaseResourceComponent, 'CredentialsListResource')\n@Component({\n standalone: false,\n selector: 'mj-credentials-list-resource',\n templateUrl: './credentials-list-resource.component.html',\n styleUrls: ['./credentials-list-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CredentialsListResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public isLoading = true;\n public Credentials: MJCredentialEntity[] = [];\n\n /** @deprecated Use {@link Credentials}. */\n public get credentials(): MJCredentialEntity[] {\n return this.Credentials;\n }\n /** @deprecated Use {@link Credentials}. */\n public set credentials(value: MJCredentialEntity[]) {\n this.Credentials = value;\n }\n public FilteredCredentials: MJCredentialEntity[] = [];\n\n /** @deprecated Use {@link FilteredCredentials}. */\n public get filteredCredentials(): MJCredentialEntity[] {\n return this.FilteredCredentials;\n }\n /** @deprecated Use {@link FilteredCredentials}. */\n public set filteredCredentials(value: MJCredentialEntity[]) {\n this.FilteredCredentials = value;\n }\n public Types: MJCredentialTypeEntity[] = [];\n\n /** @deprecated Use {@link Types}. */\n public get types(): MJCredentialTypeEntity[] {\n return this.Types;\n }\n /** @deprecated Use {@link Types}. */\n public set types(value: MJCredentialTypeEntity[]) {\n this.Types = value;\n }\n\n // View state\n public ViewMode: ViewMode = 'grid';\n\n /** @deprecated Use {@link ViewMode}. */\n public get viewMode(): ViewMode {\n return this.ViewMode;\n }\n /** @deprecated Use {@link ViewMode}. */\n public set viewMode(value: ViewMode) {\n this.ViewMode = value;\n }\n public SearchText = '';\n\n /** @deprecated Use {@link SearchText}. */\n public get searchText() {\n return this.SearchText;\n }\n /** @deprecated Use {@link SearchText}. */\n public set searchText(value) {\n this.SearchText = value;\n }\n public SelectedTypeFilter = '';\n\n /** @deprecated Use {@link SelectedTypeFilter}. */\n public get selectedTypeFilter() {\n return this.SelectedTypeFilter;\n }\n /** @deprecated Use {@link SelectedTypeFilter}. */\n public set selectedTypeFilter(value) {\n this.SelectedTypeFilter = value;\n }\n public SelectedStatusFilter: StatusFilter = '';\n\n /** @deprecated Use {@link SelectedStatusFilter}. */\n public get selectedStatusFilter(): StatusFilter {\n return this.SelectedStatusFilter;\n }\n /** @deprecated Use {@link SelectedStatusFilter}. */\n public set selectedStatusFilter(value: StatusFilter) {\n this.SelectedStatusFilter = value;\n }\n public ShowActiveOnly = false;\n\n /** @deprecated Use {@link ShowActiveOnly}. */\n public get showActiveOnly() {\n return this.ShowActiveOnly;\n }\n /** @deprecated Use {@link ShowActiveOnly}. */\n public set showActiveOnly(value) {\n this.ShowActiveOnly = value;\n }\n\n // Selection for bulk operations\n public SelectedCredentials = new Set<string>();\n\n /** @deprecated Use {@link SelectedCredentials}. */\n public get selectedCredentials() {\n return this.SelectedCredentials;\n }\n /** @deprecated Use {@link SelectedCredentials}. */\n public set selectedCredentials(value) {\n this.SelectedCredentials = value;\n }\n private _isAllSelected = false;\n\n // Permissions\n private _metadata = this.ProviderToUse;\n private _permissionCache = new Map<string, boolean>();\n\n protected override destroy$ = new Subject<void>();\n\n @ViewChild('editPanel') EditPanel!: CredentialEditPanelComponent;\n\n /** @deprecated Use {@link EditPanel}. */\n get editPanel(): CredentialEditPanelComponent {\n return this.EditPanel;\n }\n /** @deprecated Use {@link EditPanel}. */\n set editPanel(value: CredentialEditPanelComponent) {\n this.EditPanel = value;\n }\n\n public readonly ViewOptions: ViewToggleOption[] = [\n { key: 'grid', icon: 'fa-solid fa-grip', title: 'Grid view' },\n { key: 'list', icon: 'fa-solid fa-list', title: 'List view' }\n ];\n\n /** @deprecated Use {@link ViewOptions}. */\n public get viewOptions(): ViewToggleOption[] {\n return this.ViewOptions;\n }\n\n public get FilterFields(): FilterFieldConfig[] {\n const typeOptions = [\n { text: 'All Types', value: '' as const },\n ...this.Types.map(t => ({ text: t.Name, value: t.ID as string }))\n ];\n return [\n {\n key: 'typeFilter',\n type: 'dropdown',\n label: 'Type',\n icon: 'fa-solid fa-shapes',\n placeholder: 'All Types',\n filterable: true,\n options: typeOptions\n },\n {\n key: 'statusFilter',\n type: 'dropdown',\n label: 'Status',\n icon: 'fa-solid fa-circle-info',\n placeholder: 'All Statuses',\n options: [\n { text: 'All Statuses', value: '' },\n { text: 'Active', value: 'active' },\n { text: 'Inactive', value: 'inactive' },\n { text: 'Expiring Soon', value: 'expiring' },\n { text: 'Expired', value: 'expired' }\n ]\n }\n ];\n }\n public get FilterValues(): Record<string, unknown> {\n return { typeFilter: this.SelectedTypeFilter, statusFilter: this.SelectedStatusFilter };\n }\n public get ActiveFilterCount(): number {\n let n = 0;\n if (this.SelectedTypeFilter) n++;\n if (this.SelectedStatusFilter) n++;\n return n;\n }\n public OnFilterValuesChange(v: Record<string, unknown>): void {\n const next = (v ?? {}) as { typeFilter?: string; statusFilter?: StatusFilter };\n if ((next.typeFilter ?? '') !== this.SelectedTypeFilter) {\n this.OnTypeFilterChange(next.typeFilter ?? '');\n }\n if ((next.statusFilter ?? '') !== this.SelectedStatusFilter) {\n this.OnStatusFilterChange(next.statusFilter ?? '');\n }\n }\n\n /** @deprecated Use {@link OnFilterValuesChange}. */\n public onFilterValuesChange(v: Record<string, unknown>): void {\n return this.OnFilterValuesChange(v);\n }\n public ResetFilters(): void {\n if (this.SelectedTypeFilter) this.OnTypeFilterChange('');\n if (this.SelectedStatusFilter) this.OnStatusFilterChange('');\n }\n\n /** @deprecated Use {@link ResetFilters}. */\n public resetFilters(): void {\n return this.ResetFilters();\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n private confirm: MJConfirmService\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Credentials';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-key';\n }\n\n // === Permission Checks ===\n public get UserCanCreate(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Create');\n }\n\n public get UserCanUpdate(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Update');\n }\n\n public get UserCanDelete(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Delete');\n }\n\n private checkEntityPermission(entityName: string, permissionType: 'Create' | 'Read' | 'Update' | 'Delete'): boolean {\n const cacheKey = `${entityName}_${permissionType}`;\n\n if (this._permissionCache.has(cacheKey)) {\n return this._permissionCache.get(cacheKey)!;\n }\n\n try {\n const entityInfo = this._metadata.Entities.find(e => e.Name === entityName);\n if (!entityInfo) {\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n\n const userPermissions = entityInfo.GetUserPermisions(this._metadata.CurrentUser);\n let hasPermission = false;\n\n switch (permissionType) {\n case 'Create': hasPermission = userPermissions.CanCreate; break;\n case 'Read': hasPermission = userPermissions.CanRead; break;\n case 'Update': hasPermission = userPermissions.CanUpdate; break;\n case 'Delete': hasPermission = userPermissions.CanDelete; break;\n }\n\n this._permissionCache.set(cacheKey, hasPermission);\n return hasPermission;\n } catch (error) {\n this._permissionCache.set(cacheKey, false);\n return false;\n }\n }\n\n private async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.markForCheck();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n const [credResult, typeResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Credentials',\n OrderBy: '__mj_UpdatedAt DESC',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: Credential Types',\n OrderBy: 'Category, Name',\n ResultType: 'entity_object'\n }\n ]);\n\n if (credResult.Success) {\n this.Credentials = credResult.Results as MJCredentialEntity[];\n }\n\n if (typeResult.Success) {\n this.Types = typeResult.Results as MJCredentialTypeEntity[];\n }\n\n this.applyFilters();\n\n } catch (error) {\n console.error('Error loading credentials:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error loading credentials', 'error', 3000);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n\n // Handle navigation params from Data.Configuration (passed via NavigationService)\n this.handleNavigationConfig();\n }\n }\n\n // === Navigation Handling ===\n\n private handleNavigationConfig(): void {\n const config = this.Data?.Configuration;\n if (!config) {\n return;\n }\n\n // Apply filters from navigation config\n if (config.typeId) {\n this.SelectedTypeFilter = config.typeId as string;\n this.applyFilters();\n }\n\n if (config.openCreatePanel) {\n // Open create panel (optionally with type/category pre-selected)\n setTimeout(() => {\n if (config.categoryId) {\n this.CreateNewCredentialWithType(config.typeId as string, config.categoryId as string);\n } else if (config.typeId) {\n this.CreateNewCredentialWithType(config.typeId as string);\n } else {\n this.CreateNewCredential();\n }\n }, 100);\n }\n }\n\n // === CRUD Operations ===\n\n public CreateNewCredential(): void {\n if (this.EditPanel) {\n this.EditPanel.open(null);\n }\n }\n\n /** @deprecated Use {@link CreateNewCredential}. */\n public createNewCredential(): void {\n return this.CreateNewCredential();\n }\n\n public CreateNewCredentialWithType(typeId?: string, categoryId?: string): void {\n if (this.EditPanel) {\n this.EditPanel.open(null, typeId, categoryId);\n }\n }\n\n /** @deprecated Use {@link CreateNewCredentialWithType}. */\n public createNewCredentialWithType(typeId?: string, categoryId?: string): void {\n return this.CreateNewCredentialWithType(typeId, categoryId);\n }\n\n public EditCredential(credential: MJCredentialEntity, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.EditPanel) {\n this.EditPanel.open(credential);\n }\n }\n\n /** @deprecated Use {@link EditCredential}. */\n public editCredential(credential: MJCredentialEntity, event?: Event): void {\n return this.EditCredential(credential, event);\n }\n\n public OnCredentialSaved(credential: MJCredentialEntity): void {\n // Check if it's a new credential or update\n const existingIndex = this.Credentials.findIndex(c => UUIDsEqual(c.ID, credential.ID));\n if (existingIndex >= 0) {\n // Update existing\n this.Credentials[existingIndex] = credential;\n } else {\n // Add new\n this.Credentials.unshift(credential);\n }\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link OnCredentialSaved}. */\n public onCredentialSaved(credential: MJCredentialEntity): void {\n return this.OnCredentialSaved(credential);\n }\n\n public OnCredentialDeleted(credentialId: string): void {\n this.Credentials = this.Credentials.filter(c => !UUIDsEqual(c.ID, credentialId));\n this.SelectedCredentials.delete(credentialId);\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link OnCredentialDeleted}. */\n public onCredentialDeleted(credentialId: string): void {\n return this.OnCredentialDeleted(credentialId);\n }\n\n public async DeleteCredential(credential: MJCredentialEntity, event?: Event): Promise<void> {\n if (event) {\n event.stopPropagation();\n }\n\n if (!this.UserCanDelete) {\n MJNotificationService.Instance.CreateSimpleNotification('You do not have permission to delete credentials', 'warning', 3000);\n return;\n }\n\n const confirmed = await this.confirm.ConfirmDelete({\n title: 'Delete credential',\n message: `Delete \"${credential.Name}\"?`,\n detail: 'This action cannot be undone.',\n });\n if (!confirmed) return;\n\n try {\n const success = await credential.Delete();\n if (success) {\n MJNotificationService.Instance.CreateSimpleNotification(`Credential \"${credential.Name}\" deleted successfully`, 'success', 3000);\n this.Credentials = this.Credentials.filter(c => !UUIDsEqual(c.ID, credential.ID));\n this.SelectedCredentials.delete(credential.ID);\n this.applyFilters();\n } else {\n MJNotificationService.Instance.CreateSimpleNotification('Failed to delete credential', 'error', 3000);\n }\n } catch (error) {\n console.error('Error deleting credential:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error deleting credential', 'error', 3000);\n }\n }\n\n /** @deprecated Use {@link DeleteCredential}. */\n public async deleteCredential(credential: MJCredentialEntity, event?: Event): Promise<void> {\n return this.DeleteCredential(credential, event);\n }\n\n public async ToggleCredentialActive(credential: MJCredentialEntity, event?: Event): Promise<void> {\n if (event) {\n event.stopPropagation();\n }\n\n if (!this.UserCanUpdate) {\n MJNotificationService.Instance.CreateSimpleNotification('You do not have permission to update credentials', 'warning', 3000);\n return;\n }\n\n try {\n credential.IsActive = !credential.IsActive;\n const success = await credential.Save();\n\n if (success) {\n const status = credential.IsActive ? 'activated' : 'deactivated';\n MJNotificationService.Instance.CreateSimpleNotification(`Credential \"${credential.Name}\" ${status}`, 'success', 2000);\n this.applyFilters();\n } else {\n // Revert on failure\n credential.IsActive = !credential.IsActive;\n MJNotificationService.Instance.CreateSimpleNotification('Failed to update credential', 'error', 3000);\n }\n } catch (error) {\n console.error('Error updating credential:', error);\n credential.IsActive = !credential.IsActive;\n MJNotificationService.Instance.CreateSimpleNotification('Error updating credential', 'error', 3000);\n }\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleCredentialActive}. */\n public async toggleCredentialActive(credential: MJCredentialEntity, event?: Event): Promise<void> {\n return this.ToggleCredentialActive(credential, event);\n }\n\n // === Selection ===\n\n public ToggleSelection(credential: MJCredentialEntity, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.SelectedCredentials.has(credential.ID)) {\n this.SelectedCredentials.delete(credential.ID);\n } else {\n this.SelectedCredentials.add(credential.ID);\n }\n this.updateAllSelectedState();\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleSelection}. */\n public toggleSelection(credential: MJCredentialEntity, event?: Event): void {\n return this.ToggleSelection(credential, event);\n }\n\n public ToggleSelectAll(): void {\n if (this._isAllSelected) {\n this.SelectedCredentials.clear();\n } else {\n this.FilteredCredentials.forEach(c => this.SelectedCredentials.add(c.ID));\n }\n this._isAllSelected = !this._isAllSelected;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ToggleSelectAll}. */\n public toggleSelectAll(): void {\n return this.ToggleSelectAll();\n }\n\n public IsAllSelected(): boolean {\n return this._isAllSelected;\n }\n\n /** @deprecated Use {@link IsAllSelected}. */\n public isAllSelected(): boolean {\n return this.IsAllSelected();\n }\n\n public IsSelected(credential: MJCredentialEntity): boolean {\n return this.SelectedCredentials.has(credential.ID);\n }\n\n /** @deprecated Use {@link IsSelected}. */\n public isSelected(credential: MJCredentialEntity): boolean {\n return this.IsSelected(credential);\n }\n\n public ClearSelection(): void {\n this.SelectedCredentials.clear();\n this._isAllSelected = false;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ClearSelection}. */\n public clearSelection(): void {\n return this.ClearSelection();\n }\n\n private updateAllSelectedState(): void {\n this._isAllSelected = this.FilteredCredentials.length > 0 &&\n this.FilteredCredentials.every(c => this.SelectedCredentials.has(c.ID));\n }\n\n public async DeleteSelected(): Promise<void> {\n if (!this.UserCanDelete || this.SelectedCredentials.size === 0) return;\n\n const count = this.SelectedCredentials.size;\n const confirmed = await this.confirm.ConfirmDelete({\n title: 'Delete credentials',\n message: `Delete ${count} credential(s)?`,\n detail: 'This action cannot be undone.',\n });\n if (!confirmed) return;\n\n const toDelete = this.selectedCredentialEntities();\n\n if (toDelete.length === 0) return;\n\n const tg = await this._metadata.CreateTransactionGroup();\n for (const credential of toDelete) {\n credential.TransactionGroup = tg;\n await credential.Delete();\n }\n\n if (await tg.Submit()) {\n const deletedIds = new Set(toDelete.map(c => c.ID));\n this.Credentials = this.Credentials.filter(c => !deletedIds.has(c.ID));\n this.SelectedCredentials.clear();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `${toDelete.length} credential(s) deleted`,\n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete credentials — all changes have been rolled back',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link DeleteSelected}. */\n public async deleteSelected(): Promise<void> {\n return this.DeleteSelected();\n }\n\n // === Filtering ===\n\n public OnSearchChange(value: string): void {\n this.SearchText = value;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnSearchChange}. */\n public onSearchChange(value: string): void {\n return this.OnSearchChange(value);\n }\n\n public OnTypeFilterChange(typeId: string): void {\n this.SelectedTypeFilter = typeId;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnTypeFilterChange}. */\n public onTypeFilterChange(typeId: string): void {\n return this.OnTypeFilterChange(typeId);\n }\n\n public OnStatusFilterChange(status: StatusFilter): void {\n this.SelectedStatusFilter = status;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnStatusFilterChange}. */\n public onStatusFilterChange(status: StatusFilter): void {\n return this.OnStatusFilterChange(status);\n }\n\n public OnActiveFilterChange(showActive: boolean): void {\n this.ShowActiveOnly = showActive;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link OnActiveFilterChange}. */\n public onActiveFilterChange(showActive: boolean): void {\n return this.OnActiveFilterChange(showActive);\n }\n\n public ClearFilters(): void {\n this.SearchText = '';\n this.SelectedTypeFilter = '';\n this.SelectedStatusFilter = '';\n this.ShowActiveOnly = false;\n this.applyFilters();\n }\n\n /** @deprecated Use {@link ClearFilters}. */\n public clearFilters(): void {\n return this.ClearFilters();\n }\n\n /** True when search and/or any filter narrow the list. */\n public get IsListNarrowed(): boolean {\n return !!(this.SearchText || this.SelectedTypeFilter || this.SelectedStatusFilter);\n }\n\n /** Empty-state CTA: reset filters when narrowed, otherwise create. */\n public OnEmptyStateAction(): void {\n if (this.IsListNarrowed) {\n this.ClearFilters();\n } else {\n this.CreateNewCredential();\n }\n }\n\n /** @deprecated Use {@link OnEmptyStateAction}. */\n public onEmptyStateAction(): void {\n return this.OnEmptyStateAction();\n }\n\n public get HasActiveFilters(): boolean {\n return this.SearchText !== '' ||\n this.SelectedTypeFilter !== '' ||\n this.SelectedStatusFilter !== '' ||\n this.ShowActiveOnly;\n }\n\n /** @deprecated Use {@link HasActiveFilters}. */\n public get hasActiveFilters(): boolean {\n return this.HasActiveFilters;\n }\n\n private applyFilters(): void {\n let filtered = [...this.Credentials];\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n\n // Filter by active status\n if (this.ShowActiveOnly) {\n filtered = filtered.filter(c => c.IsActive);\n }\n\n // Filter by status\n if (this.SelectedStatusFilter) {\n filtered = filtered.filter(c => {\n const statusClass = this.GetStatusClass(c);\n switch (this.SelectedStatusFilter) {\n case 'active': return statusClass === 'active';\n case 'inactive': return statusClass === 'inactive';\n case 'expired': return statusClass === 'expired';\n case 'expiring': return statusClass === 'expiring';\n default: return true;\n }\n });\n }\n\n // Filter by type\n if (this.SelectedTypeFilter) {\n filtered = filtered.filter(c => UUIDsEqual(c.CredentialTypeID, this.SelectedTypeFilter));\n }\n\n // Filter by search text\n if (this.SearchText.trim()) {\n const search = this.SearchText.toLowerCase().trim();\n filtered = filtered.filter(c =>\n c.Name.toLowerCase().includes(search) ||\n (c.Description && c.Description.toLowerCase().includes(search)) ||\n (c.CredentialType && c.CredentialType.toLowerCase().includes(search))\n );\n }\n\n this.FilteredCredentials = filtered;\n this.updateAllSelectedState();\n this.cdr.markForCheck();\n }\n\n // === View Mode ===\n\n public SetViewMode(mode: ViewMode): void {\n this.ViewMode = mode;\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link SetViewMode}. */\n public setViewMode(mode: ViewMode): void {\n return this.SetViewMode(mode);\n }\n\n // === Helpers ===\n\n public GetTypeById(typeId: string): MJCredentialTypeEntity | undefined {\n return this.Types.find(t => UUIDsEqual(t.ID, typeId));\n }\n\n /** @deprecated Use {@link GetTypeById}. */\n public getTypeById(typeId: string): MJCredentialTypeEntity | undefined {\n return this.GetTypeById(typeId);\n }\n\n public GetTypesByCategory(): Map<string, MJCredentialTypeEntity[]> {\n const grouped = new Map<string, MJCredentialTypeEntity[]>();\n for (const type of this.Types) {\n const category = type.Category;\n if (!grouped.has(category)) {\n grouped.set(category, []);\n }\n grouped.get(category)!.push(type);\n }\n return grouped;\n }\n\n /** @deprecated Use {@link GetTypesByCategory}. */\n public getTypesByCategory(): Map<string, MJCredentialTypeEntity[]> {\n return this.GetTypesByCategory();\n }\n\n public GetStatusClass(credential: MJCredentialEntity): string {\n if (!credential.IsActive) {\n return 'inactive';\n }\n if (credential.ExpiresAt) {\n const expiresAt = new Date(credential.ExpiresAt);\n const now = new Date();\n const thirtyDays = 30 * 24 * 60 * 60 * 1000;\n if (expiresAt < now) {\n return 'expired';\n }\n if (expiresAt.getTime() - now.getTime() < thirtyDays) {\n return 'expiring';\n }\n }\n return 'active';\n }\n\n /** @deprecated Use {@link GetStatusClass}. */\n public getStatusClass(credential: MJCredentialEntity): string {\n return this.GetStatusClass(credential);\n }\n\n public GetStatusLabel(credential: MJCredentialEntity): string {\n const statusClass = this.GetStatusClass(credential);\n const labels: Record<string, string> = {\n 'active': 'Active',\n 'inactive': 'Inactive',\n 'expired': 'Expired',\n 'expiring': 'Expiring Soon'\n };\n return labels[statusClass] || 'Unknown';\n }\n\n /** @deprecated Use {@link GetStatusLabel}. */\n public getStatusLabel(credential: MJCredentialEntity): string {\n return this.GetStatusLabel(credential);\n }\n\n public GetStatusIcon(credential: MJCredentialEntity): string {\n const statusClass = this.GetStatusClass(credential);\n const icons: Record<string, string> = {\n 'active': 'fa-solid fa-check-circle',\n 'inactive': 'fa-solid fa-minus-circle',\n 'expired': 'fa-solid fa-times-circle',\n 'expiring': 'fa-solid fa-clock'\n };\n return icons[statusClass] || 'fa-solid fa-circle';\n }\n\n /** @deprecated Use {@link GetStatusIcon}. */\n public getStatusIcon(credential: MJCredentialEntity): string {\n return this.GetStatusIcon(credential);\n }\n\n public formatDate(date: Date | null | undefined): string {\n if (!date) return 'Never';\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n }\n\n public FormatDateTime(date: Date | null | undefined): string {\n if (!date) return 'Never';\n return new Date(date).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n });\n }\n\n /** @deprecated Use {@link FormatDateTime}. */\n public formatDateTime(date: Date | null | undefined): string {\n return this.FormatDateTime(date);\n }\n\n public GetTimeAgo(date: Date | null | undefined): string {\n if (!date) return 'Never';\n const now = new Date();\n const then = new Date(date);\n const diffMs = now.getTime() - then.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMins < 1) return 'Just now';\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 30) return `${diffDays}d ago`;\n return this.formatDate(date);\n }\n\n /** @deprecated Use {@link GetTimeAgo}. */\n public getTimeAgo(date: Date | null | undefined): string {\n return this.GetTimeAgo(date);\n }\n\n public GetTypeIcon(credential: MJCredentialEntity): string {\n const type = this.GetTypeById(credential.CredentialTypeID);\n if (!type) return 'fa-solid fa-key';\n\n const iconMap: Record<string, string> = {\n 'AI': 'fa-solid fa-brain',\n 'Communication': 'fa-solid fa-envelope',\n 'Storage': 'fa-solid fa-cloud',\n 'Database': 'fa-solid fa-database',\n 'Authentication': 'fa-solid fa-shield-halved',\n 'Integration': 'fa-solid fa-plug'\n };\n return iconMap[type.Category] || 'fa-solid fa-key';\n }\n\n /** @deprecated Use {@link GetTypeIcon}. */\n public getTypeIcon(credential: MJCredentialEntity): string {\n return this.GetTypeIcon(credential);\n }\n\n public Refresh(): void {\n this.SelectedCredentials.clear();\n this.loadData();\n }\n\n /** @deprecated Use {@link Refresh}. */\n public refresh(): void {\n return this.Refresh();\n }\n\n // === Stats ===\n\n public get ActiveCount(): number {\n return this.Credentials.filter(c => c.IsActive).length;\n }\n\n /** @deprecated Use {@link ActiveCount}. */\n public get activeCount(): number {\n return this.ActiveCount;\n }\n\n public GetActiveCount(): number {\n return this.ActiveCount;\n }\n\n /** @deprecated Use {@link GetActiveCount}. */\n public getActiveCount(): number {\n return this.GetActiveCount();\n }\n\n public get ExpiringCount(): number {\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n return this.Credentials.filter(c =>\n c.ExpiresAt &&\n new Date(c.ExpiresAt) >= now &&\n new Date(c.ExpiresAt) <= thirtyDaysFromNow &&\n c.IsActive\n ).length;\n }\n\n /** @deprecated Use {@link ExpiringCount}. */\n public get expiringCount(): number {\n return this.ExpiringCount;\n }\n\n public GetExpiringSoonCount(): number {\n return this.ExpiringCount;\n }\n\n /** @deprecated Use {@link GetExpiringSoonCount}. */\n public getExpiringSoonCount(): number {\n return this.GetExpiringSoonCount();\n }\n\n public get ExpiredCount(): number {\n const now = new Date();\n return this.Credentials.filter(c =>\n c.ExpiresAt && new Date(c.ExpiresAt) < now\n ).length;\n }\n\n /** @deprecated Use {@link ExpiredCount}. */\n public get expiredCount(): number {\n return this.ExpiredCount;\n }\n\n public GetExpiredCount(): number {\n return this.ExpiredCount;\n }\n\n /** @deprecated Use {@link GetExpiredCount}. */\n public getExpiredCount(): number {\n return this.GetExpiredCount();\n }\n\n // === Status Helpers ===\n\n public IsExpired(credential: MJCredentialEntity): boolean {\n if (!credential.ExpiresAt) return false;\n return new Date(credential.ExpiresAt) < new Date();\n }\n\n /** @deprecated Use {@link IsExpired}. */\n public isExpired(credential: MJCredentialEntity): boolean {\n return this.IsExpired(credential);\n }\n\n public IsExpiringSoon(credential: MJCredentialEntity): boolean {\n if (!credential.ExpiresAt) return false;\n const expiresAt = new Date(credential.ExpiresAt);\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n return expiresAt >= now && expiresAt <= thirtyDaysFromNow;\n }\n\n /** @deprecated Use {@link IsExpiringSoon}. */\n public isExpiringSoon(credential: MJCredentialEntity): boolean {\n return this.IsExpiringSoon(credential);\n }\n\n // === Bulk Operations ===\n\n /** The loaded credentials that are selected, in selection order; a selected ID no longer loaded is skipped. */\n private selectedCredentialEntities(): MJCredentialEntity[] {\n const credentialsByID = IndexByUUID(this.Credentials);\n return Array.from(this.SelectedCredentials)\n .map(id => credentialsByID.Get(id))\n .filter((c): c is MJCredentialEntity => c != null);\n }\n\n public async BulkToggleActive(active: boolean): Promise<void> {\n if (!this.UserCanUpdate || this.SelectedCredentials.size === 0) return;\n\n const toUpdate: MJCredentialEntity[] = [];\n for (const credential of this.selectedCredentialEntities()) {\n if (credential.IsActive !== active) {\n toUpdate.push(credential);\n }\n }\n\n const action = active ? 'activated' : 'deactivated';\n\n if (toUpdate.length === 0) {\n this.ClearSelection();\n return;\n }\n\n const tg = await this._metadata.CreateTransactionGroup();\n for (const credential of toUpdate) {\n credential.IsActive = active;\n credential.TransactionGroup = tg;\n await credential.Save();\n }\n\n if (await tg.Submit()) {\n this.ClearSelection();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `${toUpdate.length} credential(s) ${action}`,\n 'success',\n 3000\n );\n } else {\n // Server rolled back — revert the client-side state to match\n for (const credential of toUpdate) {\n credential.IsActive = !active;\n }\n this.ClearSelection();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to ${action.slice(0, -1)} credentials — all changes have been rolled back`,\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link BulkToggleActive}. */\n public async bulkToggleActive(active: boolean): Promise<void> {\n return this.BulkToggleActive(active);\n }\n\n public async BulkDelete(): Promise<void> {\n if (!this.UserCanDelete || this.SelectedCredentials.size === 0) return;\n\n const count = this.SelectedCredentials.size;\n const confirmed = await this.confirm.ConfirmDelete({\n title: 'Delete credentials',\n message: `Delete ${count} credential(s)?`,\n detail: 'This action cannot be undone.',\n });\n if (!confirmed) return;\n\n const toDelete = this.selectedCredentialEntities();\n\n if (toDelete.length === 0) return;\n\n const tg = await this._metadata.CreateTransactionGroup();\n for (const credential of toDelete) {\n credential.TransactionGroup = tg;\n await credential.Delete();\n }\n\n if (await tg.Submit()) {\n const deletedIds = new Set(toDelete.map(c => c.ID));\n this.Credentials = this.Credentials.filter(c => !deletedIds.has(c.ID));\n this.ClearSelection();\n this.applyFilters();\n MJNotificationService.Instance.CreateSimpleNotification(\n `${toDelete.length} credential(s) deleted`,\n 'success',\n 3000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to delete credentials — all changes have been rolled back',\n 'error',\n 3000\n );\n }\n }\n\n /** @deprecated Use {@link BulkDelete}. */\n public async bulkDelete(): Promise<void> {\n return this.BulkDelete();\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Credentials\"\n Icon=\"fa-solid fa-key\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredCredentials.length\"\n [Total]=\"credentials.length\"\n Label=\"credentials\">\n </mj-stat-badge>\n @if (getExpiringSoonCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-clock\"\n [Count]=\"getExpiringSoonCount()\"\n Label=\"expiring\"\n Variant=\"warning\">\n </mj-stat-badge>\n }\n @if (getExpiredCount() > 0) {\n <mj-stat-badge\n Icon=\"fa-solid fa-exclamation-circle\"\n [Count]=\"getExpiredCount()\"\n Label=\"expired\"\n Variant=\"error\">\n </mj-stat-badge>\n }\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n @if (UserCanCreate) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewCredential()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"action-btn-label\">New Credential</span>\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search credentials...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"viewOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (isLoading) {\n <mj-loading text=\"Loading credentials...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Bulk Actions Bar -->\n @if (selectedCredentials.size > 0) {\n <div class=\"bulk-actions\">\n <div class=\"bulk-info\">\n <span class=\"bulk-count\">{{selectedCredentials.size}} selected</span>\n <button class=\"btn-link\" (click)=\"clearSelection()\">Clear selection</button>\n </div>\n <div class=\"bulk-buttons\">\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(true)\">\n <i class=\"fa-solid fa-toggle-on\"></i>\n Activate\n </button>\n }\n @if (UserCanUpdate) {\n <button class=\"btn-bulk\" (click)=\"bulkToggleActive(false)\">\n <i class=\"fa-solid fa-toggle-off\"></i>\n Deactivate\n </button>\n }\n @if (UserCanDelete) {\n <button class=\"btn-bulk danger\" (click)=\"bulkDelete()\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </button>\n }\n </div>\n </div>\n }\n <!-- Grid View -->\n @if (viewMode === 'grid' && filteredCredentials.length > 0) {\n <div class=\"credentials-grid\">\n @for (credential of filteredCredentials; track credential) {\n <div\n class=\"credential-card\"\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n [class.expiring]=\"isExpiringSoon(credential)\"\n >\n <!-- Selection Checkbox -->\n @if (UserCanUpdate || UserCanDelete) {\n <div class=\"card-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </div>\n }\n <div class=\"card-header\">\n <div class=\"card-icon\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"card-title\">\n <div class=\"credential-name\">{{credential.Name}}</div>\n <div class=\"credential-type\">{{credential.CredentialType || 'Unknown Type'}}</div>\n </div>\n <div class=\"card-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\">\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </div>\n <div class=\"card-body\" (click)=\"editCredential(credential)\">\n <div class=\"status-badge\" [ngClass]=\"getStatusClass(credential)\">\n <i [class]=\"getStatusIcon(credential)\"></i>\n {{getStatusLabel(credential)}}\n </div>\n @if (credential.Description) {\n <p class=\"credential-description\">\n {{credential.Description}}\n </p>\n }\n <div class=\"credential-meta\">\n @if (credential.IsDefault) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-star\"></i>\n <span>Default</span>\n </div>\n }\n @if (credential.ExpiresAt) {\n <div class=\"meta-item\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n <i class=\"fa-solid fa-calendar\"></i>\n <span>{{isExpired(credential) ? 'Expired' : 'Expires'}}: {{formatDate(credential.ExpiresAt)}}</span>\n </div>\n }\n @if (credential.LastUsedAt) {\n <div class=\"meta-item\">\n <i class=\"fa-solid fa-clock\"></i>\n <span>Last used: {{formatDate(credential.LastUsedAt)}}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"card-footer\">\n @if (credential.Category) {\n <div class=\"category-tag\">\n <i class=\"fa-solid fa-folder\"></i>\n {{credential.Category}}\n </div>\n }\n <div class=\"created-info\">\n Created {{formatDate(credential.__mj_CreatedAt)}}\n </div>\n </div>\n </div>\n }\n </div>\n }\n <!-- List View -->\n @if (viewMode === 'list' && filteredCredentials.length > 0) {\n <div class=\"credentials-table-container\">\n <table class=\"credentials-table\">\n <thead>\n <tr>\n @if (UserCanUpdate || UserCanDelete) {\n <th class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"isAllSelected()\"\n (change)=\"toggleSelectAll()\"\n />\n </th>\n }\n <th class=\"col-name\">Name</th>\n <th class=\"col-type\">Type</th>\n <th class=\"col-category\">Category</th>\n <th class=\"col-status\">Status</th>\n <th class=\"col-expires\">Expires</th>\n <th class=\"col-used\">Last Used</th>\n <th class=\"col-actions\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (credential of filteredCredentials; track credential) {\n <tr\n [class.selected]=\"selectedCredentials.has(credential.ID)\"\n [class.expired]=\"isExpired(credential)\"\n >\n @if (UserCanUpdate || UserCanDelete) {\n <td class=\"col-select\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedCredentials.has(credential.ID)\"\n (change)=\"toggleSelection(credential)\"\n />\n </td>\n }\n <td class=\"col-name\" (click)=\"editCredential(credential)\">\n <div class=\"name-cell\">\n <i [class]=\"credential.IconClass || 'fa-solid fa-key'\" [ngClass]=\"getStatusClass(credential)\"></i>\n <div class=\"name-info\">\n <span class=\"credential-name\">{{credential.Name}}</span>\n @if (credential.Description) {\n <span class=\"credential-desc\">{{credential.Description}}</span>\n }\n </div>\n @if (credential.IsDefault) {\n <span class=\"default-badge\">Default</span>\n }\n </div>\n </td>\n <td class=\"col-type\">{{credential.CredentialType || '-'}}</td>\n <td class=\"col-category\">\n @if (credential.Category) {\n <span class=\"category-pill\">{{credential.Category}}</span>\n }\n @if (!credential.Category) {\n <span>-</span>\n }\n </td>\n <td class=\"col-status\">\n <span class=\"status-pill\" [ngClass]=\"getStatusClass(credential)\">\n {{getStatusLabel(credential)}}\n </span>\n </td>\n <td class=\"col-expires\" [class.warning]=\"isExpiringSoon(credential)\" [class.danger]=\"isExpired(credential)\">\n {{credential.ExpiresAt ? formatDate(credential.ExpiresAt) : 'Never'}}\n </td>\n <td class=\"col-used\">\n {{credential.LastUsedAt ? formatDate(credential.LastUsedAt) : 'Never'}}\n </td>\n <td class=\"col-actions\">\n <div class=\"table-actions\">\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"toggleCredentialActive(credential, $event)\"\n [title]=\"credential.IsActive ? 'Deactivate' : 'Activate'\"\n >\n <i [class]=\"credential.IsActive ? 'fa-solid fa-toggle-on' : 'fa-solid fa-toggle-off'\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button\n class=\"table-action-btn\"\n (click)=\"editCredential(credential, $event)\"\n title=\"Edit\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete) {\n <button\n class=\"table-action-btn danger\"\n (click)=\"deleteCredential(credential, $event)\"\n title=\"Delete\"\n >\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- Empty State -->\n @if (filteredCredentials.length === 0) {\n <mj-empty-state\n [Variant]=\"IsListNarrowed ? 'no-results' : 'empty'\"\n Icon=\"fa-solid fa-key\"\n Title=\"No Credentials Found\"\n [Message]=\"IsListNarrowed ? 'No credentials match your current filters.' : 'Get started by creating your first credential.'\"\n [ActionText]=\"IsListNarrowed ? 'Reset filters' : (UserCanCreate ? 'Create Credential' : '')\"\n [ActionIcon]=\"IsListNarrowed ? 'fa-solid fa-rotate-left' : 'fa-solid fa-plus'\"\n (Action)=\"onEmptyStateAction()\" />\n }\n }\n\n <!-- Edit Panel -->\n <mj-credential-edit-panel\n #editPanel\n [credentialTypes]=\"types\"\n (saved)=\"onCredentialSaved($event)\"\n (deleted)=\"onCredentialDeleted($event)\"\n ></mj-credential-edit-panel>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Pure helpers for the
|
|
2
|
+
* @fileoverview Pure helpers for the AI-agent integration of the Dashboards app's Library page.
|
|
3
3
|
*
|
|
4
4
|
* These functions are intentionally free of Angular / component dependencies so
|
|
5
5
|
* they can be unit-tested in isolation. The resource component
|
|
@@ -11,21 +11,7 @@
|
|
|
11
11
|
* 🔒 SAFETY: this module only *describes* state and validates input. It performs
|
|
12
12
|
* no mutation and has no side effects.
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
type BrowserMode = 'list' | 'view' | 'edit';
|
|
16
|
-
/**
|
|
17
|
-
* A single panel/widget on the currently-open dashboard, as surfaced to the
|
|
18
|
-
* agent. Purely descriptive — no entity references, no config payloads, just
|
|
19
|
-
* enough for the agent to reason about (and describe) what's on the dashboard.
|
|
20
|
-
*/
|
|
21
|
-
export interface OpenedDashboardPanelSummary {
|
|
22
|
-
/** The panel's display title (e.g. "Active Members"). */
|
|
23
|
-
Title: string;
|
|
24
|
-
/** The part-type name (e.g. "View", "Query", "WebURL", "Artifact"). */
|
|
25
|
-
PartTypeName: string;
|
|
26
|
-
/** Optional Font Awesome icon class for the panel, when one is set. */
|
|
27
|
-
Icon?: string;
|
|
28
|
-
}
|
|
14
|
+
import type { DashboardLibraryFilter } from './dashboard-library-filter';
|
|
29
15
|
/** The two record-view modes the browser list supports. */
|
|
30
16
|
declare const VALID_BROWSER_VIEW_MODES: readonly ["cards", "list"];
|
|
31
17
|
/** Narrowed union for the browser list's view mode. */
|
|
@@ -38,6 +24,8 @@ export type BrowserViewMode = (typeof VALID_BROWSER_VIEW_MODES)[number];
|
|
|
38
24
|
* used by the Data Explorer's agent context.
|
|
39
25
|
*/
|
|
40
26
|
export declare const AGENT_CONTEXT_NAME_LIST_CAP = 25;
|
|
27
|
+
/** How many recently opened dashboards the context names. */
|
|
28
|
+
export declare const RECENTLY_OPENED_NAME_CAP = 3;
|
|
41
29
|
/**
|
|
42
30
|
* Type-guard / validator for a browser view-mode string. Keeps the
|
|
43
31
|
* `SwitchViewMode` client tool tolerant of arbitrary agent input — only the two
|
|
@@ -54,15 +42,10 @@ export declare function isValidBrowserViewMode(mode: unknown): mode is BrowserVi
|
|
|
54
42
|
* Mirrors the salient slice of {@link DashboardBrowserResourceComponent}'s state.
|
|
55
43
|
*/
|
|
56
44
|
export interface DashboardBrowserAgentContextInput {
|
|
57
|
-
/** Current browser mode: list / view / edit. */
|
|
58
|
-
Mode: BrowserMode;
|
|
59
|
-
/** ID of the currently selected dashboard, or null at the list level. */
|
|
60
|
-
SelectedDashboardId: string | null;
|
|
61
|
-
/** Display name of the currently selected dashboard, or null. */
|
|
62
|
-
SelectedDashboardName: string | null;
|
|
63
45
|
/**
|
|
64
|
-
* Names of the dashboards currently visible in the list (after
|
|
65
|
-
* search narrowing) — the ones the agent can open by name
|
|
46
|
+
* Names of the dashboards currently visible in the list (after the Library
|
|
47
|
+
* filter and any agent search narrowing) — the ones the agent can open by name
|
|
48
|
+
* via OpenDashboard.
|
|
66
49
|
* The component supplies the full visible list; this helper bounds it — see
|
|
67
50
|
* {@link AGENT_CONTEXT_NAME_LIST_CAP}.
|
|
68
51
|
*/
|
|
@@ -76,6 +59,12 @@ export interface DashboardBrowserAgentContextInput {
|
|
|
76
59
|
* truncated.
|
|
77
60
|
*/
|
|
78
61
|
FilteredDashboardCount: number;
|
|
62
|
+
/** The active Library filter in the rail (all, mine, shared, favorites, recent). */
|
|
63
|
+
LibraryFilter: DashboardLibraryFilter;
|
|
64
|
+
/** How many dashboards each Library filter lists. */
|
|
65
|
+
LibraryCounts: Record<DashboardLibraryFilter, number>;
|
|
66
|
+
/** The Config dashboards the user opened last, the most recent first. */
|
|
67
|
+
RecentlyOpenedNames: string[];
|
|
79
68
|
/** The current free-text search applied to the dashboard list, or '' when none. */
|
|
80
69
|
SearchText: string;
|
|
81
70
|
/**
|
|
@@ -92,27 +81,9 @@ export interface DashboardBrowserAgentContextInput {
|
|
|
92
81
|
ViewMode: BrowserViewMode;
|
|
93
82
|
/** Whether the browser is currently loading data. */
|
|
94
83
|
IsLoading: boolean;
|
|
95
|
-
/**
|
|
96
|
-
* Name of the dashboard currently open in the view/edit pane, or null when
|
|
97
|
-
* at the list level. Distinct from {@link SelectedDashboardName} only in
|
|
98
|
-
* intent: this field is the explicit "a dashboard is OPEN" signal.
|
|
99
|
-
*/
|
|
100
|
-
OpenedDashboardName?: string | null;
|
|
101
|
-
/** ID of the dashboard currently open, or null at the list level. */
|
|
102
|
-
OpenedDashboardId?: string | null;
|
|
103
|
-
/** Whether the open dashboard is in edit mode (Mode === 'edit'). */
|
|
104
|
-
OpenedDashboardIsEditing?: boolean;
|
|
105
|
-
/** Whether the current user may edit the open dashboard (from permissions). */
|
|
106
|
-
OpenedDashboardCanEdit?: boolean;
|
|
107
|
-
/**
|
|
108
|
-
* The panels/widgets on the open dashboard. Empty array when none / not
|
|
109
|
-
* open. The component supplies the full list; this helper bounds it — see
|
|
110
|
-
* {@link AGENT_CONTEXT_NAME_LIST_CAP}.
|
|
111
|
-
*/
|
|
112
|
-
OpenedDashboardPanels?: OpenedDashboardPanelSummary[];
|
|
113
84
|
}
|
|
114
85
|
/**
|
|
115
|
-
* Build the agent-visible context object for the
|
|
86
|
+
* Build the agent-visible context object for the Library page.
|
|
116
87
|
*
|
|
117
88
|
* Keeping this a pure function (no `this`) makes the context shape unit-testable
|
|
118
89
|
* and decouples it from change-detection timing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-browser-agent-context.d.ts","sourceRoot":"","sources":["../../src/DashboardBrowser/dashboard-browser-agent-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"dashboard-browser-agent-context.d.ts","sourceRoot":"","sources":["../../src/DashboardBrowser/dashboard-browser-agent-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,2DAA2D;AAC3D,QAAA,MAAM,wBAAwB,4BAA6B,CAAC;AAE5D,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAa1C;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,eAAe,CAE7E;AAED,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,eAAe,CAE7E;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAiC;IAC9C;;;;;;OAMG;IACH,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,sEAAsE;IACtE,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oFAAoF;IACpF,aAAa,EAAE,sBAAsB,CAAC;IACtC,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACtD,yEAAyE;IACzE,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,oEAAoE;IACpE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,uEAAuE;IACvE,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,EAAE,eAAe,CAAC;IAC1B,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC7C,KAAK,EAAE,iCAAiC,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6BzB;AAED,iEAAiE;AACjE,wBAAgB,iCAAiC,CAC7C,KAAK,EAAE,iCAAiC,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB"}
|