@memberjunction/ng-dashboards 5.44.0 → 5.45.1

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.
Files changed (73) hide show
  1. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +1 -0
  2. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
  3. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +5 -3
  4. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  5. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +4 -2
  6. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  7. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +13 -11
  8. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  9. package/dist/AI/components/prompts/prompt-version-control.component.d.ts +3 -1
  10. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  11. package/dist/AI/components/prompts/prompt-version-control.component.js +12 -10
  12. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  13. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  14. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.js +10 -8
  16. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  17. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
  18. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  19. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +1 -1
  20. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  21. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +1 -0
  22. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  23. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +5 -3
  24. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  25. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +3 -1
  26. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  27. package/dist/Credentials/components/credentials-categories-resource.component.js +11 -5
  28. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  29. package/dist/Credentials/components/credentials-list-resource.component.d.ts +3 -2
  30. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  31. package/dist/Credentials/components/credentials-list-resource.component.js +23 -9
  32. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  33. package/dist/Credentials/components/credentials-types-resource.component.d.ts +3 -2
  34. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  35. package/dist/Credentials/components/credentials-types-resource.component.js +10 -4
  36. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  37. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +2 -1
  38. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -1
  39. package/dist/DatabaseDesigner/components/modify/database-modify.component.js +13 -6
  40. package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -1
  41. package/dist/FormBuilder/form-builder-resource.component.d.ts +2 -1
  42. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
  43. package/dist/FormBuilder/form-builder-resource.component.js +10 -8
  44. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
  45. package/dist/MCP/mcp-dashboard.component.d.ts +3 -1
  46. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  47. package/dist/MCP/mcp-dashboard.component.js +32 -14
  48. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  49. package/dist/QueryBrowser/query-browser-resource.component.d.ts +4 -2
  50. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  51. package/dist/QueryBrowser/query-browser-resource.component.js +15 -13
  52. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  53. package/dist/UserRoutines/user-routines-agent-context.d.ts +44 -0
  54. package/dist/UserRoutines/user-routines-agent-context.d.ts.map +1 -0
  55. package/dist/UserRoutines/user-routines-agent-context.js +81 -0
  56. package/dist/UserRoutines/user-routines-agent-context.js.map +1 -0
  57. package/dist/UserRoutines/user-routines-resource.component.d.ts +60 -0
  58. package/dist/UserRoutines/user-routines-resource.component.d.ts.map +1 -0
  59. package/dist/UserRoutines/user-routines-resource.component.js +328 -0
  60. package/dist/UserRoutines/user-routines-resource.component.js.map +1 -0
  61. package/dist/module.d.ts +16 -15
  62. package/dist/module.d.ts.map +1 -1
  63. package/dist/module.js +7 -0
  64. package/dist/module.js.map +1 -1
  65. package/dist/public-api.d.ts +2 -0
  66. package/dist/public-api.d.ts.map +1 -1
  67. package/dist/public-api.js +3 -0
  68. package/dist/public-api.js.map +1 -1
  69. package/dist/routines-dashboards.module.d.ts +17 -0
  70. package/dist/routines-dashboards.module.d.ts.map +1 -0
  71. package/dist/routines-dashboards.module.js +65 -0
  72. package/dist/routines-dashboards.module.js.map +1 -0
  73. package/package.json +63 -58
@@ -1 +1 @@
1
- {"version":3,"file":"credentials-types-resource.component.js","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-types-resource.component.ts","../../../src/Credentials/components/credentials-types-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\nimport { ResourceData, MJCredentialTypeEntity, MJCredentialEntity } from '@memberjunction/core-entities';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { CredentialTypeEditPanelComponent } from '@memberjunction/ng-credentials';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\ninterface FieldSchemaProperty {\n name: string;\n type: string;\n title: string;\n description: string;\n isSecret: boolean;\n required: boolean;\n}\n\ninterface TypeWithStats extends MJCredentialTypeEntity {\n credentialCount: number;\n activeCount: number;\n expiringCount: number;\n}\n\n@RegisterClass(BaseResourceComponent, 'CredentialsTypesResource')\n@Component({\n standalone: false,\n selector: 'mj-credentials-types-resource',\n templateUrl: './credentials-types-resource.component.html',\n styleUrls: ['./credentials-types-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CredentialsTypesResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public isLoading = true;\n public types: TypeWithStats[] = [];\n public filteredTypes: TypeWithStats[] = [];\n public credentials: MJCredentialEntity[] = [];\n public selectedType: TypeWithStats | null = null;\n public schemaProperties: FieldSchemaProperty[] = [];\n\n // Filters\n public searchText = '';\n public selectedCategoryFilter = '';\n public categories: string[] = [];\n\n // Permissions\n private _metadata = this.ProviderToUse;\n private _permissionCache = new Map<string, boolean>();\n\n @ViewChild('typeEditPanel') typeEditPanel!: CredentialTypeEditPanelComponent;\n\n public get FilterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'categoryFilter',\n type: 'dropdown',\n label: 'Category',\n icon: 'fa-solid fa-folder',\n placeholder: 'All Categories',\n filterable: true,\n options: [\n { text: 'All Categories', value: '' },\n ...this.categories.map(c => ({ text: c, value: c }))\n ]\n }\n ];\n }\n public get FilterValues(): Record<string, unknown> {\n return { categoryFilter: this.selectedCategoryFilter };\n }\n public get ActiveFilterCount(): number {\n return this.selectedCategoryFilter ? 1 : 0;\n }\n public onFilterValuesChange(v: Record<string, unknown>): void {\n const next = (v ?? {}) as { categoryFilter?: string };\n if ((next.categoryFilter ?? '') !== this.selectedCategoryFilter) {\n this.onCategoryFilterChange(next.categoryFilter ?? '');\n }\n }\n public resetFilters(): void {\n if (this.selectedCategoryFilter) this.onCategoryFilterChange('');\n }\n\n constructor(\n private cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // Cleanup if needed\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Credential Types';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-cubes';\n }\n\n // === Permission Checks ===\n\n public get UserCanCreate(): boolean {\n return this.checkEntityPermission('MJ: Credential Types', 'Create');\n }\n\n public get UserCanUpdate(): boolean {\n return this.checkEntityPermission('MJ: Credential Types', 'Update');\n }\n\n public get UserCanDelete(): boolean {\n return this.checkEntityPermission('MJ: Credential Types', 'Delete');\n }\n\n public get UserCanCreateCredential(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Create');\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 const [typeResult, credResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Credential Types',\n OrderBy: 'Category, Name',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: Credentials',\n ResultType: 'entity_object'\n }\n ]);\n\n if (typeResult.Success) {\n const baseTypes = typeResult.Results as MJCredentialTypeEntity[];\n this.credentials = credResult.Success ? credResult.Results as MJCredentialEntity[] : [];\n\n // Calculate stats for each type\n this.types = baseTypes.map(type => this.enrichTypeWithStats(type));\n\n // Extract unique categories\n this.categories = [...new Set(this.types.map(t => t.Category))].sort();\n }\n\n // Apply any navigation config (e.g., category filter from Categories nav item)\n this.handleNavigationConfig();\n\n this.applyFilters();\n\n } catch (error) {\n console.error('Error loading credential types:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error loading credential types', 'error', 3000);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n private handleNavigationConfig(): void {\n const config = this.Data?.Configuration;\n if (!config) {\n return;\n }\n\n // Apply category filter from navigation config\n if (config.categoryFilter) {\n this.selectedCategoryFilter = config.categoryFilter as string;\n }\n }\n\n private enrichTypeWithStats(type: MJCredentialTypeEntity): TypeWithStats {\n const typeCredentials = this.credentials.filter(c => UUIDsEqual(c.CredentialTypeID, type.ID));\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n\n // Add stats properties directly to the entity object\n const enrichedType = type as TypeWithStats;\n enrichedType.credentialCount = typeCredentials.length;\n enrichedType.activeCount = typeCredentials.filter(c => c.IsActive).length;\n enrichedType.expiringCount = typeCredentials.filter(c =>\n c.ExpiresAt &&\n new Date(c.ExpiresAt) >= now &&\n new Date(c.ExpiresAt) <= thirtyDaysFromNow\n ).length;\n\n return enrichedType;\n }\n\n // === CRUD Operations ===\n\n public createNewType(): void {\n if (this.typeEditPanel) {\n this.typeEditPanel.open(null);\n }\n }\n\n public editType(type: TypeWithStats, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.typeEditPanel) {\n this.typeEditPanel.open(type);\n }\n }\n\n public async deleteType(type: TypeWithStats, 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 credential types', 'warning', 3000);\n return;\n }\n\n if (type.credentialCount > 0) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Cannot delete \"${type.Name}\" - it has ${type.credentialCount} credential(s) using it`,\n 'warning',\n 4000\n );\n return;\n }\n\n const confirmed = confirm(`Are you sure you want to delete \"${type.Name}\"? This action cannot be undone.`);\n if (!confirmed) return;\n\n try {\n const success = await type.Delete();\n if (success) {\n MJNotificationService.Instance.CreateSimpleNotification(`Credential type \"${type.Name}\" deleted successfully`, 'success', 3000);\n this.types = this.types.filter(t => !UUIDsEqual(t.ID, type.ID));\n if (UUIDsEqual(this.selectedType?.ID, type.ID)) {\n this.closeDetail();\n }\n this.applyFilters();\n } else {\n MJNotificationService.Instance.CreateSimpleNotification('Failed to delete credential type', 'error', 3000);\n }\n } catch (error) {\n console.error('Error deleting credential type:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error deleting credential type', 'error', 3000);\n }\n }\n\n public createCredentialForType(type: TypeWithStats, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n // Navigate to Credentials nav item with the type pre-selected and create panel open\n this.navigationService.OpenNavItemByName('Credentials', {\n typeId: type.ID,\n openCreatePanel: true\n });\n }\n\n // === Panel Event Handlers ===\n\n public onTypeSaved(type: MJCredentialTypeEntity): void {\n const existingIndex = this.types.findIndex(t => UUIDsEqual(t.ID, type.ID));\n const enrichedType = this.enrichTypeWithStats(type);\n\n if (existingIndex >= 0) {\n this.types[existingIndex] = enrichedType;\n } else {\n this.types.unshift(enrichedType);\n }\n\n // Update categories if a new one was added\n if (!this.categories.includes(type.Category)) {\n this.categories = [...new Set(this.types.map(t => t.Category))].sort();\n }\n\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n public onTypeDeleted(typeId: string): void {\n this.types = this.types.filter(t => !UUIDsEqual(t.ID, typeId));\n if (UUIDsEqual(this.selectedType?.ID, typeId)) {\n this.closeDetail();\n }\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n // === Filtering ===\n\n public onSearchChange(value: string): void {\n this.searchText = value;\n this.applyFilters();\n }\n\n public onCategoryFilterChange(category: string): void {\n this.selectedCategoryFilter = category;\n this.applyFilters();\n }\n\n public clearFilters(): void {\n this.searchText = '';\n this.selectedCategoryFilter = '';\n this.applyFilters();\n }\n\n /** True when search and/or the category filter narrow the list. */\n public get IsListNarrowed(): boolean {\n return !!(this.searchText || this.selectedCategoryFilter);\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.createNewType();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.types];\n\n // Filter by category\n if (this.selectedCategoryFilter) {\n filtered = filtered.filter(t => t.Category === this.selectedCategoryFilter);\n }\n\n // Filter by search text\n if (this.searchText.trim()) {\n const search = this.searchText.toLowerCase().trim();\n filtered = filtered.filter(t =>\n t.Name.toLowerCase().includes(search) ||\n (t.Description && t.Description.toLowerCase().includes(search)) ||\n t.Category.toLowerCase().includes(search)\n );\n }\n\n this.filteredTypes = filtered;\n this.cdr.markForCheck();\n }\n\n // === Selection ===\n\n public selectType(type: TypeWithStats): void {\n this.selectedType = type;\n this.parseFieldSchema(type.FieldSchema);\n this.cdr.markForCheck();\n }\n\n public closeDetail(): void {\n this.selectedType = null;\n this.schemaProperties = [];\n this.cdr.markForCheck();\n }\n\n private parseFieldSchema(schemaJson: string): void {\n try {\n const schema = JSON.parse(schemaJson) as { properties?: Record<string, Record<string, unknown>>; required?: string[] };\n const properties = schema.properties || {};\n const required = schema.required || [];\n\n this.schemaProperties = Object.entries(properties).map(([name, prop]) => ({\n name,\n type: (prop.type as string) || 'string',\n title: (prop.title as string) || name,\n description: (prop.description as string) || '',\n isSecret: prop.isSecret === true,\n required: required.includes(name)\n }));\n\n // Sort by order if available, otherwise by name\n this.schemaProperties.sort((a, b) => {\n const propA = properties[a.name];\n const propB = properties[b.name];\n const orderA = typeof propA.order === 'number' ? propA.order : 999;\n const orderB = typeof propB.order === 'number' ? propB.order : 999;\n return orderA - orderB;\n });\n\n } catch (e) {\n console.error('Failed to parse field schema:', e);\n this.schemaProperties = [];\n }\n }\n\n // === Helpers ===\n\n public getCategoryIcon(category: string): string {\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[category] || 'fa-solid fa-key';\n }\n\n public getCategoryColor(category: string): string {\n const colorMap: Record<string, string> = {\n 'AI': 'var(--mj-brand-primary)',\n 'Communication': 'var(--mj-brand-primary)',\n 'Storage': 'var(--mj-brand-primary)',\n 'Database': 'var(--mj-status-warning)',\n 'Authentication': 'var(--mj-status-success)',\n 'Integration': 'var(--mj-brand-primary)'\n };\n return colorMap[category] || 'var(--mj-brand-primary)';\n }\n\n public getTypesByCategory(): Map<string, TypeWithStats[]> {\n const grouped = new Map<string, TypeWithStats[]>();\n for (const type of this.filteredTypes) {\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 /** Case-insensitive UUID check whether a credential type is the currently selected type. */\n public IsTypeSelected(type: TypeWithStats): boolean {\n return UUIDsEqual(this.selectedType?.ID, type.ID);\n }\n\n public getTotalCredentialCount(): number {\n return this.types.reduce((sum, t) => sum + t.credentialCount, 0);\n }\n\n public refresh(): void {\n this.loadData();\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Credential Types\"\n Icon=\"fa-solid fa-shapes\">\n <div meta>\n <!-- Result-count of the filtered Types list — passes the meta rule\n (filtered/total is signal about how the filter narrowed the data,\n not visible by glancing at the list). Cross-entity reference\n counts (categories, credentials) dropped per chrome slot\n discipline audit Task B — those belong on their own pages. -->\n <mj-stat-badge\n [Count]=\"filteredTypes.length\"\n [Total]=\"types.length\"\n Label=\"types\">\n </mj-stat-badge>\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)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"action-btn-label\">New Type</span>\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search types...\"\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 </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <mj-loading text=\"Loading credential types...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <div class=\"types-layout\">\n <!-- Types List -->\n <div class=\"types-list\">\n @for (entry of getTypesByCategory() | keyvalue; track entry) {\n <div class=\"category-section\">\n <div class=\"category-header\" [style.borderLeftColor]=\"getCategoryColor(entry.key)\">\n <i [class]=\"getCategoryIcon(entry.key)\" [style.color]=\"getCategoryColor(entry.key)\"></i>\n <span class=\"category-name\">{{entry.key}}</span>\n <span class=\"count\">{{entry.value.length}}</span>\n </div>\n <div class=\"type-items\">\n @for (type of entry.value; track type) {\n <div\n class=\"type-item\"\n [class.selected]=\"IsTypeSelected(type)\"\n (click)=\"selectType(type)\"\n >\n <div class=\"type-icon\" [style.backgroundColor]=\"getCategoryColor(type.Category) + '15'\" [style.color]=\"getCategoryColor(type.Category)\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-description\">\n {{type.Description | slice:0:60}}{{type.Description.length > 60 ? '...' : ''}}\n </div>\n }\n <div class=\"type-meta\">\n @if (type.credentialCount > 0) {\n <span class=\"meta-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{type.credentialCount}}\n </span>\n }\n @if (type.activeCount > 0) {\n <span class=\"meta-badge active\">\n <i class=\"fa-solid fa-check\"></i>\n {{type.activeCount}} active\n </span>\n }\n @if (type.expiringCount > 0) {\n <span class=\"meta-badge warning\">\n <i class=\"fa-solid fa-clock\"></i>\n {{type.expiringCount}} expiring\n </span>\n }\n </div>\n </div>\n <div class=\"type-actions\">\n @if (UserCanCreateCredential) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"createCredentialForType(type, $event)\"\n title=\"Add Credential\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editType(type, $event)\"\n title=\"Edit Type\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && type.credentialCount === 0) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteType(type, $event)\"\n title=\"Delete Type\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right arrow\"></i>\n </div>\n }\n </div>\n </div>\n }\n @if (filteredTypes.length === 0) {\n <mj-empty-state\n [Variant]=\"IsListNarrowed ? 'no-results' : 'empty'\"\n Icon=\"fa-solid fa-cubes\"\n Title=\"No Credential Types Found\"\n [Message]=\"IsListNarrowed ? 'No types match your current filters.' : 'Get started by creating your first credential type.'\"\n [ActionText]=\"IsListNarrowed ? 'Reset filters' : (UserCanCreate ? 'Create Type' : '')\"\n [ActionIcon]=\"IsListNarrowed ? 'fa-solid fa-rotate-left' : 'fa-solid fa-plus'\"\n (Action)=\"onEmptyStateAction()\" />\n }\n </div>\n <!-- Type Detail -->\n @if (selectedType) {\n <div class=\"type-detail\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '15'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"selectedType.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedType.Name}}</h2>\n <span class=\"category-badge\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '20'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"getCategoryIcon(selectedType.Category)\"></i>\n {{selectedType.Category}}\n </span>\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"editType(selectedType)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"closeDetail()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats Row -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedType.credentialCount}}</div>\n <div class=\"stat-label\">Credentials</div>\n </div>\n <div class=\"detail-stat active\">\n <div class=\"stat-value\">{{selectedType.activeCount}}</div>\n <div class=\"stat-label\">Active</div>\n </div>\n @if (selectedType.expiringCount > 0) {\n <div class=\"detail-stat warning\">\n <div class=\"stat-value\">{{selectedType.expiringCount}}</div>\n <div class=\"stat-label\">Expiring</div>\n </div>\n }\n </div>\n @if (selectedType.Description) {\n <p class=\"description\">\n {{selectedType.Description}}\n </p>\n }\n <div class=\"schema-section\">\n <h3>\n <i class=\"fa-solid fa-list-check\"></i>\n Field Schema\n </h3>\n @if (schemaProperties.length > 0) {\n <div class=\"field-list\">\n @for (prop of schemaProperties; track prop) {\n <div class=\"field-item\">\n <div class=\"field-header\">\n <span class=\"field-name\">{{prop.title}}</span>\n <span class=\"field-badges\">\n <span class=\"badge type\">{{prop.type}}</span>\n @if (prop.isSecret) {\n <span class=\"badge secret\">\n <i class=\"fa-solid fa-lock\"></i> Secret\n </span>\n }\n @if (prop.required) {\n <span class=\"badge required\">Required</span>\n }\n </span>\n </div>\n @if (prop.description) {\n <p class=\"field-description\">\n {{prop.description}}\n </p>\n }\n </div>\n }\n </div>\n }\n @if (schemaProperties.length === 0) {\n <div class=\"no-fields\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>No fields defined in schema</span>\n </div>\n }\n </div>\n @if (selectedType.ValidationEndpoint) {\n <div class=\"validation-section\">\n <h3>\n <i class=\"fa-solid fa-check-circle\"></i>\n Validation\n </h3>\n <div class=\"validation-endpoint\">\n <i class=\"fa-solid fa-link\"></i>\n <span>{{selectedType.ValidationEndpoint}}</span>\n </div>\n </div>\n }\n <!-- Quick Actions -->\n @if (UserCanCreateCredential) {\n <div class=\"detail-quick-actions\">\n <button class=\"btn-primary\" (click)=\"createCredentialForType(selectedType)\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n }\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedType && filteredTypes.length > 0) {\n <mj-empty-state Icon=\"fa-solid fa-hand-pointer\"\n Title=\"Select a Credential Type\"\n Message=\"Click on a credential type to view its details and field schema\" />\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Type Edit Panel -->\n <mj-credential-type-edit-panel\n #typeEditPanel\n (saved)=\"onTypeSaved($any($event))\"\n (deleted)=\"onTypeDeleted($any($event))\"\n ></mj-credential-type-edit-panel>\n</mj-page-layout>\n"]}
1
+ {"version":3,"file":"credentials-types-resource.component.js","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-types-resource.component.ts","../../../src/Credentials/components/credentials-types-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\nimport { ResourceData, MJCredentialTypeEntity, MJCredentialEntity } from '@memberjunction/core-entities';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { CredentialTypeEditPanelComponent } from '@memberjunction/ng-credentials';\nimport { FilterFieldConfig, MJConfirmService } from '@memberjunction/ng-ui-components';\ninterface FieldSchemaProperty {\n name: string;\n type: string;\n title: string;\n description: string;\n isSecret: boolean;\n required: boolean;\n}\n\ninterface TypeWithStats extends MJCredentialTypeEntity {\n credentialCount: number;\n activeCount: number;\n expiringCount: number;\n}\n\n@RegisterClass(BaseResourceComponent, 'CredentialsTypesResource')\n@Component({\n standalone: false,\n selector: 'mj-credentials-types-resource',\n templateUrl: './credentials-types-resource.component.html',\n styleUrls: ['./credentials-types-resource.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CredentialsTypesResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public isLoading = true;\n public types: TypeWithStats[] = [];\n public filteredTypes: TypeWithStats[] = [];\n public credentials: MJCredentialEntity[] = [];\n public selectedType: TypeWithStats | null = null;\n public schemaProperties: FieldSchemaProperty[] = [];\n\n // Filters\n public searchText = '';\n public selectedCategoryFilter = '';\n public categories: string[] = [];\n\n // Permissions\n private _metadata = this.ProviderToUse;\n private _permissionCache = new Map<string, boolean>();\n\n @ViewChild('typeEditPanel') typeEditPanel!: CredentialTypeEditPanelComponent;\n\n public get FilterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'categoryFilter',\n type: 'dropdown',\n label: 'Category',\n icon: 'fa-solid fa-folder',\n placeholder: 'All Categories',\n filterable: true,\n options: [\n { text: 'All Categories', value: '' },\n ...this.categories.map(c => ({ text: c, value: c }))\n ]\n }\n ];\n }\n public get FilterValues(): Record<string, unknown> {\n return { categoryFilter: this.selectedCategoryFilter };\n }\n public get ActiveFilterCount(): number {\n return this.selectedCategoryFilter ? 1 : 0;\n }\n public onFilterValuesChange(v: Record<string, unknown>): void {\n const next = (v ?? {}) as { categoryFilter?: string };\n if ((next.categoryFilter ?? '') !== this.selectedCategoryFilter) {\n this.onCategoryFilterChange(next.categoryFilter ?? '');\n }\n }\n public resetFilters(): void {\n if (this.selectedCategoryFilter) this.onCategoryFilterChange('');\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n private confirm: MJConfirmService) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.loadData();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n // Cleanup if needed\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Credential Types';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-cubes';\n }\n\n // === Permission Checks ===\n\n public get UserCanCreate(): boolean {\n return this.checkEntityPermission('MJ: Credential Types', 'Create');\n }\n\n public get UserCanUpdate(): boolean {\n return this.checkEntityPermission('MJ: Credential Types', 'Update');\n }\n\n public get UserCanDelete(): boolean {\n return this.checkEntityPermission('MJ: Credential Types', 'Delete');\n }\n\n public get UserCanCreateCredential(): boolean {\n return this.checkEntityPermission('MJ: Credentials', 'Create');\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 const [typeResult, credResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Credential Types',\n OrderBy: 'Category, Name',\n ResultType: 'entity_object'\n },\n {\n EntityName: 'MJ: Credentials',\n ResultType: 'entity_object'\n }\n ]);\n\n if (typeResult.Success) {\n const baseTypes = typeResult.Results as MJCredentialTypeEntity[];\n this.credentials = credResult.Success ? credResult.Results as MJCredentialEntity[] : [];\n\n // Calculate stats for each type\n this.types = baseTypes.map(type => this.enrichTypeWithStats(type));\n\n // Extract unique categories\n this.categories = [...new Set(this.types.map(t => t.Category))].sort();\n }\n\n // Apply any navigation config (e.g., category filter from Categories nav item)\n this.handleNavigationConfig();\n\n this.applyFilters();\n\n } catch (error) {\n console.error('Error loading credential types:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error loading credential types', 'error', 3000);\n } finally {\n this.isLoading = false;\n this.NotifyLoadComplete();\n this.cdr.markForCheck();\n }\n }\n\n private handleNavigationConfig(): void {\n const config = this.Data?.Configuration;\n if (!config) {\n return;\n }\n\n // Apply category filter from navigation config\n if (config.categoryFilter) {\n this.selectedCategoryFilter = config.categoryFilter as string;\n }\n }\n\n private enrichTypeWithStats(type: MJCredentialTypeEntity): TypeWithStats {\n const typeCredentials = this.credentials.filter(c => UUIDsEqual(c.CredentialTypeID, type.ID));\n const now = new Date();\n const thirtyDaysFromNow = new Date();\n thirtyDaysFromNow.setDate(thirtyDaysFromNow.getDate() + 30);\n\n // Add stats properties directly to the entity object\n const enrichedType = type as TypeWithStats;\n enrichedType.credentialCount = typeCredentials.length;\n enrichedType.activeCount = typeCredentials.filter(c => c.IsActive).length;\n enrichedType.expiringCount = typeCredentials.filter(c =>\n c.ExpiresAt &&\n new Date(c.ExpiresAt) >= now &&\n new Date(c.ExpiresAt) <= thirtyDaysFromNow\n ).length;\n\n return enrichedType;\n }\n\n // === CRUD Operations ===\n\n public createNewType(): void {\n if (this.typeEditPanel) {\n this.typeEditPanel.open(null);\n }\n }\n\n public editType(type: TypeWithStats, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.typeEditPanel) {\n this.typeEditPanel.open(type);\n }\n }\n\n public async deleteType(type: TypeWithStats, 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 credential types', 'warning', 3000);\n return;\n }\n\n if (type.credentialCount > 0) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Cannot delete \"${type.Name}\" - it has ${type.credentialCount} credential(s) using it`,\n 'warning',\n 4000\n );\n return;\n }\n\n const confirmed = await this.confirm.ConfirmDelete({\n title: 'Delete credential type',\n message: `Delete \"${type.Name}\"?`,\n detail: 'This action cannot be undone.',\n });\n if (!confirmed) return;\n\n try {\n const success = await type.Delete();\n if (success) {\n MJNotificationService.Instance.CreateSimpleNotification(`Credential type \"${type.Name}\" deleted successfully`, 'success', 3000);\n this.types = this.types.filter(t => !UUIDsEqual(t.ID, type.ID));\n if (UUIDsEqual(this.selectedType?.ID, type.ID)) {\n this.closeDetail();\n }\n this.applyFilters();\n } else {\n MJNotificationService.Instance.CreateSimpleNotification('Failed to delete credential type', 'error', 3000);\n }\n } catch (error) {\n console.error('Error deleting credential type:', error);\n MJNotificationService.Instance.CreateSimpleNotification('Error deleting credential type', 'error', 3000);\n }\n }\n\n public createCredentialForType(type: TypeWithStats, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n // Navigate to Credentials nav item with the type pre-selected and create panel open\n this.navigationService.OpenNavItemByName('Credentials', {\n typeId: type.ID,\n openCreatePanel: true\n });\n }\n\n // === Panel Event Handlers ===\n\n public onTypeSaved(type: MJCredentialTypeEntity): void {\n const existingIndex = this.types.findIndex(t => UUIDsEqual(t.ID, type.ID));\n const enrichedType = this.enrichTypeWithStats(type);\n\n if (existingIndex >= 0) {\n this.types[existingIndex] = enrichedType;\n } else {\n this.types.unshift(enrichedType);\n }\n\n // Update categories if a new one was added\n if (!this.categories.includes(type.Category)) {\n this.categories = [...new Set(this.types.map(t => t.Category))].sort();\n }\n\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n public onTypeDeleted(typeId: string): void {\n this.types = this.types.filter(t => !UUIDsEqual(t.ID, typeId));\n if (UUIDsEqual(this.selectedType?.ID, typeId)) {\n this.closeDetail();\n }\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n // === Filtering ===\n\n public onSearchChange(value: string): void {\n this.searchText = value;\n this.applyFilters();\n }\n\n public onCategoryFilterChange(category: string): void {\n this.selectedCategoryFilter = category;\n this.applyFilters();\n }\n\n public clearFilters(): void {\n this.searchText = '';\n this.selectedCategoryFilter = '';\n this.applyFilters();\n }\n\n /** True when search and/or the category filter narrow the list. */\n public get IsListNarrowed(): boolean {\n return !!(this.searchText || this.selectedCategoryFilter);\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.createNewType();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.types];\n\n // Filter by category\n if (this.selectedCategoryFilter) {\n filtered = filtered.filter(t => t.Category === this.selectedCategoryFilter);\n }\n\n // Filter by search text\n if (this.searchText.trim()) {\n const search = this.searchText.toLowerCase().trim();\n filtered = filtered.filter(t =>\n t.Name.toLowerCase().includes(search) ||\n (t.Description && t.Description.toLowerCase().includes(search)) ||\n t.Category.toLowerCase().includes(search)\n );\n }\n\n this.filteredTypes = filtered;\n this.cdr.markForCheck();\n }\n\n // === Selection ===\n\n public selectType(type: TypeWithStats): void {\n this.selectedType = type;\n this.parseFieldSchema(type.FieldSchema);\n this.cdr.markForCheck();\n }\n\n public closeDetail(): void {\n this.selectedType = null;\n this.schemaProperties = [];\n this.cdr.markForCheck();\n }\n\n private parseFieldSchema(schemaJson: string): void {\n try {\n const schema = JSON.parse(schemaJson) as { properties?: Record<string, Record<string, unknown>>; required?: string[] };\n const properties = schema.properties || {};\n const required = schema.required || [];\n\n this.schemaProperties = Object.entries(properties).map(([name, prop]) => ({\n name,\n type: (prop.type as string) || 'string',\n title: (prop.title as string) || name,\n description: (prop.description as string) || '',\n isSecret: prop.isSecret === true,\n required: required.includes(name)\n }));\n\n // Sort by order if available, otherwise by name\n this.schemaProperties.sort((a, b) => {\n const propA = properties[a.name];\n const propB = properties[b.name];\n const orderA = typeof propA.order === 'number' ? propA.order : 999;\n const orderB = typeof propB.order === 'number' ? propB.order : 999;\n return orderA - orderB;\n });\n\n } catch (e) {\n console.error('Failed to parse field schema:', e);\n this.schemaProperties = [];\n }\n }\n\n // === Helpers ===\n\n public getCategoryIcon(category: string): string {\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[category] || 'fa-solid fa-key';\n }\n\n public getCategoryColor(category: string): string {\n const colorMap: Record<string, string> = {\n 'AI': 'var(--mj-brand-primary)',\n 'Communication': 'var(--mj-brand-primary)',\n 'Storage': 'var(--mj-brand-primary)',\n 'Database': 'var(--mj-status-warning)',\n 'Authentication': 'var(--mj-status-success)',\n 'Integration': 'var(--mj-brand-primary)'\n };\n return colorMap[category] || 'var(--mj-brand-primary)';\n }\n\n public getTypesByCategory(): Map<string, TypeWithStats[]> {\n const grouped = new Map<string, TypeWithStats[]>();\n for (const type of this.filteredTypes) {\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 /** Case-insensitive UUID check whether a credential type is the currently selected type. */\n public IsTypeSelected(type: TypeWithStats): boolean {\n return UUIDsEqual(this.selectedType?.ID, type.ID);\n }\n\n public getTotalCredentialCount(): number {\n return this.types.reduce((sum, t) => sum + t.credentialCount, 0);\n }\n\n public refresh(): void {\n this.loadData();\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Credential Types\"\n Icon=\"fa-solid fa-shapes\">\n <div meta>\n <!-- Result-count of the filtered Types list — passes the meta rule\n (filtered/total is signal about how the filter narrowed the data,\n not visible by glancing at the list). Cross-entity reference\n counts (categories, credentials) dropped per chrome slot\n discipline audit Task B — those belong on their own pages. -->\n <mj-stat-badge\n [Count]=\"filteredTypes.length\"\n [Total]=\"types.length\"\n Label=\"types\">\n </mj-stat-badge>\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)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"action-btn-label\">New Type</span>\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search types...\"\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 </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <mj-loading text=\"Loading credential types...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <div class=\"types-layout\">\n <!-- Types List -->\n <div class=\"types-list\">\n @for (entry of getTypesByCategory() | keyvalue; track entry) {\n <div class=\"category-section\">\n <div class=\"category-header\" [style.borderLeftColor]=\"getCategoryColor(entry.key)\">\n <i [class]=\"getCategoryIcon(entry.key)\" [style.color]=\"getCategoryColor(entry.key)\"></i>\n <span class=\"category-name\">{{entry.key}}</span>\n <span class=\"count\">{{entry.value.length}}</span>\n </div>\n <div class=\"type-items\">\n @for (type of entry.value; track type) {\n <div\n class=\"type-item\"\n [class.selected]=\"IsTypeSelected(type)\"\n (click)=\"selectType(type)\"\n >\n <div class=\"type-icon\" [style.backgroundColor]=\"getCategoryColor(type.Category) + '15'\" [style.color]=\"getCategoryColor(type.Category)\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-description\">\n {{type.Description | slice:0:60}}{{type.Description.length > 60 ? '...' : ''}}\n </div>\n }\n <div class=\"type-meta\">\n @if (type.credentialCount > 0) {\n <span class=\"meta-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{type.credentialCount}}\n </span>\n }\n @if (type.activeCount > 0) {\n <span class=\"meta-badge active\">\n <i class=\"fa-solid fa-check\"></i>\n {{type.activeCount}} active\n </span>\n }\n @if (type.expiringCount > 0) {\n <span class=\"meta-badge warning\">\n <i class=\"fa-solid fa-clock\"></i>\n {{type.expiringCount}} expiring\n </span>\n }\n </div>\n </div>\n <div class=\"type-actions\">\n @if (UserCanCreateCredential) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"createCredentialForType(type, $event)\"\n title=\"Add Credential\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editType(type, $event)\"\n title=\"Edit Type\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && type.credentialCount === 0) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteType(type, $event)\"\n title=\"Delete Type\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right arrow\"></i>\n </div>\n }\n </div>\n </div>\n }\n @if (filteredTypes.length === 0) {\n <mj-empty-state\n [Variant]=\"IsListNarrowed ? 'no-results' : 'empty'\"\n Icon=\"fa-solid fa-cubes\"\n Title=\"No Credential Types Found\"\n [Message]=\"IsListNarrowed ? 'No types match your current filters.' : 'Get started by creating your first credential type.'\"\n [ActionText]=\"IsListNarrowed ? 'Reset filters' : (UserCanCreate ? 'Create Type' : '')\"\n [ActionIcon]=\"IsListNarrowed ? 'fa-solid fa-rotate-left' : 'fa-solid fa-plus'\"\n (Action)=\"onEmptyStateAction()\" />\n }\n </div>\n <!-- Type Detail -->\n @if (selectedType) {\n <div class=\"type-detail\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '15'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"selectedType.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedType.Name}}</h2>\n <span class=\"category-badge\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '20'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"getCategoryIcon(selectedType.Category)\"></i>\n {{selectedType.Category}}\n </span>\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"editType(selectedType)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"closeDetail()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats Row -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedType.credentialCount}}</div>\n <div class=\"stat-label\">Credentials</div>\n </div>\n <div class=\"detail-stat active\">\n <div class=\"stat-value\">{{selectedType.activeCount}}</div>\n <div class=\"stat-label\">Active</div>\n </div>\n @if (selectedType.expiringCount > 0) {\n <div class=\"detail-stat warning\">\n <div class=\"stat-value\">{{selectedType.expiringCount}}</div>\n <div class=\"stat-label\">Expiring</div>\n </div>\n }\n </div>\n @if (selectedType.Description) {\n <p class=\"description\">\n {{selectedType.Description}}\n </p>\n }\n <div class=\"schema-section\">\n <h3>\n <i class=\"fa-solid fa-list-check\"></i>\n Field Schema\n </h3>\n @if (schemaProperties.length > 0) {\n <div class=\"field-list\">\n @for (prop of schemaProperties; track prop) {\n <div class=\"field-item\">\n <div class=\"field-header\">\n <span class=\"field-name\">{{prop.title}}</span>\n <span class=\"field-badges\">\n <span class=\"badge type\">{{prop.type}}</span>\n @if (prop.isSecret) {\n <span class=\"badge secret\">\n <i class=\"fa-solid fa-lock\"></i> Secret\n </span>\n }\n @if (prop.required) {\n <span class=\"badge required\">Required</span>\n }\n </span>\n </div>\n @if (prop.description) {\n <p class=\"field-description\">\n {{prop.description}}\n </p>\n }\n </div>\n }\n </div>\n }\n @if (schemaProperties.length === 0) {\n <div class=\"no-fields\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>No fields defined in schema</span>\n </div>\n }\n </div>\n @if (selectedType.ValidationEndpoint) {\n <div class=\"validation-section\">\n <h3>\n <i class=\"fa-solid fa-check-circle\"></i>\n Validation\n </h3>\n <div class=\"validation-endpoint\">\n <i class=\"fa-solid fa-link\"></i>\n <span>{{selectedType.ValidationEndpoint}}</span>\n </div>\n </div>\n }\n <!-- Quick Actions -->\n @if (UserCanCreateCredential) {\n <div class=\"detail-quick-actions\">\n <button class=\"btn-primary\" (click)=\"createCredentialForType(selectedType)\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n }\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedType && filteredTypes.length > 0) {\n <mj-empty-state Icon=\"fa-solid fa-hand-pointer\"\n Title=\"Select a Credential Type\"\n Message=\"Click on a credential type to view its details and field schema\" />\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Type Edit Panel -->\n <mj-credential-type-edit-panel\n #typeEditPanel\n (saved)=\"onTypeSaved($any($event))\"\n (deleted)=\"onTypeDeleted($any($event))\"\n ></mj-credential-type-edit-panel>\n</mj-page-layout>\n"]}
@@ -17,6 +17,7 @@ import * as i0 from "@angular/core";
17
17
  type ModifyTab = 'fields' | 'review' | 'apply';
18
18
  export declare class DatabaseModifyComponent implements OnInit, OnDestroy {
19
19
  private readonly cdr;
20
+ private readonly confirmService;
20
21
  set EntityId(v: string);
21
22
  get EntityId(): string;
22
23
  private _entityId;
@@ -39,7 +40,7 @@ export declare class DatabaseModifyComponent implements OnInit, OnDestroy {
39
40
  OnApplyChanges(): void;
40
41
  OnPipelineCompleted(result: EntityPipelineResult): void;
41
42
  OnPipelineErrored(_msg: string): void;
42
- OnCancel(): void;
43
+ OnCancel(): Promise<void>;
43
44
  get CurrentTableSpec(): EntityTableSpec | null;
44
45
  get ExistingColumns(): ColumnSpec[];
45
46
  private loadEntityDetail;
@@ -1 +1 @@
1
- {"version":3,"file":"database-modify.component.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/modify/database-modify.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACuB,YAAY,EAAE,MAAM,EAAE,SAAS,EAE5D,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;;AAElI,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/C,qBAOa,uBAAwB,YAAW,MAAM,EAAE,SAAS;IAI7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IAIjD,IAAoB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAKrC;IACD,IAAW,QAAQ,IAAI,MAAM,CAA2B;IACxD,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAA0B,cAAc,qCAA4C;IACpF,SAA0B,SAAS,qBAA4B;IAIxD,SAAS,EAAE,SAAS,CAAY;IAChC,SAAS,UAAS;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAE1D,kFAAkF;IAC3E,aAAa,EAAE,UAAU,EAAE,CAAM;IAEjC,iBAAiB,UAAS;IAC1B,eAAe,UAAS;IAG/B,OAAO,CAAC,aAAa,CAAC,CAA+B;IAI/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,WAAW,IAAI,IAAI;IAMZ,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAS5B,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAQ7C,cAAc,IAAI,IAAI;IAOtB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAOvD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,QAAQ,IAAI,IAAI;IAevB,IAAW,gBAAgB,IAAI,eAAe,GAAG,IAAI,CASpD;IAED,IAAW,eAAe,IAAI,UAAU,EAAE,CAEzC;YAIa,gBAAgB;IAoB9B,yEAAyE;IACzE,OAAO,CAAC,UAAU;yCA3IT,uBAAuB;2CAAvB,uBAAuB;CAyJnC"}
1
+ {"version":3,"file":"database-modify.component.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/modify/database-modify.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACuB,YAAY,EAAE,MAAM,EAAE,SAAS,EAE5D,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;;AAElI,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/C,qBAOa,uBAAwB,YAAW,MAAM,EAAE,SAAS;IAI7D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAI3D,IAAoB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAKrC;IACD,IAAW,QAAQ,IAAI,MAAM,CAA2B;IACxD,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,YAAY,CAAS;IAE7B,SAA0B,cAAc,qCAA4C;IACpF,SAA0B,SAAS,qBAA4B;IAIxD,SAAS,EAAE,SAAS,CAAY;IAChC,SAAS,UAAS;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAE1D,kFAAkF;IAC3E,aAAa,EAAE,UAAU,EAAE,CAAM;IAEjC,iBAAiB,UAAS;IAC1B,eAAe,UAAS;IAG/B,OAAO,CAAC,aAAa,CAAC,CAA+B;IAI/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,WAAW,IAAI,IAAI;IAMZ,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAS5B,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAQ7C,cAAc,IAAI,IAAI;IAOtB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAOvD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtC,IAAW,gBAAgB,IAAI,eAAe,GAAG,IAAI,CASpD;IAED,IAAW,eAAe,IAAI,UAAU,EAAE,CAEzC;YAIa,gBAAgB;IAoB9B,yEAAyE;IACzE,OAAO,CAAC,UAAU;yCA/IT,uBAAuB;2CAAvB,uBAAuB;CA6JnC"}
@@ -12,6 +12,7 @@
12
12
  * The pipeline panel then calls `DatabaseDesignerService.modifyEntity()`.
13
13
  */
14
14
  import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, inject, ViewChild, } from '@angular/core';
15
+ import { MJConfirmService } from '@memberjunction/ng-ui-components';
15
16
  import { DatabaseDesignerEngine } from '../../services/database-designer.engine.js';
16
17
  import { EntityPipelinePanelComponent } from '../shared/entity-pipeline-panel.component.js';
17
18
  import * as i0 from "@angular/core";
@@ -157,6 +158,7 @@ function DatabaseModifyComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
157
158
  export class DatabaseModifyComponent {
158
159
  // ─── Injected ──────────────────────────────────────────────────────────
159
160
  cdr = inject(ChangeDetectorRef);
161
+ confirmService = inject(MJConfirmService);
160
162
  // ─── Inputs / Outputs ──────────────────────────────────────────────────
161
163
  set EntityId(v) {
162
164
  if (v && v !== this._entityId) {
@@ -220,12 +222,17 @@ export class DatabaseModifyComponent {
220
222
  this.IsPipelineRunning = false;
221
223
  this.cdr.markForCheck();
222
224
  }
223
- OnCancel() {
225
+ async OnCancel() {
224
226
  if (this.IsPipelineRunning) {
225
- // Use native confirm so the guard stays synchronous required by MjSlidePanelComponent.CanClose.
226
- // The pipeline continues on the server regardless; we're only hiding the progress UI.
227
- const confirmed = window.confirm('A pipeline operation is in progress. Closing will hide the progress panel ' +
228
- 'but the operation will continue running on the server.\n\nAre you sure?');
227
+ // This is a plain button handler (fire-and-forget click), so it can await the
228
+ // styled confirm. Only the dashboard's [CanClose] guard must stay on the
229
+ // synchronous window.confirm. The pipeline continues on the server regardless;
230
+ // we're only hiding the progress UI.
231
+ const confirmed = await this.confirmService.Confirm({
232
+ title: 'Pipeline in progress',
233
+ message: 'A pipeline operation is in progress. Closing will hide the progress panel.',
234
+ detail: 'The operation will continue running on the server.',
235
+ });
229
236
  if (!confirmed)
230
237
  return;
231
238
  }
@@ -315,5 +322,5 @@ export class DatabaseModifyComponent {
315
322
  type: ViewChild,
316
323
  args: [EntityPipelinePanelComponent]
317
324
  }] }); })();
318
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DatabaseModifyComponent, { className: "DatabaseModifyComponent", filePath: "src/DatabaseDesigner/components/modify/database-modify.component.ts", lineNumber: 33 }); })();
325
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DatabaseModifyComponent, { className: "DatabaseModifyComponent", filePath: "src/DatabaseDesigner/components/modify/database-modify.component.ts", lineNumber: 34 }); })();
319
326
  //# sourceMappingURL=database-modify.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-modify.component.js","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/modify/database-modify.component.ts","../../../../src/DatabaseDesigner/components/modify/database-modify.component.html"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACH,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EACtC,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,GAChE,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC;;;;;;;;;;;IChBxF,8BAA4B;IAC1B,gCAAwD;IAC1D,iBAAM;;;IAKN,mCAA+C;IAAA,YAAe;IAAA,iBAAW;;;IAA1B,cAAe;IAAf,sCAAe;;;;IAmDxD,AADF,AADF,+BAA0C,cACjB,qCAMmB;IAAtC,AADA,6OAAa,kCAA2B,KAAC,4NAC9B,gCAAyB,KAAC;IAG3C,AADE,AADE,iBAA6B,EACzB,EACF;;;IAPA,eAAoC;IAEpC,AAFA,yDAAoC,qCAEP;;;;IAe3B,mDAG8C;IAA5C,kQAAkB,+BAAwB,KAAC;IAC7C,iBAA0B;;;IAHxB,8CAAyB;;;IAO3B,+CAI2B;;;IADzB,AAFA,yDAAoC,2CAED;;;IAdzC,AADF,AAFF,oCAAqE,wBAEzB,cACf;IAEvB,2IAA8B;IAQ9B,4IAA8B;IASlC,AADE,iBAAM,EACQ;IAEhB,yCAA0C;IACxC,+CAI2B;IAG/B,AAFE,iBAAgB,EAEP;;;IA9BM,cAAW;IAAC,AAAZ,yBAAW,eAAe;IAGrC,eAMC;IAND,wDAMC;IAED,cAMC;IAND,wDAMC;IAKU,cAAW;IAAC,AAAZ,yBAAW,eAAe;IAGrC,cAA0C;IAC1C,AADA,uFAA0C,iBAC1B;;;IAWM,uBAAM;;;IAAU,wBAAO;;;;IAGjD,kCAI6B;IAA3B,2MAAS,uBAAgB,KAAC;IAC1B,wBAAyC;IACzC,+BACF;IAAA,iBAAS;;;IAJP,8EAAkD;;;;IArGtD,AADF,8BAA2B,aACA;IACvB,uBAA6C;IAC7C,+BAA0B;IAAA,YAA6B;IAAA,iBAAO;IAC9D,+BAA0B;IAAA,YAA0D;IAExF,AADE,AADsF,iBAAO,EACvF,EACF;IAIJ,AADF,8BAAoC,iBAML;IAA3B,2LAAS,cAAO,QAAQ,CAAC,KAAC;IAC1B,wBAAsC;IACtC,yBACF;IAAA,iBAAS;IACT,mCAK6B;IAA3B,4LAAS,cAAO,QAAQ,CAAC,KAAC;IAC1B,yBAA4C;IAC5C,iCACF;IAAA,iBAAS;IACT,mCAM4B;IAA1B,4LAAS,cAAO,OAAO,CAAC,KAAC;IACzB,yBAAyC;IACzC,gCACF;IACF,AADE,iBAAS,EACL;IAiBJ,AAdF,0GAA6B,yFAcpB;IAwCP,AADF,gCAA2B,kBACqC;IAArB,4LAAS,iBAAU,KAAC;IACzB,AAAlC,+FAAyB,yEAAgB;IAC3C,iBAAS;IACT,6GAA6B;IAU/B,iBAAM;;;IAzGwB,eAA6B;IAA7B,oDAA6B;IAC7B,eAA0D;IAA1D,6FAA0D;IASpF,eAAuC;IAAvC,uDAAuC;;IASvC,eAAuC;IAAvC,uDAAuC;;IASvC,eAAsC;IACtC,AADA,sDAAsC,mBACd;;IAS5B,eAkDC;IAlDD,wDAkDC;IAKG,eAAkD;IAAlD,oDAAkD;IAEpD,eASC;IATD,wDASC;;AD5FP,MAAM,OAAO,uBAAuB;IAEhC,0EAA0E;IAEzD,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEjD,0EAA0E;IAE1E,IAAoB,QAAQ,CAAC,CAAS;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnD,CAAC;IACL,CAAC;IACD,IAAW,QAAQ,KAAa,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,SAAS,GAAG,EAAE,CAAC;IACf,YAAY,GAAG,KAAK,CAAC;IAEH,cAAc,GAAG,IAAI,YAAY,EAAwB,CAAC;IAC1D,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE/D,0EAA0E;IAEnE,SAAS,GAAc,QAAQ,CAAC;IAChC,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAkB,IAAI,CAAC;IAChC,YAAY,GAAkC,IAAI,CAAC;IAE1D,kFAAkF;IAC3E,aAAa,GAAiB,EAAE,CAAC;IAEjC,iBAAiB,GAAG,KAAK,CAAC;IAC1B,eAAe,GAAG,KAAK,CAAC;IAGvB,aAAa,CAAgC;IAErD,0EAA0E;IAE1E,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAClC,CAAC;IAED,WAAW;QACP,gEAAgE;IACpE,CAAC;IAED,0EAA0E;IAEnE,MAAM,CAAC,GAAc;QACxB,oEAAoE;QACpE,IAAI,IAAI,CAAC,iBAAiB,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO;QACtD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,0EAA0E;IAEnE,gBAAgB,CAAC,OAAqB;QACzC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,0EAA0E;IAEnE,cAAc;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QACxD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,mBAAmB,CAAC,MAA4B;QACnD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,sBAAsB,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,iBAAiB,CAAC,IAAY;QACjC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,QAAQ;QACX,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,kGAAkG;YAClG,sFAAsF;YACtF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAC5B,4EAA4E;gBAC5E,yEAAyE,CAC5E,CAAC;YACF,IAAI,CAAC,SAAS;gBAAE,OAAO;QAC3B,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,0EAA0E;IAE1E,IAAW,gBAAgB;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO;YACH,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;YACxC,SAAS,EAAG,IAAI,CAAC,YAAY,CAAC,SAAS;YACvC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;YACxC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;YAC1C,OAAO,EAAE,IAAI,CAAC,aAAa;SAC9B,CAAC;IACN,CAAC;IAED,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,0EAA0E;IAElE,KAAK,CAAC,gBAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAExB,IAAI,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3F,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,yEAAyE;IACjE,UAAU;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC/D,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACtC,GAAG,CAAC,IAAI,KAAa,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI;YACtC,GAAG,CAAC,IAAI,KAAa,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI;YACtC,GAAG,CAAC,UAAU,KAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU;YAC5C,GAAG,CAAC,SAAS,KAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS;YAC3C,GAAG,CAAC,SAAS,KAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS;YAC3C,GAAG,CAAC,KAAK,KAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK;YACvC,GAAG,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY;YAC9C,GAAG,CAAC,WAAW,KAAM,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,CAChD,CAAC;IACN,CAAC;iHAxJQ,uBAAuB;6DAAvB,uBAAuB;2BAkCrB,4BAA4B;;;;;YClE3C,8BAAyB;YAGvB,yFAAiB;YAOjB,8FAAiB;YAKjB,iFAAgD;YAiHlD,iBAAM;;YA7HJ,cAIC;YAJD,wCAIC;YAGD,cAEC;YAFD,wCAEC;YAGD,cA+GC;YA/GD,+EA+GC;;;iFD9FU,uBAAuB;cAPnC,SAAS;6BACM,KAAK,YACP,oBAAoB,mBAGb,uBAAuB,CAAC,MAAM;;kBAU9C,KAAK;;kBAUL,MAAM;;kBACN,MAAM;;kBAeN,SAAS;mBAAC,4BAA4B;;kFAlC9B,uBAAuB","sourcesContent":["/**\n * @module database-modify.component\n * @description Slide-over view for modifying an existing Database Designer entity.\n *\n * Rendered inside an `mj-slide-panel` by the dashboard when the user clicks Edit.\n * Presents three tabs:\n * 1. Fields — EntityFieldsGridComponent in modify mode (existing + new columns)\n * 2. Review — EntityReviewPanelComponent showing diff (new cols highlighted)\n * 3. Apply — EntityPipelinePanelComponent for running the alter pipeline\n *\n * On tab 3 (\"Apply\"), clicking \"Apply Changes\" calls `pipelinePanel.StartExecution()`.\n * The pipeline panel then calls `DatabaseDesignerService.modifyEntity()`.\n */\n\nimport {\n Component, Input, Output, EventEmitter, OnInit, OnDestroy,\n ChangeDetectionStrategy, ChangeDetectorRef, inject, ViewChild,\n} from '@angular/core';\nimport { DatabaseDesignerService } from '../../services/database-designer.service.js';\nimport { DatabaseDesignerEngine } from '../../services/database-designer.engine.js';\nimport { EntityPipelinePanelComponent } from '../shared/entity-pipeline-panel.component.js';\nimport type { AccessibleEntityDetail, ColumnSpec, EntityTableSpec, EntityPipelineResult } from '../../database-designer.types.js';\n\ntype ModifyTab = 'fields' | 'review' | 'apply';\n\n@Component({\n standalone: false,\n selector: 'mj-database-modify',\n templateUrl: './database-modify.component.html',\n styleUrls: ['./database-modify.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatabaseModifyComponent implements OnInit, OnDestroy {\n\n // ─── Injected ──────────────────────────────────────────────────────────\n\n private readonly cdr = inject(ChangeDetectorRef);\n\n // ─── Inputs / Outputs ──────────────────────────────────────────────────\n\n @Input() public set EntityId(v: string) {\n if (v && v !== this._entityId) {\n this._entityId = v;\n if (this._initialized) this.loadEntityDetail();\n }\n }\n public get EntityId(): string { return this._entityId; }\n private _entityId = '';\n private _initialized = false;\n\n @Output() public readonly EntityModified = new EventEmitter<EntityPipelineResult>();\n @Output() public readonly Cancelled = new EventEmitter<void>();\n\n // ─── View state ────────────────────────────────────────────────────────\n\n public ActiveTab: ModifyTab = 'fields';\n public IsLoading = false;\n public LoadError: string | null = null;\n public EntityDetail: AccessibleEntityDetail | null = null;\n\n /** Columns being edited — starts from existing entity fields + user additions. */\n public EditedColumns: ColumnSpec[] = [];\n\n public IsPipelineRunning = false;\n public CanApplyChanges = false;\n\n @ViewChild(EntityPipelinePanelComponent)\n private pipelinePanel?: EntityPipelinePanelComponent;\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────\n\n async ngOnInit(): Promise<void> {\n this._initialized = true;\n await this.loadEntityDetail();\n }\n\n ngOnDestroy(): void {\n // Cleanup not needed — no subscriptions beyond the load promise\n }\n\n // ─── Tab navigation ────────────────────────────────────────────────────\n\n public SetTab(tab: ModifyTab): void {\n // Don't allow switching away from 'apply' once pipeline has started\n if (this.IsPipelineRunning && tab !== 'apply') return;\n this.ActiveTab = tab;\n this.cdr.markForCheck();\n }\n\n // ─── Column change handler ─────────────────────────────────────────────\n\n public OnColumnsChanged(columns: ColumnSpec[]): void {\n this.EditedColumns = columns;\n this.CanApplyChanges = this.hasChanges();\n this.cdr.markForCheck();\n }\n\n // ─── Apply / Pipeline ──────────────────────────────────────────────────\n\n public OnApplyChanges(): void {\n if (!this.EntityDetail || !this.CanApplyChanges) return;\n this.IsPipelineRunning = true;\n this.SetTab('apply');\n setTimeout(() => this.pipelinePanel?.StartExecution(), 0);\n }\n\n public OnPipelineCompleted(result: EntityPipelineResult): void {\n this.IsPipelineRunning = false;\n DatabaseDesignerEngine.Instance.invalidateCache();\n this.EntityModified.emit(result);\n this.cdr.markForCheck();\n }\n\n public OnPipelineErrored(_msg: string): void {\n this.IsPipelineRunning = false;\n this.cdr.markForCheck();\n }\n\n public OnCancel(): void {\n if (this.IsPipelineRunning) {\n // Use native confirm so the guard stays synchronous — required by MjSlidePanelComponent.CanClose.\n // The pipeline continues on the server regardless; we're only hiding the progress UI.\n const confirmed = window.confirm(\n 'A pipeline operation is in progress. Closing will hide the progress panel ' +\n 'but the operation will continue running on the server.\\n\\nAre you sure?'\n );\n if (!confirmed) return;\n }\n this.Cancelled.emit();\n }\n\n // ─── Template helpers ──────────────────────────────────────────────────\n\n public get CurrentTableSpec(): EntityTableSpec | null {\n if (!this.EntityDetail) return null;\n return {\n EntityName: this.EntityDetail.entityName,\n TableName: this.EntityDetail.tableName,\n SchemaName: this.EntityDetail.schemaName,\n Description: this.EntityDetail.description,\n Columns: this.EditedColumns,\n };\n }\n\n public get ExistingColumns(): ColumnSpec[] {\n return this.EntityDetail?.columns ?? [];\n }\n\n // ─── Private helpers ───────────────────────────────────────────────────\n\n private async loadEntityDetail(): Promise<void> {\n if (!this._entityId) return;\n\n this.IsLoading = true;\n this.LoadError = null;\n this.cdr.markForCheck();\n\n try {\n this.EntityDetail = await DatabaseDesignerEngine.Instance.loadEntityDetail(this._entityId);\n if (this.EntityDetail) {\n this.EditedColumns = [...this.EntityDetail.columns];\n }\n } catch (err) {\n this.LoadError = err instanceof Error ? err.message : String(err);\n } finally {\n this.IsLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n /** True if the user added new columns or changed any existing column. */\n private hasChanges(): boolean {\n const original = this.EntityDetail?.columns ?? [];\n if (this.EditedColumns.length !== original.length) return true;\n return this.EditedColumns.some((col, i) =>\n col.Name !== original[i]?.Name ||\n col.Type !== original[i]?.Type ||\n col.IsNullable !== original[i]?.IsNullable ||\n col.MaxLength !== original[i]?.MaxLength ||\n col.Precision !== original[i]?.Precision ||\n col.Scale !== original[i]?.Scale ||\n col.DefaultValue !== original[i]?.DefaultValue ||\n col.Description !== original[i]?.Description\n );\n }\n}\n","<div class=\"modify-root\">\n\n <!-- ── Loading ───────────────────────────────────────────────────────── -->\n @if (IsLoading) {\n <div class=\"modify-loading\">\n <mj-loading text=\"Loading entity details…\"></mj-loading>\n </div>\n }\n\n <!-- ── Error ─────────────────────────────────────────────────────────── -->\n @if (LoadError) {\n <mj-alert Variant=\"error\" class=\"modify-error\">{{ LoadError }}</mj-alert>\n }\n\n <!-- ── Main view ─────────────────────────────────────────────────────── -->\n @if (!IsLoading && !LoadError && EntityDetail) {\n <!-- Entity header -->\n <div class=\"modify-header\">\n <div class=\"entity-info\">\n <i class=\"fa-solid fa-table-cells-large\"></i>\n <span class=\"entity-name\">{{ EntityDetail.entityName }}</span>\n <span class=\"schema-path\">{{ EntityDetail.schemaName }}.{{ EntityDetail.tableName }}</span>\n </div>\n </div>\n\n <!-- Tab bar -->\n <div class=\"tab-bar\" role=\"tablist\">\n <button\n role=\"tab\"\n class=\"tab-btn\"\n [class.active]=\"ActiveTab === 'fields'\"\n [attr.aria-selected]=\"ActiveTab === 'fields'\"\n (click)=\"SetTab('fields')\">\n <i class=\"fa-solid fa-table-list\"></i>\n Fields\n </button>\n <button\n role=\"tab\"\n class=\"tab-btn\"\n [class.active]=\"ActiveTab === 'review'\"\n [attr.aria-selected]=\"ActiveTab === 'review'\"\n (click)=\"SetTab('review')\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Review Changes\n </button>\n <button\n role=\"tab\"\n class=\"tab-btn\"\n [class.active]=\"ActiveTab === 'apply'\"\n [class.tab-apply]=\"true\"\n [attr.aria-selected]=\"ActiveTab === 'apply'\"\n (click)=\"SetTab('apply')\">\n <i class=\"fa-solid fa-rocket-launch\"></i>\n Apply Changes\n </button>\n </div>\n\n <!-- Tab content: Fields + Review get a live preview pane on the right; Apply takes full width -->\n @if (ActiveTab === 'apply') {\n\n <div class=\"tab-content tab-content-full\">\n <div class=\"apply-tab\">\n <mj-database-pipeline-panel\n [TableDefinition]=\"CurrentTableSpec\"\n ModificationType=\"alter\"\n [ExistingEntityId]=\"EntityId\"\n (Completed)=\"OnPipelineCompleted($event)\"\n (Errored)=\"OnPipelineErrored($event)\">\n </mj-database-pipeline-panel>\n </div>\n </div>\n\n } @else {\n\n <as-split direction=\"horizontal\" class=\"modify-split\" gutterSize=\"6\">\n\n <as-split-area [size]=\"55\" [minSize]=\"40\">\n <div class=\"tab-content\">\n\n @if (ActiveTab === 'fields') {\n <mj-database-fields-grid\n [Columns]=\"EditedColumns\"\n Mode=\"modify\"\n (ColumnsChanged)=\"OnColumnsChanged($event)\">\n </mj-database-fields-grid>\n }\n\n @if (ActiveTab === 'review') {\n <mj-database-review-panel\n [TableDefinition]=\"CurrentTableSpec\"\n ModificationType=\"alter\"\n [ExistingColumns]=\"ExistingColumns\">\n </mj-database-review-panel>\n }\n\n </div>\n </as-split-area>\n\n <as-split-area [size]=\"45\" [minSize]=\"25\">\n <mj-database-preview-pane\n class=\"modify-preview\"\n [TableDefinition]=\"CurrentTableSpec ?? {}\"\n [IsAlter]=\"true\">\n </mj-database-preview-pane>\n </as-split-area>\n\n </as-split>\n\n }\n\n <!-- Footer -->\n <div class=\"modify-footer\">\n <button mjButton buttonStyle=\"secondary\" (click)=\"OnCancel()\">\n @if (IsPipelineRunning) { Close } @else { Cancel }\n </button>\n @if (ActiveTab !== 'apply') {\n <button\n mjButton\n buttonStyle=\"primary\"\n [disabled]=\"!CanApplyChanges || IsPipelineRunning\"\n (click)=\"OnApplyChanges()\">\n <i class=\"fa-solid fa-rocket-launch\"></i>\n Apply Changes\n </button>\n }\n </div>\n }\n\n</div>\n"]}
1
+ {"version":3,"file":"database-modify.component.js","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/modify/database-modify.component.ts","../../../../src/DatabaseDesigner/components/modify/database-modify.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @module database-modify.component\n * @description Slide-over view for modifying an existing Database Designer entity.\n *\n * Rendered inside an `mj-slide-panel` by the dashboard when the user clicks Edit.\n * Presents three tabs:\n * 1. Fields — EntityFieldsGridComponent in modify mode (existing + new columns)\n * 2. Review — EntityReviewPanelComponent showing diff (new cols highlighted)\n * 3. Apply — EntityPipelinePanelComponent for running the alter pipeline\n *\n * On tab 3 (\"Apply\"), clicking \"Apply Changes\" calls `pipelinePanel.StartExecution()`.\n * The pipeline panel then calls `DatabaseDesignerService.modifyEntity()`.\n */\n\nimport {\n Component, Input, Output, EventEmitter, OnInit, OnDestroy,\n ChangeDetectionStrategy, ChangeDetectorRef, inject, ViewChild,\n} from '@angular/core';\nimport { MJConfirmService } from '@memberjunction/ng-ui-components';\nimport { DatabaseDesignerService } from '../../services/database-designer.service.js';\nimport { DatabaseDesignerEngine } from '../../services/database-designer.engine.js';\nimport { EntityPipelinePanelComponent } from '../shared/entity-pipeline-panel.component.js';\nimport type { AccessibleEntityDetail, ColumnSpec, EntityTableSpec, EntityPipelineResult } from '../../database-designer.types.js';\n\ntype ModifyTab = 'fields' | 'review' | 'apply';\n\n@Component({\n standalone: false,\n selector: 'mj-database-modify',\n templateUrl: './database-modify.component.html',\n styleUrls: ['./database-modify.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatabaseModifyComponent implements OnInit, OnDestroy {\n\n // ─── Injected ──────────────────────────────────────────────────────────\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly confirmService = inject(MJConfirmService);\n\n // ─── Inputs / Outputs ──────────────────────────────────────────────────\n\n @Input() public set EntityId(v: string) {\n if (v && v !== this._entityId) {\n this._entityId = v;\n if (this._initialized) this.loadEntityDetail();\n }\n }\n public get EntityId(): string { return this._entityId; }\n private _entityId = '';\n private _initialized = false;\n\n @Output() public readonly EntityModified = new EventEmitter<EntityPipelineResult>();\n @Output() public readonly Cancelled = new EventEmitter<void>();\n\n // ─── View state ────────────────────────────────────────────────────────\n\n public ActiveTab: ModifyTab = 'fields';\n public IsLoading = false;\n public LoadError: string | null = null;\n public EntityDetail: AccessibleEntityDetail | null = null;\n\n /** Columns being edited — starts from existing entity fields + user additions. */\n public EditedColumns: ColumnSpec[] = [];\n\n public IsPipelineRunning = false;\n public CanApplyChanges = false;\n\n @ViewChild(EntityPipelinePanelComponent)\n private pipelinePanel?: EntityPipelinePanelComponent;\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────\n\n async ngOnInit(): Promise<void> {\n this._initialized = true;\n await this.loadEntityDetail();\n }\n\n ngOnDestroy(): void {\n // Cleanup not needed — no subscriptions beyond the load promise\n }\n\n // ─── Tab navigation ────────────────────────────────────────────────────\n\n public SetTab(tab: ModifyTab): void {\n // Don't allow switching away from 'apply' once pipeline has started\n if (this.IsPipelineRunning && tab !== 'apply') return;\n this.ActiveTab = tab;\n this.cdr.markForCheck();\n }\n\n // ─── Column change handler ─────────────────────────────────────────────\n\n public OnColumnsChanged(columns: ColumnSpec[]): void {\n this.EditedColumns = columns;\n this.CanApplyChanges = this.hasChanges();\n this.cdr.markForCheck();\n }\n\n // ─── Apply / Pipeline ──────────────────────────────────────────────────\n\n public OnApplyChanges(): void {\n if (!this.EntityDetail || !this.CanApplyChanges) return;\n this.IsPipelineRunning = true;\n this.SetTab('apply');\n setTimeout(() => this.pipelinePanel?.StartExecution(), 0);\n }\n\n public OnPipelineCompleted(result: EntityPipelineResult): void {\n this.IsPipelineRunning = false;\n DatabaseDesignerEngine.Instance.invalidateCache();\n this.EntityModified.emit(result);\n this.cdr.markForCheck();\n }\n\n public OnPipelineErrored(_msg: string): void {\n this.IsPipelineRunning = false;\n this.cdr.markForCheck();\n }\n\n public async OnCancel(): Promise<void> {\n if (this.IsPipelineRunning) {\n // This is a plain button handler (fire-and-forget click), so it can await the\n // styled confirm. Only the dashboard's [CanClose] guard must stay on the\n // synchronous window.confirm. The pipeline continues on the server regardless;\n // we're only hiding the progress UI.\n const confirmed = await this.confirmService.Confirm({\n title: 'Pipeline in progress',\n message: 'A pipeline operation is in progress. Closing will hide the progress panel.',\n detail: 'The operation will continue running on the server.',\n });\n if (!confirmed) return;\n }\n this.Cancelled.emit();\n }\n\n // ─── Template helpers ──────────────────────────────────────────────────\n\n public get CurrentTableSpec(): EntityTableSpec | null {\n if (!this.EntityDetail) return null;\n return {\n EntityName: this.EntityDetail.entityName,\n TableName: this.EntityDetail.tableName,\n SchemaName: this.EntityDetail.schemaName,\n Description: this.EntityDetail.description,\n Columns: this.EditedColumns,\n };\n }\n\n public get ExistingColumns(): ColumnSpec[] {\n return this.EntityDetail?.columns ?? [];\n }\n\n // ─── Private helpers ───────────────────────────────────────────────────\n\n private async loadEntityDetail(): Promise<void> {\n if (!this._entityId) return;\n\n this.IsLoading = true;\n this.LoadError = null;\n this.cdr.markForCheck();\n\n try {\n this.EntityDetail = await DatabaseDesignerEngine.Instance.loadEntityDetail(this._entityId);\n if (this.EntityDetail) {\n this.EditedColumns = [...this.EntityDetail.columns];\n }\n } catch (err) {\n this.LoadError = err instanceof Error ? err.message : String(err);\n } finally {\n this.IsLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n /** True if the user added new columns or changed any existing column. */\n private hasChanges(): boolean {\n const original = this.EntityDetail?.columns ?? [];\n if (this.EditedColumns.length !== original.length) return true;\n return this.EditedColumns.some((col, i) =>\n col.Name !== original[i]?.Name ||\n col.Type !== original[i]?.Type ||\n col.IsNullable !== original[i]?.IsNullable ||\n col.MaxLength !== original[i]?.MaxLength ||\n col.Precision !== original[i]?.Precision ||\n col.Scale !== original[i]?.Scale ||\n col.DefaultValue !== original[i]?.DefaultValue ||\n col.Description !== original[i]?.Description\n );\n }\n}\n","<div class=\"modify-root\">\n\n <!-- ── Loading ───────────────────────────────────────────────────────── -->\n @if (IsLoading) {\n <div class=\"modify-loading\">\n <mj-loading text=\"Loading entity details…\"></mj-loading>\n </div>\n }\n\n <!-- ── Error ─────────────────────────────────────────────────────────── -->\n @if (LoadError) {\n <mj-alert Variant=\"error\" class=\"modify-error\">{{ LoadError }}</mj-alert>\n }\n\n <!-- ── Main view ─────────────────────────────────────────────────────── -->\n @if (!IsLoading && !LoadError && EntityDetail) {\n <!-- Entity header -->\n <div class=\"modify-header\">\n <div class=\"entity-info\">\n <i class=\"fa-solid fa-table-cells-large\"></i>\n <span class=\"entity-name\">{{ EntityDetail.entityName }}</span>\n <span class=\"schema-path\">{{ EntityDetail.schemaName }}.{{ EntityDetail.tableName }}</span>\n </div>\n </div>\n\n <!-- Tab bar -->\n <div class=\"tab-bar\" role=\"tablist\">\n <button\n role=\"tab\"\n class=\"tab-btn\"\n [class.active]=\"ActiveTab === 'fields'\"\n [attr.aria-selected]=\"ActiveTab === 'fields'\"\n (click)=\"SetTab('fields')\">\n <i class=\"fa-solid fa-table-list\"></i>\n Fields\n </button>\n <button\n role=\"tab\"\n class=\"tab-btn\"\n [class.active]=\"ActiveTab === 'review'\"\n [attr.aria-selected]=\"ActiveTab === 'review'\"\n (click)=\"SetTab('review')\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n Review Changes\n </button>\n <button\n role=\"tab\"\n class=\"tab-btn\"\n [class.active]=\"ActiveTab === 'apply'\"\n [class.tab-apply]=\"true\"\n [attr.aria-selected]=\"ActiveTab === 'apply'\"\n (click)=\"SetTab('apply')\">\n <i class=\"fa-solid fa-rocket-launch\"></i>\n Apply Changes\n </button>\n </div>\n\n <!-- Tab content: Fields + Review get a live preview pane on the right; Apply takes full width -->\n @if (ActiveTab === 'apply') {\n\n <div class=\"tab-content tab-content-full\">\n <div class=\"apply-tab\">\n <mj-database-pipeline-panel\n [TableDefinition]=\"CurrentTableSpec\"\n ModificationType=\"alter\"\n [ExistingEntityId]=\"EntityId\"\n (Completed)=\"OnPipelineCompleted($event)\"\n (Errored)=\"OnPipelineErrored($event)\">\n </mj-database-pipeline-panel>\n </div>\n </div>\n\n } @else {\n\n <as-split direction=\"horizontal\" class=\"modify-split\" gutterSize=\"6\">\n\n <as-split-area [size]=\"55\" [minSize]=\"40\">\n <div class=\"tab-content\">\n\n @if (ActiveTab === 'fields') {\n <mj-database-fields-grid\n [Columns]=\"EditedColumns\"\n Mode=\"modify\"\n (ColumnsChanged)=\"OnColumnsChanged($event)\">\n </mj-database-fields-grid>\n }\n\n @if (ActiveTab === 'review') {\n <mj-database-review-panel\n [TableDefinition]=\"CurrentTableSpec\"\n ModificationType=\"alter\"\n [ExistingColumns]=\"ExistingColumns\">\n </mj-database-review-panel>\n }\n\n </div>\n </as-split-area>\n\n <as-split-area [size]=\"45\" [minSize]=\"25\">\n <mj-database-preview-pane\n class=\"modify-preview\"\n [TableDefinition]=\"CurrentTableSpec ?? {}\"\n [IsAlter]=\"true\">\n </mj-database-preview-pane>\n </as-split-area>\n\n </as-split>\n\n }\n\n <!-- Footer -->\n <div class=\"modify-footer\">\n <button mjButton buttonStyle=\"secondary\" (click)=\"OnCancel()\">\n @if (IsPipelineRunning) { Close } @else { Cancel }\n </button>\n @if (ActiveTab !== 'apply') {\n <button\n mjButton\n buttonStyle=\"primary\"\n [disabled]=\"!CanApplyChanges || IsPipelineRunning\"\n (click)=\"OnApplyChanges()\">\n <i class=\"fa-solid fa-rocket-launch\"></i>\n Apply Changes\n </button>\n }\n </div>\n }\n\n</div>\n"]}
@@ -376,6 +376,7 @@ export declare class FormBuilderResourceComponent extends BaseResourceComponent
376
376
  private readonly notifications;
377
377
  private readonly overrideService;
378
378
  private readonly conversationBridge;
379
+ private readonly confirmService;
379
380
  /**
380
381
  * Name of the Application this cockpit lives in — must match the
381
382
  * `Application.Name` column. "Form Studio" is the nav-item LABEL
@@ -831,7 +832,7 @@ export declare class FormBuilderResourceComponent extends BaseResourceComponent
831
832
  */
832
833
  OnOverrideStatusPicked(next: 'Active' | 'Inactive' | 'Pending'): Promise<void>;
833
834
  private lookupEntityForComponent;
834
- OnNewForm(): void;
835
+ OnNewForm(): Promise<void>;
835
836
  private confirmDiscard;
836
837
  /**
837
838
  * Best-effort parse of the `Specification` JSON column on MJ: Components.
@@ -1 +1 @@
1
- {"version":3,"file":"form-builder-resource.component.d.ts","sourceRoot":"","sources":["../../src/FormBuilder/form-builder-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-builder-resource.component.d.ts","sourceRoot":"","sources":["../../src/FormBuilder/form-builder-resource.component.ts"],"names":[],"mappings":"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"}