@memberjunction/ng-explorer-settings 5.35.0 → 5.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/dist/lib/application-management/application-management.component.d.ts +0 -1
  2. package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
  3. package/dist/lib/application-management/application-management.component.js +151 -206
  4. package/dist/lib/application-management/application-management.component.js.map +1 -1
  5. package/dist/lib/entity-permissions/entity-permissions.component.d.ts +8 -3
  6. package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
  7. package/dist/lib/entity-permissions/entity-permissions.component.js +247 -411
  8. package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
  9. package/dist/lib/module.d.ts +1 -1
  10. package/dist/lib/module.d.ts.map +1 -1
  11. package/dist/lib/module.js +31 -4
  12. package/dist/lib/module.js.map +1 -1
  13. package/dist/lib/role-management/role-management.component.d.ts +0 -2
  14. package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
  15. package/dist/lib/role-management/role-management.component.js +136 -259
  16. package/dist/lib/role-management/role-management.component.js.map +1 -1
  17. package/dist/lib/sql-logging/sql-logging.component.js +221 -224
  18. package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
  19. package/dist/lib/user-management/user-management.component.d.ts +12 -3
  20. package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
  21. package/dist/lib/user-management/user-management.component.js +356 -463
  22. package/dist/lib/user-management/user-management.component.js.map +1 -1
  23. package/package.json +19 -19
@@ -1 +1 @@
1
- {"version":3,"file":"entity-permissions.component.js","sourceRoot":"","sources":["../../../src/lib/entity-permissions/entity-permissions.component.ts","../../../src/lib/entity-permissions/entity-permissions.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnDestroy, ChangeDetectorRef, NgZone } from '@angular/core';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport {\n MJEntityPermissionEntity,\n MJEntityEntity,\n MJRoleEntity,\n ResourceData\n} from '@memberjunction/core-entities';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { PermissionDialogData, PermissionDialogResult } from './permission-dialog/permission-dialog.component';\n\ninterface PermissionsStats {\n totalEntities: number;\n publicEntities: number;\n restrictedEntities: number;\n totalPermissions: number;\n}\n\ninterface FilterOptions {\n entitySearch: string;\n accessLevel: 'all' | 'public' | 'restricted' | 'custom';\n roleId: string | null;\n}\n\ninterface EntityAccess {\n entity: MJEntityEntity;\n isPublic: boolean;\n permissions: MJEntityPermissionEntity[];\n rolePermissions: Map<string, PermissionLevel>;\n}\n\ninterface PermissionLevel {\n canCreate: boolean;\n canRead: boolean;\n canUpdate: boolean;\n canDelete: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-entity-permissions',\n templateUrl: './entity-permissions.component.html',\n styleUrls: ['../shared/styles/_admin-patterns.css', './entity-permissions.component.css']\n})\n@RegisterClass(BaseDashboard, 'EntityPermissions')\nexport class EntityPermissionsComponent extends BaseDashboard implements OnDestroy {\n // State management\n public entityAccess: EntityAccess[] = [];\n public filteredEntityAccess: EntityAccess[] = [];\n public roles: MJRoleEntity[] = [];\n public isLoading = false;\n public error: string | null = null;\n \n // Permission dialog state\n public showPermissionDialog = false;\n public permissionDialogData: PermissionDialogData | null = null;\n \n // Stats\n public stats: PermissionsStats = {\n totalEntities: 0,\n publicEntities: 0,\n restrictedEntities: 0,\n totalPermissions: 0\n };\n \n // Filters\n public filters$ = new BehaviorSubject<FilterOptions>({\n entitySearch: '',\n accessLevel: 'all',\n roleId: null\n });\n \n // UI State\n public expandedEntityId: string | null = null;\n public viewMode: 'grid' | 'list' = 'list';\n public showMobileFilters = false;\n\n protected override destroy$ = new Subject<void>();\n private get metadata() { return this.ProviderToUse; }\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) {\n super();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return \"Permissions\"\n }\n\n protected initDashboard(): void {\n this.setupFilterSubscription();\n }\n\n protected loadData(): void {\n this.loadInitialData();\n }\n\n override ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n super.ngOnDestroy();\n }\n \n public async loadInitialData(): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n \n // Load all required data in parallel\n const [entities, permissions, roles] = await Promise.all([\n this.loadEntities(),\n this.loadEntityPermissions(),\n this.loadRoles()\n ]);\n \n // Process the data\n this.roles = roles;\n this.processEntityAccess(entities, permissions);\n this.calculateStats();\n this.applyFilters();\n \n } catch (error) {\n console.error('Error loading permissions data:', error);\n this.error = 'Failed to load permissions data. Please try again.';\n } finally {\n this.ngZone.run(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n private async loadEntities(): Promise<MJEntityEntity[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJEntityEntity>({\n EntityName: 'MJ: Entities',\n ResultType: 'entity_object',\n OrderBy: 'Name ASC'\n });\n \n return result.Success ? result.Results : [];\n }\n \n private async loadEntityPermissions(): Promise<MJEntityPermissionEntity[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJEntityPermissionEntity>({\n EntityName: 'MJ: Entity Permissions',\n ResultType: 'entity_object',\n OrderBy: 'EntityID, RoleID'\n });\n \n return result.Success ? result.Results : [];\n }\n \n private async loadRoles(): Promise<MJRoleEntity[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n ResultType: 'entity_object',\n OrderBy: 'Name ASC'\n });\n \n return result.Success ? result.Results : [];\n }\n \n private processEntityAccess(entities: MJEntityEntity[], permissions: MJEntityPermissionEntity[]): void {\n // Group permissions by entity\n const permissionsByEntity = new Map<string, MJEntityPermissionEntity[]>();\n \n for (const permission of permissions) {\n const entityId = permission.EntityID;\n if (!permissionsByEntity.has(entityId)) {\n permissionsByEntity.set(entityId, []);\n }\n permissionsByEntity.get(entityId)!.push(permission);\n }\n \n // Create EntityAccess objects\n this.entityAccess = entities.map(entity => {\n const entityPermissions = permissionsByEntity.get(entity.ID) || [];\n const rolePermissions = new Map<string, PermissionLevel>();\n \n // Process permissions by role\n for (const permission of entityPermissions) {\n if (permission.RoleID) {\n rolePermissions.set(permission.RoleID, {\n canCreate: permission.CanCreate || false,\n canRead: permission.CanRead || false,\n canUpdate: permission.CanUpdate || false,\n canDelete: permission.CanDelete || false\n });\n }\n }\n \n return {\n entity,\n isPublic: entity.AllowAllRowsAPI || false,\n permissions: entityPermissions,\n rolePermissions\n };\n });\n }\n \n private setupFilterSubscription(): void {\n this.filters$\n .pipe(\n debounceTime(300),\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.applyFilters();\n });\n }\n \n private applyFilters(): void {\n const filters = this.filters$.value;\n let filtered = [...this.entityAccess];\n \n // Apply entity search\n if (filters.entitySearch) {\n const searchLower = filters.entitySearch.toLowerCase();\n filtered = filtered.filter(ea =>\n ea.entity.Name?.toLowerCase().includes(searchLower) ||\n ea.entity.Description?.toLowerCase().includes(searchLower)\n );\n }\n \n // Apply access level filter\n switch (filters.accessLevel) {\n case 'public':\n filtered = filtered.filter(ea => ea.isPublic);\n break;\n case 'restricted':\n filtered = filtered.filter(ea => !ea.isPublic && ea.permissions.length === 0);\n break;\n case 'custom':\n filtered = filtered.filter(ea => !ea.isPublic && ea.permissions.length > 0);\n break;\n }\n \n // Apply role filter\n if (filters.roleId) {\n filtered = filtered.filter(ea => \n ea.rolePermissions.has(filters.roleId!)\n );\n }\n \n this.filteredEntityAccess = filtered;\n }\n \n private calculateStats(): void {\n const publicEntities = this.entityAccess.filter(ea => ea.isPublic).length;\n const customPermissions = this.entityAccess.filter(ea => !ea.isPublic && ea.permissions.length > 0).length;\n const totalPermissions = this.entityAccess.reduce((sum, ea) => sum + ea.permissions.length, 0);\n \n this.stats = {\n totalEntities: this.entityAccess.length,\n publicEntities,\n restrictedEntities: this.entityAccess.length - publicEntities - customPermissions,\n totalPermissions\n };\n }\n \n // Public methods for template\n public onSearchChange(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.updateFilter({ entitySearch: value });\n }\n \n public onAccessLevelChange(level: 'all' | 'public' | 'restricted' | 'custom'): void {\n this.updateFilter({ accessLevel: level });\n }\n \n public onRoleFilterChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n this.updateFilter({ roleId: value || null });\n }\n \n public updateFilter(partial: Partial<FilterOptions>): void {\n this.filters$.next({\n ...this.filters$.value,\n ...partial\n });\n }\n \n public toggleEntityExpansion(entityId: string): void {\n this.expandedEntityId = this.expandedEntityId === entityId ? null : entityId;\n }\n \n public isEntityExpanded(entityId: string): boolean {\n return this.expandedEntityId === entityId;\n }\n \n public editEntityPermissions(entityAccess: EntityAccess): void {\n console.log('Opening permission dialog for entity:', entityAccess.entity.Name);\n console.log('Entity permissions:', entityAccess.permissions);\n console.log('Available roles:', this.roles);\n \n this.permissionDialogData = {\n entity: entityAccess.entity,\n roles: this.roles,\n existingPermissions: entityAccess.permissions\n };\n this.showPermissionDialog = true;\n \n console.log('Dialog data set:', this.permissionDialogData);\n console.log('Dialog visible:', this.showPermissionDialog);\n }\n \n public onPermissionDialogResult(result: PermissionDialogResult): void {\n this.showPermissionDialog = false;\n this.permissionDialogData = null;\n\n if (result.action === 'save') {\n // Refresh the data after save\n this.loadInitialData();\n }\n }\n \n public async savePermissions(): Promise<void> {\n // This method is now handled by the dialog component\n // Keeping for backwards compatibility but not used\n console.warn('savePermissions method is deprecated - use PermissionDialogComponent instead');\n }\n \n public getAccessLevelClass(entityAccess: EntityAccess): string {\n if (entityAccess.isPublic) {\n return 'access-public';\n } else if (entityAccess.permissions.length === 0) {\n return 'access-restricted';\n } else {\n return 'access-custom';\n }\n }\n \n public getAccessLevelLabel(entityAccess: EntityAccess): string {\n if (entityAccess.isPublic) {\n return 'Public';\n } else if (entityAccess.permissions.length === 0) {\n return 'Restricted';\n } else {\n return 'Custom';\n }\n }\n \n public getRoleName(roleId: string): string {\n const role = this.roles.find(r => UUIDsEqual(r.ID, roleId));\n return role?.Name || 'Unknown Role';\n }\n \n public hasPermission(entityAccess: EntityAccess, roleId: string, permission: keyof PermissionLevel): boolean {\n const rolePermission = entityAccess.rolePermissions.get(roleId);\n return rolePermission ? rolePermission[permission] : false;\n }\n \n public refreshData(): void {\n this.loadInitialData();\n }\n \n public setViewMode(mode: 'grid' | 'list'): void {\n this.viewMode = mode;\n }\n}","<div class=\"entity-permissions-container\">\n <!-- Sticky Header Section - Contains controls that should always be visible -->\n <div class=\"sticky-header\">\n <!-- Action Buttons -->\n <div class=\"action-buttons\" role=\"toolbar\" aria-label=\"Entity permissions actions\">\n <div class=\"mj-view-toggle\">\n <button mjButton\n [variant]=\"viewMode === 'list' ? 'primary' : 'flat'\"\n (click)=\"setViewMode('list')\"\n (keydown.enter)=\"setViewMode('list')\"\n (keydown.space)=\"setViewMode('list'); $event.preventDefault()\"\n [attr.aria-label]=\"'List view' + (viewMode === 'list' ? ' (active)' : '')\"\n [attr.aria-pressed]=\"viewMode === 'list'\"\n role=\"button\"\n tabindex=\"0\"\n title=\"List View\"\n >\n <i class=\"fa-solid fa-list\" aria-hidden=\"true\"></i>\n </button>\n <button mjButton\n [variant]=\"viewMode === 'grid' ? 'primary' : 'flat'\"\n (click)=\"setViewMode('grid')\"\n (keydown.enter)=\"setViewMode('grid')\"\n (keydown.space)=\"setViewMode('grid'); $event.preventDefault()\"\n [attr.aria-label]=\"'Grid view' + (viewMode === 'grid' ? ' (active)' : '')\"\n [attr.aria-pressed]=\"viewMode === 'grid'\"\n role=\"button\"\n tabindex=\"0\"\n title=\"Grid View\"\n >\n <i class=\"fa-solid fa-th\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button\n mjButton variant=\"secondary\" class=\"mj-btn-icon-mobile\"\n (click)=\"refreshData()\"\n [disabled]=\"isLoading\"\n aria-label=\"Refresh entity permissions data\"\n title=\"Refresh\"\n >\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\" aria-hidden=\"true\"></i>\n <span class=\"btn-text\">Refresh</span>\n </button>\n </div>\n\n <!-- Stats Cards -->\n <div class=\"mj-grid-4\" role=\"region\" aria-label=\"Permission statistics\">\n <div class=\"mj-card\" role=\"article\" aria-label=\"Total entities statistic\">\n <div class=\"stat-icon stat-icon-total\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-database\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Total entities count\">{{ stats.totalEntities }}</div>\n <div class=\"stat-label\">Total Entities</div>\n </div>\n </div>\n\n <div class=\"mj-card\" role=\"article\" aria-label=\"Public entities statistic\">\n <div class=\"stat-icon stat-icon-public\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-globe\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Public entities count\">{{ stats.publicEntities }}</div>\n <div class=\"stat-label\">Public Entities</div>\n </div>\n </div>\n\n <div class=\"mj-card\" role=\"article\" aria-label=\"Restricted entities statistic\">\n <div class=\"stat-icon stat-icon-restricted\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-lock\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Restricted entities count\">{{ stats.restrictedEntities }}</div>\n <div class=\"stat-label\">Restricted Entities</div>\n </div>\n </div>\n\n <div class=\"mj-card\" role=\"article\" aria-label=\"Total permissions statistic\">\n <div class=\"stat-icon stat-icon-permissions\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-key\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" aria-label=\"Total permissions count\">{{ stats.totalPermissions }}</div>\n <div class=\"stat-label\">Total Permissions</div>\n </div>\n </div>\n </div>\n\n <!-- Filters Section -->\n <div class=\"filters-section\" role=\"search\" aria-label=\"Entity filters\">\n <div class=\"filters-row\">\n <!-- Mobile: Search + Filter Button Container -->\n <div class=\"mobile-search-container\">\n <!-- Entity Search -->\n <div class=\"mj-search\">\n <i class=\"fa-solid fa-search mj-search-icon\" aria-hidden=\"true\"></i>\n <input\n type=\"text\"\n class=\"mj-search-input\"\n placeholder=\"Search entities by name or description...\"\n (input)=\"onSearchChange($event)\"\n [value]=\"filters$.value.entitySearch\"\n aria-label=\"Search entities\"\n />\n </div>\n\n <!-- Filter Button (Mobile Only) -->\n <button\n class=\"filter-button\"\n (click)=\"showMobileFilters = true\"\n aria-label=\"Open filters\"\n >\n <i class=\"fa-solid fa-filter\" aria-hidden=\"true\"></i>\n <span>Filters</span>\n </button>\n </div>\n\n <!-- Access Level Filter -->\n <div class=\"mj-filter-group\">\n <label class=\"mj-filter-label\" id=\"access-level-label\">Access Level</label>\n <div class=\"mj-filter-buttons\" role=\"group\" aria-labelledby=\"access-level-label\">\n <button mjButton\n [variant]=\"filters$.value.accessLevel === 'all' ? 'primary' : 'flat'\"\n (click)=\"onAccessLevelChange('all')\"\n [attr.aria-pressed]=\"filters$.value.accessLevel === 'all'\"\n aria-label=\"Show all access levels\"\n >\n All\n </button>\n <button mjButton\n [variant]=\"filters$.value.accessLevel === 'public' ? 'primary' : 'flat'\"\n (click)=\"onAccessLevelChange('public')\"\n [attr.aria-pressed]=\"filters$.value.accessLevel === 'public'\"\n aria-label=\"Show only public entities\"\n >\n Public\n </button>\n <button mjButton\n [variant]=\"filters$.value.accessLevel === 'restricted' ? 'primary' : 'flat'\"\n (click)=\"onAccessLevelChange('restricted')\"\n [attr.aria-pressed]=\"filters$.value.accessLevel === 'restricted'\"\n aria-label=\"Show only restricted entities\"\n >\n Restricted\n </button>\n <button mjButton\n [variant]=\"filters$.value.accessLevel === 'custom' ? 'primary' : 'flat'\"\n (click)=\"onAccessLevelChange('custom')\"\n [attr.aria-pressed]=\"filters$.value.accessLevel === 'custom'\"\n aria-label=\"Show only custom access entities\"\n >\n Custom\n </button>\n </div>\n </div>\n\n <!-- Role Filter -->\n <div class=\"mj-filter-group\">\n <label class=\"mj-filter-label\" for=\"role-filter\">Filter by Role</label>\n <select\n id=\"role-filter\"\n class=\"mj-filter-select\"\n (change)=\"onRoleFilterChange($event)\"\n aria-label=\"Filter entities by role\"\n >\n <option value=\"\">All Roles</option>\n @for (role of roles; track role.ID) {\n <option [value]=\"role.ID\">{{ role.Name }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n </div><!-- End Sticky Header -->\n\n <!-- Scrollable Content Section -->\n <div class=\"scrollable-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <mj-loading text=\"Loading entity permissions...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\" role=\"alert\" aria-live=\"assertive\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\" aria-hidden=\"true\"></i>\n <p class=\"error-message\">{{ error }}</p>\n <button\n mjButton variant=\"primary\"\n (click)=\"loadInitialData()\"\n aria-label=\"Retry loading entity permissions\"\n >\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n <!-- Content Area -->\n @if (!isLoading && !error) {\n <div class=\"content-area\">\n @if (viewMode === 'list') {\n <!-- List View -->\n <div class=\"entities-list\" role=\"list\" aria-label=\"Entity permissions list\">\n @for (ea of filteredEntityAccess; track ea.entity.ID) {\n <div\n class=\"entity-card\"\n [class.expanded]=\"isEntityExpanded(ea.entity.ID)\"\n role=\"listitem\"\n [attr.aria-expanded]=\"isEntityExpanded(ea.entity.ID)\"\n >\n <div\n class=\"entity-header\"\n (click)=\"toggleEntityExpansion(ea.entity.ID)\"\n (keydown.enter)=\"toggleEntityExpansion(ea.entity.ID)\"\n (keydown.space)=\"toggleEntityExpansion(ea.entity.ID); $event.preventDefault()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"'Expand permissions for ' + ea.entity.Name\"\n >\n <div class=\"entity-info\">\n <div class=\"entity-icon-wrapper\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-table\"></i>\n </div>\n <div class=\"entity-details\">\n <h3 class=\"entity-name\">{{ ea.entity.Name }}</h3>\n <p class=\"entity-description\">{{ ea.entity.Description || 'No description available' }}</p>\n </div>\n </div>\n\n <div class=\"entity-meta\">\n <span\n class=\"access-badge\"\n [class]=\"getAccessLevelClass(ea)\"\n [attr.aria-label]=\"'Access level: ' + getAccessLevelLabel(ea)\"\n >\n <i\n [class]=\"getAccessLevelClass(ea) === 'access-public' ? 'fa-solid fa-globe' :\n getAccessLevelClass(ea) === 'access-restricted' ? 'fa-solid fa-lock' :\n 'fa-solid fa-key'\"\n aria-hidden=\"true\"\n ></i>\n {{ getAccessLevelLabel(ea) }}\n </span>\n <div class=\"entity-actions\" (click)=\"$event.stopPropagation()\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editEntityPermissions(ea)\"\n title=\"Edit Permissions\"\n [attr.aria-label]=\"'Edit permissions for ' + ea.entity.Name\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button\n class=\"expand-btn\"\n [attr.aria-label]=\"(isEntityExpanded(ea.entity.ID) ? 'Collapse' : 'Expand') + ' permissions for ' + ea.entity.Name\"\n >\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n @if (isEntityExpanded(ea.entity.ID)) {\n <div class=\"entity-content\" role=\"region\" [attr.aria-label]=\"'Permissions for ' + ea.entity.Name\">\n <!-- Mobile-only actions bar -->\n <div class=\"mobile-actions-bar\" (click)=\"$event.stopPropagation()\">\n <span class=\"access-badge\" [class]=\"getAccessLevelClass(ea)\">\n <i\n [class]=\"getAccessLevelClass(ea) === 'access-public' ? 'fa-solid fa-globe' :\n getAccessLevelClass(ea) === 'access-restricted' ? 'fa-solid fa-lock' :\n 'fa-solid fa-key'\"\n aria-hidden=\"true\"\n ></i>\n {{ getAccessLevelLabel(ea) }}\n </span>\n <div class=\"mobile-action-buttons\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editEntityPermissions(ea)\"\n title=\"Edit Permissions\"\n [attr.aria-label]=\"'Edit permissions for ' + ea.entity.Name\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n <span class=\"btn-label\">Edit</span>\n </button>\n </div>\n </div>\n\n @if (ea.permissions.length > 0) {\n <table class=\"permissions-grid\" role=\"table\" aria-label=\"Role permissions\">\n <thead class=\"permissions-header\" role=\"rowgroup\">\n <tr role=\"row\">\n <th class=\"role-header\" scope=\"col\" role=\"columnheader\">Role</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Create</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Read</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Update</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Delete</th>\n </tr>\n </thead>\n <tbody role=\"rowgroup\">\n @for (roleId of ea.rolePermissions.keys(); track roleId) {\n <tr class=\"permission-row\" role=\"row\">\n <td class=\"role-name\" role=\"cell\">{{ getRoleName(roleId) }}</td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Create: ' + (hasPermission(ea, roleId, 'canCreate') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canCreate') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Read: ' + (hasPermission(ea, roleId, 'canRead') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canRead') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Update: ' + (hasPermission(ea, roleId, 'canUpdate') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canUpdate') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Delete: ' + (hasPermission(ea, roleId, 'canDelete') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canDelete') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @else {\n <p class=\"no-permissions\">\n @if (ea.isPublic) {\n This entity is publicly accessible by all users.\n } @else {\n No specific role permissions configured. Access is restricted to system administrators.\n }\n </p>\n }\n </div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- Grid View -->\n <div class=\"entities-grid\" role=\"list\" aria-label=\"Entity permissions grid\">\n @for (ea of filteredEntityAccess; track ea.entity.ID) {\n <article\n class=\"entity-grid-card\"\n [class]=\"getAccessLevelClass(ea)\"\n [attr.aria-label]=\"'Entity: ' + ea.entity.Name\"\n >\n <div class=\"grid-card-header\">\n <i class=\"fa-solid fa-table\" aria-hidden=\"true\"></i>\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editEntityPermissions(ea)\"\n [attr.aria-label]=\"'Edit permissions for ' + ea.entity.Name\"\n title=\"Edit Permissions\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <h4 class=\"grid-card-title\">{{ ea.entity.Name }}</h4>\n <p class=\"grid-card-description\">{{ ea.entity.Description || 'No description' }}</p>\n <div class=\"grid-card-footer\">\n <span\n class=\"access-label\"\n [attr.aria-label]=\"'Access level: ' + getAccessLevelLabel(ea)\"\n >\n <i\n [class]=\"getAccessLevelClass(ea) === 'access-public' ? 'fa-solid fa-globe' :\n getAccessLevelClass(ea) === 'access-restricted' ? 'fa-solid fa-lock' :\n 'fa-solid fa-key'\"\n aria-hidden=\"true\"\n ></i>\n {{ getAccessLevelLabel(ea) }}\n </span>\n @if (ea.permissions.length > 0) {\n <span\n class=\"permission-count\"\n [attr.aria-label]=\"ea.permissions.length + ' permission' + (ea.permissions.length === 1 ? '' : 's')\"\n >\n {{ ea.permissions.length }} permission{{ ea.permissions.length === 1 ? '' : 's' }}\n </span>\n }\n </div>\n </article>\n }\n </div>\n }\n\n @if (filteredEntityAccess.length === 0) {\n <div class=\"empty-state\" role=\"status\">\n <i class=\"fa-solid fa-shield-alt empty-state-icon\" aria-hidden=\"true\"></i>\n <h3 class=\"empty-text\">No Permissions Found</h3>\n <p class=\"empty-subtext\">Try adjusting your filters or refresh the data.</p>\n <button\n mjButton variant=\"primary\"\n (click)=\"refreshData()\"\n aria-label=\"Refresh permissions data\"\n >\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Refresh\n </button>\n </div>\n }\n </div>\n }\n </div><!-- End Scrollable Content -->\n\n <!-- Permission Edit Dialog -->\n <mj-permission-dialog\n [visible]=\"showPermissionDialog\"\n [data]=\"permissionDialogData\"\n (result)=\"onPermissionDialogResult($event)\"\n ></mj-permission-dialog>\n\n <!-- Mobile Filter Modal -->\n @if (showMobileFilters) {\n <div\n class=\"filter-modal-backdrop\"\n (click)=\"showMobileFilters = false\"\n role=\"presentation\"\n >\n <div\n class=\"filter-modal\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"filter-modal-title\"\n >\n <div class=\"filter-modal-header\">\n <h3 class=\"filter-modal-title\" id=\"filter-modal-title\">\n <i class=\"fa-solid fa-filter\" aria-hidden=\"true\"></i>\n Filters\n </h3>\n <button\n class=\"filter-modal-close\"\n (click)=\"showMobileFilters = false\"\n aria-label=\"Close filters\"\n >\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n <div class=\"filter-modal-body\">\n <div class=\"filter-options-container\">\n <!-- Access Level Filter -->\n <div class=\"filter-group\">\n <h4 class=\"filter-group-label\">Access Level</h4>\n <div class=\"filter-group-options\">\n <label\n class=\"filter-option\"\n [class.selected]=\"filters$.value.accessLevel === 'all'\"\n >\n <input\n type=\"radio\"\n name=\"accessLevel\"\n value=\"all\"\n [checked]=\"filters$.value.accessLevel === 'all'\"\n (change)=\"onAccessLevelChange('all')\"\n />\n <span class=\"filter-option-label\">All Levels</span>\n </label>\n <label\n class=\"filter-option\"\n [class.selected]=\"filters$.value.accessLevel === 'public'\"\n >\n <input\n type=\"radio\"\n name=\"accessLevel\"\n value=\"public\"\n [checked]=\"filters$.value.accessLevel === 'public'\"\n (change)=\"onAccessLevelChange('public')\"\n />\n <span class=\"filter-option-label\">Public Entities</span>\n </label>\n <label\n class=\"filter-option\"\n [class.selected]=\"filters$.value.accessLevel === 'restricted'\"\n >\n <input\n type=\"radio\"\n name=\"accessLevel\"\n value=\"restricted\"\n [checked]=\"filters$.value.accessLevel === 'restricted'\"\n (change)=\"onAccessLevelChange('restricted')\"\n />\n <span class=\"filter-option-label\">Restricted Entities</span>\n </label>\n <label\n class=\"filter-option\"\n [class.selected]=\"filters$.value.accessLevel === 'custom'\"\n >\n <input\n type=\"radio\"\n name=\"accessLevel\"\n value=\"custom\"\n [checked]=\"filters$.value.accessLevel === 'custom'\"\n (change)=\"onAccessLevelChange('custom')\"\n />\n <span class=\"filter-option-label\">Custom Access Entities</span>\n </label>\n </div>\n </div>\n\n <!-- Role Filter -->\n <div class=\"filter-group\">\n <h4 class=\"filter-group-label\">Filter by Role</h4>\n <div class=\"filter-group-options\">\n <label class=\"filter-option\" [class.selected]=\"!filters$.value.roleId\">\n <input\n type=\"radio\"\n name=\"role\"\n value=\"\"\n [checked]=\"!filters$.value.roleId\"\n (change)=\"onRoleFilterChange($event)\"\n />\n <span class=\"filter-option-label\">All Roles</span>\n </label>\n @for (role of roles; track role.ID) {\n <label\n class=\"filter-option\"\n [class.selected]=\"filters$.value.roleId === role.ID\"\n >\n <input\n type=\"radio\"\n name=\"role\"\n [value]=\"role.ID\"\n [checked]=\"filters$.value.roleId === role.ID\"\n (change)=\"onRoleFilterChange($event)\"\n />\n <span class=\"filter-option-label\">{{ role.Name }}</span>\n </label>\n }\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"filter-modal-footer\">\n <button\n mjButton variant=\"primary\"\n (click)=\"showMobileFilters = false\"\n >\n Apply Filters\n </button>\n <button\n mjButton\n (click)=\"showMobileFilters = false\"\n >\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n</div>\n"]}
1
+ {"version":3,"file":"entity-permissions.component.js","sourceRoot":"","sources":["../../../src/lib/entity-permissions/entity-permissions.component.ts","../../../src/lib/entity-permissions/entity-permissions.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnDestroy, ChangeDetectorRef, NgZone } from '@angular/core';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport {\n MJEntityPermissionEntity,\n MJEntityEntity,\n MJRoleEntity,\n ResourceData\n} from '@memberjunction/core-entities';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { FilterFieldConfig, ViewToggleOption } from '@memberjunction/ng-ui-components';\nimport { PermissionDialogData, PermissionDialogResult } from './permission-dialog/permission-dialog.component';\n\ninterface PermissionsStats {\n totalEntities: number;\n publicEntities: number;\n restrictedEntities: number;\n totalPermissions: number;\n}\n\ninterface FilterOptions {\n entitySearch: string;\n accessLevel: 'all' | 'public' | 'restricted' | 'custom';\n roleId: string | null;\n}\n\ninterface EntityAccess {\n entity: MJEntityEntity;\n isPublic: boolean;\n permissions: MJEntityPermissionEntity[];\n rolePermissions: Map<string, PermissionLevel>;\n}\n\ninterface PermissionLevel {\n canCreate: boolean;\n canRead: boolean;\n canUpdate: boolean;\n canDelete: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-entity-permissions',\n templateUrl: './entity-permissions.component.html',\n styleUrls: ['../shared/styles/_admin-patterns.css', './entity-permissions.component.css']\n})\n@RegisterClass(BaseDashboard, 'EntityPermissions')\nexport class EntityPermissionsComponent extends BaseDashboard implements OnDestroy {\n // State management\n public entityAccess: EntityAccess[] = [];\n public filteredEntityAccess: EntityAccess[] = [];\n public roles: MJRoleEntity[] = [];\n public isLoading = false;\n public error: string | null = null;\n \n // Permission dialog state\n public showPermissionDialog = false;\n public permissionDialogData: PermissionDialogData | null = null;\n \n // Stats\n public stats: PermissionsStats = {\n totalEntities: 0,\n publicEntities: 0,\n restrictedEntities: 0,\n totalPermissions: 0\n };\n \n // Filters\n public filters$ = new BehaviorSubject<FilterOptions>({\n entitySearch: '',\n accessLevel: 'all',\n roleId: null\n });\n \n // UI State\n public expandedEntityId: string | null = null;\n public viewMode: 'grid' | 'list' = 'list';\n\n /** Options for the <mj-view-toggle> in the interior chrome. Icon-only;\n title drives the tooltip + aria-label. */\n public readonly viewToggleOptions: ViewToggleOption[] = [\n { key: 'list', icon: 'fa-solid fa-list', title: 'List View' },\n { key: 'grid', icon: 'fa-solid fa-th', title: 'Grid View' }\n ];\n\n protected override destroy$ = new Subject<void>();\n private get metadata() { return this.ProviderToUse; }\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) {\n super();\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return \"Permissions\"\n }\n\n protected initDashboard(): void {\n this.setupFilterSubscription();\n }\n\n protected loadData(): void {\n this.loadInitialData();\n }\n\n override ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n super.ngOnDestroy();\n }\n \n public async loadInitialData(): Promise<void> {\n try {\n this.isLoading = true;\n this.error = null;\n \n // Load all required data in parallel\n const [entities, permissions, roles] = await Promise.all([\n this.loadEntities(),\n this.loadEntityPermissions(),\n this.loadRoles()\n ]);\n \n // Process the data\n this.roles = roles;\n this.processEntityAccess(entities, permissions);\n this.calculateStats();\n this.applyFilters();\n \n } catch (error) {\n console.error('Error loading permissions data:', error);\n this.error = 'Failed to load permissions data. Please try again.';\n } finally {\n this.ngZone.run(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n private async loadEntities(): Promise<MJEntityEntity[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJEntityEntity>({\n EntityName: 'MJ: Entities',\n ResultType: 'entity_object',\n OrderBy: 'Name ASC'\n });\n \n return result.Success ? result.Results : [];\n }\n \n private async loadEntityPermissions(): Promise<MJEntityPermissionEntity[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJEntityPermissionEntity>({\n EntityName: 'MJ: Entity Permissions',\n ResultType: 'entity_object',\n OrderBy: 'EntityID, RoleID'\n });\n \n return result.Success ? result.Results : [];\n }\n \n private async loadRoles(): Promise<MJRoleEntity[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n ResultType: 'entity_object',\n OrderBy: 'Name ASC'\n });\n \n return result.Success ? result.Results : [];\n }\n \n private processEntityAccess(entities: MJEntityEntity[], permissions: MJEntityPermissionEntity[]): void {\n // Group permissions by entity\n const permissionsByEntity = new Map<string, MJEntityPermissionEntity[]>();\n \n for (const permission of permissions) {\n const entityId = permission.EntityID;\n if (!permissionsByEntity.has(entityId)) {\n permissionsByEntity.set(entityId, []);\n }\n permissionsByEntity.get(entityId)!.push(permission);\n }\n \n // Create EntityAccess objects\n this.entityAccess = entities.map(entity => {\n const entityPermissions = permissionsByEntity.get(entity.ID) || [];\n const rolePermissions = new Map<string, PermissionLevel>();\n \n // Process permissions by role\n for (const permission of entityPermissions) {\n if (permission.RoleID) {\n rolePermissions.set(permission.RoleID, {\n canCreate: permission.CanCreate || false,\n canRead: permission.CanRead || false,\n canUpdate: permission.CanUpdate || false,\n canDelete: permission.CanDelete || false\n });\n }\n }\n \n return {\n entity,\n isPublic: entity.AllowAllRowsAPI || false,\n permissions: entityPermissions,\n rolePermissions\n };\n });\n }\n \n private setupFilterSubscription(): void {\n this.filters$\n .pipe(\n debounceTime(300),\n distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.applyFilters();\n });\n }\n \n private applyFilters(): void {\n const filters = this.filters$.value;\n let filtered = [...this.entityAccess];\n \n // Apply entity search\n if (filters.entitySearch) {\n const searchLower = filters.entitySearch.toLowerCase();\n filtered = filtered.filter(ea =>\n ea.entity.Name?.toLowerCase().includes(searchLower) ||\n ea.entity.Description?.toLowerCase().includes(searchLower)\n );\n }\n \n // Apply access level filter\n switch (filters.accessLevel) {\n case 'public':\n filtered = filtered.filter(ea => ea.isPublic);\n break;\n case 'restricted':\n filtered = filtered.filter(ea => !ea.isPublic && ea.permissions.length === 0);\n break;\n case 'custom':\n filtered = filtered.filter(ea => !ea.isPublic && ea.permissions.length > 0);\n break;\n }\n \n // Apply role filter\n if (filters.roleId) {\n filtered = filtered.filter(ea => \n ea.rolePermissions.has(filters.roleId!)\n );\n }\n \n this.filteredEntityAccess = filtered;\n }\n \n private calculateStats(): void {\n const publicEntities = this.entityAccess.filter(ea => ea.isPublic).length;\n const customPermissions = this.entityAccess.filter(ea => !ea.isPublic && ea.permissions.length > 0).length;\n const totalPermissions = this.entityAccess.reduce((sum, ea) => sum + ea.permissions.length, 0);\n \n this.stats = {\n totalEntities: this.entityAccess.length,\n publicEntities,\n restrictedEntities: this.entityAccess.length - publicEntities - customPermissions,\n totalPermissions\n };\n }\n \n // Public methods for template\n public onAccessLevelChange(level: 'all' | 'public' | 'restricted' | 'custom'): void {\n this.updateFilter({ accessLevel: level });\n }\n\n public updateFilter(partial: Partial<FilterOptions>): void {\n this.filters$.next({\n ...this.filters$.value,\n ...partial\n });\n // Discrete changes (chips, popover dropdowns) apply immediately. Text search\n // still goes through the 300ms debounce in setupFilterSubscription.\n if (!('entitySearch' in partial)) {\n this.applyFilters();\n this.cdr.markForCheck();\n }\n }\n\n // -- Filter panel binding (mj-filter-panel inside the popover) -------------\n // Role lives in the popover; access level chips track their own state in\n // the toolbar slot. See Section 10 of explorer-chrome-conventions.\n\n public get filterFields(): FilterFieldConfig[] {\n return [{\n key: 'roleId',\n type: 'dropdown',\n label: 'Role',\n icon: 'fa-solid fa-user-shield',\n placeholder: 'All Roles',\n filterable: this.roles.length > 10,\n options: [\n { text: 'All Roles', value: '' },\n ...this.roles.map(r => ({ text: r.Name ?? '', value: r.ID }))\n ]\n }];\n }\n\n public get filterValues(): Record<string, unknown> {\n return { roleId: this.filters$.value.roleId ?? '' };\n }\n\n public get popoverActiveFilterCount(): number {\n return this.filters$.value.roleId ? 1 : 0;\n }\n\n public onFilterPanelChange(values: Record<string, unknown>): void {\n const roleId = (values['roleId'] as string) || null;\n this.filters$.next({ ...this.filters$.value, roleId });\n this.applyFilters();\n this.cdr.markForCheck();\n }\n \n public toggleEntityExpansion(entityId: string): void {\n this.expandedEntityId = this.expandedEntityId === entityId ? null : entityId;\n }\n \n public isEntityExpanded(entityId: string): boolean {\n return this.expandedEntityId === entityId;\n }\n \n public editEntityPermissions(entityAccess: EntityAccess): void {\n console.log('Opening permission dialog for entity:', entityAccess.entity.Name);\n console.log('Entity permissions:', entityAccess.permissions);\n console.log('Available roles:', this.roles);\n \n this.permissionDialogData = {\n entity: entityAccess.entity,\n roles: this.roles,\n existingPermissions: entityAccess.permissions\n };\n this.showPermissionDialog = true;\n \n console.log('Dialog data set:', this.permissionDialogData);\n console.log('Dialog visible:', this.showPermissionDialog);\n }\n \n public onPermissionDialogResult(result: PermissionDialogResult): void {\n this.showPermissionDialog = false;\n this.permissionDialogData = null;\n\n if (result.action === 'save') {\n // Refresh the data after save\n this.loadInitialData();\n }\n }\n \n public async savePermissions(): Promise<void> {\n // This method is now handled by the dialog component\n // Keeping for backwards compatibility but not used\n console.warn('savePermissions method is deprecated - use PermissionDialogComponent instead');\n }\n \n public getAccessLevelClass(entityAccess: EntityAccess): string {\n if (entityAccess.isPublic) {\n return 'access-public';\n } else if (entityAccess.permissions.length === 0) {\n return 'access-restricted';\n } else {\n return 'access-custom';\n }\n }\n \n public getAccessLevelLabel(entityAccess: EntityAccess): string {\n if (entityAccess.isPublic) {\n return 'Public';\n } else if (entityAccess.permissions.length === 0) {\n return 'Restricted';\n } else {\n return 'Custom';\n }\n }\n \n public getRoleName(roleId: string): string {\n const role = this.roles.find(r => UUIDsEqual(r.ID, roleId));\n return role?.Name || 'Unknown Role';\n }\n \n public hasPermission(entityAccess: EntityAccess, roleId: string, permission: keyof PermissionLevel): boolean {\n const rolePermission = entityAccess.rolePermissions.get(roleId);\n return rolePermission ? rolePermission[permission] : false;\n }\n \n public refreshData(): void {\n this.loadInitialData();\n }\n \n public setViewMode(mode: 'grid' | 'list'): void {\n this.viewMode = mode;\n }\n}","<!--\n Interior chrome — see Section 10 of explorer-chrome-conventions.\n-->\n<mj-page-header-interior\n AriaLabel=\"Filter entity permissions\"\n Title=\"Entity Permissions\"\n Subtitle=\"Manage entity-level access for each role\">\n <!-- X-of-Y filtered count earns its meta spot per chrome conventions §2.\n Partition badges (public/restricted/custom) stay dropped — they mirror\n the Access Level filter chips in [toolbar]. -->\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredEntityAccess.length\"\n [Total]=\"entityAccess.length\"\n Label=\"entities\">\n </mj-stat-badge>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search entities by name or description...\"\n [Value]=\"filters$.value.entitySearch\"\n (ValueChange)=\"updateFilter({ entitySearch: $event })\">\n </mj-page-search>\n <div class=\"status-chips\" role=\"group\" aria-label=\"Filter by access level\">\n <mj-filter-chip\n Label=\"All\"\n [Active]=\"filters$.value.accessLevel === 'all'\"\n (Clicked)=\"onAccessLevelChange('all')\">\n </mj-filter-chip>\n <mj-filter-chip\n Label=\"Public\"\n [Active]=\"filters$.value.accessLevel === 'public'\"\n (Clicked)=\"onAccessLevelChange('public')\">\n </mj-filter-chip>\n <mj-filter-chip\n Label=\"Restricted\"\n [Active]=\"filters$.value.accessLevel === 'restricted'\"\n (Clicked)=\"onAccessLevelChange('restricted')\">\n </mj-filter-chip>\n <mj-filter-chip\n Label=\"Custom\"\n [Active]=\"filters$.value.accessLevel === 'custom'\"\n (Clicked)=\"onAccessLevelChange('custom')\">\n </mj-filter-chip>\n </div>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"popoverActiveFilterCount\"\n [ShowClearAll]=\"popoverActiveFilterCount > 0\"\n (ClearAllRequested)=\"onFilterPanelChange({ roleId: null })\">\n <mj-filter-panel\n [Fields]=\"filterFields\"\n [Values]=\"filterValues\"\n (ValuesChange)=\"onFilterPanelChange($event)\"\n (Reset)=\"onFilterPanelChange({ roleId: null })\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-view-toggle\n [Options]=\"viewToggleOptions\"\n [ActiveKey]=\"viewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refreshData()\"></mj-refresh-button>\n </div>\n</mj-page-header-interior>\n\n<!-- Scrollable Content Section — owned by <mj-page-body-interior>. -->\n<mj-page-body-interior>\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <mj-loading text=\"Loading entity permissions...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\" role=\"alert\" aria-live=\"assertive\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\" aria-hidden=\"true\"></i>\n <p class=\"error-message\">{{ error }}</p>\n <button\n mjButton variant=\"primary\"\n (click)=\"loadInitialData()\"\n aria-label=\"Retry loading entity permissions\"\n >\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n @if (!isLoading && !error) {\n @if (viewMode === 'list') {\n <!-- List View -->\n <div class=\"entities-list\" role=\"list\" aria-label=\"Entity permissions list\">\n @for (ea of filteredEntityAccess; track ea.entity.ID) {\n <div\n class=\"entity-card\"\n [class.expanded]=\"isEntityExpanded(ea.entity.ID)\"\n role=\"listitem\"\n [attr.aria-expanded]=\"isEntityExpanded(ea.entity.ID)\"\n >\n <div\n class=\"entity-header\"\n (click)=\"toggleEntityExpansion(ea.entity.ID)\"\n (keydown.enter)=\"toggleEntityExpansion(ea.entity.ID)\"\n (keydown.space)=\"toggleEntityExpansion(ea.entity.ID); $event.preventDefault()\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"'Expand permissions for ' + ea.entity.Name\"\n >\n <div class=\"entity-info\">\n <div class=\"entity-icon-wrapper\" aria-hidden=\"true\">\n <i class=\"fa-solid fa-table\"></i>\n </div>\n <div class=\"entity-details\">\n <h3 class=\"entity-name\">{{ ea.entity.Name }}</h3>\n <p class=\"entity-description\">{{ ea.entity.Description || 'No description available' }}</p>\n </div>\n </div>\n\n <div class=\"entity-meta\">\n <span\n class=\"access-badge\"\n [class]=\"getAccessLevelClass(ea)\"\n [attr.aria-label]=\"'Access level: ' + getAccessLevelLabel(ea)\"\n >\n <i\n [class]=\"getAccessLevelClass(ea) === 'access-public' ? 'fa-solid fa-globe' :\n getAccessLevelClass(ea) === 'access-restricted' ? 'fa-solid fa-lock' :\n 'fa-solid fa-key'\"\n aria-hidden=\"true\"\n ></i>\n {{ getAccessLevelLabel(ea) }}\n </span>\n <div class=\"entity-actions\" (click)=\"$event.stopPropagation()\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editEntityPermissions(ea)\"\n title=\"Edit Permissions\"\n [attr.aria-label]=\"'Edit permissions for ' + ea.entity.Name\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button\n class=\"expand-btn\"\n [attr.aria-label]=\"(isEntityExpanded(ea.entity.ID) ? 'Collapse' : 'Expand') + ' permissions for ' + ea.entity.Name\"\n >\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n @if (isEntityExpanded(ea.entity.ID)) {\n <div class=\"entity-content\" role=\"region\" [attr.aria-label]=\"'Permissions for ' + ea.entity.Name\">\n <!-- Mobile-only actions bar -->\n <div class=\"mobile-actions-bar\" (click)=\"$event.stopPropagation()\">\n <span class=\"access-badge\" [class]=\"getAccessLevelClass(ea)\">\n <i\n [class]=\"getAccessLevelClass(ea) === 'access-public' ? 'fa-solid fa-globe' :\n getAccessLevelClass(ea) === 'access-restricted' ? 'fa-solid fa-lock' :\n 'fa-solid fa-key'\"\n aria-hidden=\"true\"\n ></i>\n {{ getAccessLevelLabel(ea) }}\n </span>\n <div class=\"mobile-action-buttons\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editEntityPermissions(ea)\"\n title=\"Edit Permissions\"\n [attr.aria-label]=\"'Edit permissions for ' + ea.entity.Name\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n <span class=\"btn-label\">Edit</span>\n </button>\n </div>\n </div>\n\n @if (ea.permissions.length > 0) {\n <table class=\"permissions-grid\" role=\"table\" aria-label=\"Role permissions\">\n <thead class=\"permissions-header\" role=\"rowgroup\">\n <tr role=\"row\">\n <th class=\"role-header\" scope=\"col\" role=\"columnheader\">Role</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Create</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Read</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Update</th>\n <th class=\"permission-header\" scope=\"col\" role=\"columnheader\">Delete</th>\n </tr>\n </thead>\n <tbody role=\"rowgroup\">\n @for (roleId of ea.rolePermissions.keys(); track roleId) {\n <tr class=\"permission-row\" role=\"row\">\n <td class=\"role-name\" role=\"cell\">{{ getRoleName(roleId) }}</td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Create: ' + (hasPermission(ea, roleId, 'canCreate') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canCreate') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Read: ' + (hasPermission(ea, roleId, 'canRead') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canRead') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Update: ' + (hasPermission(ea, roleId, 'canUpdate') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canUpdate') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n <td class=\"permission-cell\" role=\"cell\" [attr.aria-label]=\"'Delete: ' + (hasPermission(ea, roleId, 'canDelete') ? 'allowed' : 'denied')\">\n <i\n [class]=\"hasPermission(ea, roleId, 'canDelete') ?\n 'fa-solid fa-check text-success' :\n 'fa-solid fa-times text-muted'\"\n [attr.aria-hidden]=\"true\"\n ></i>\n </td>\n </tr>\n }\n </tbody>\n </table>\n } @else {\n <p class=\"no-permissions\">\n @if (ea.isPublic) {\n This entity is publicly accessible by all users.\n } @else {\n No specific role permissions configured. Access is restricted to system administrators.\n }\n </p>\n }\n </div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- Grid View -->\n <div class=\"entities-grid\" role=\"list\" aria-label=\"Entity permissions grid\">\n @for (ea of filteredEntityAccess; track ea.entity.ID) {\n <article\n class=\"entity-grid-card\"\n [class]=\"getAccessLevelClass(ea)\"\n [attr.aria-label]=\"'Entity: ' + ea.entity.Name\"\n >\n <div class=\"grid-card-header\">\n <i class=\"fa-solid fa-table\" aria-hidden=\"true\"></i>\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editEntityPermissions(ea)\"\n [attr.aria-label]=\"'Edit permissions for ' + ea.entity.Name\"\n title=\"Edit Permissions\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <h4 class=\"grid-card-title\">{{ ea.entity.Name }}</h4>\n <p class=\"grid-card-description\">{{ ea.entity.Description || 'No description' }}</p>\n <div class=\"grid-card-footer\">\n <span\n class=\"access-label\"\n [attr.aria-label]=\"'Access level: ' + getAccessLevelLabel(ea)\"\n >\n <i\n [class]=\"getAccessLevelClass(ea) === 'access-public' ? 'fa-solid fa-globe' :\n getAccessLevelClass(ea) === 'access-restricted' ? 'fa-solid fa-lock' :\n 'fa-solid fa-key'\"\n aria-hidden=\"true\"\n ></i>\n {{ getAccessLevelLabel(ea) }}\n </span>\n @if (ea.permissions.length > 0) {\n <span\n class=\"permission-count\"\n [attr.aria-label]=\"ea.permissions.length + ' permission' + (ea.permissions.length === 1 ? '' : 's')\"\n >\n {{ ea.permissions.length }} permission{{ ea.permissions.length === 1 ? '' : 's' }}\n </span>\n }\n </div>\n </article>\n }\n </div>\n }\n\n @if (filteredEntityAccess.length === 0) {\n <div class=\"empty-state\" role=\"status\">\n <i class=\"fa-solid fa-shield-alt empty-state-icon\" aria-hidden=\"true\"></i>\n <h3 class=\"empty-text\">No Permissions Found</h3>\n <p class=\"empty-subtext\">Try adjusting your filters or refresh the data.</p>\n <button\n mjButton variant=\"primary\"\n (click)=\"refreshData()\"\n aria-label=\"Refresh permissions data\"\n >\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Refresh\n </button>\n </div>\n }\n }\n </mj-page-body-interior>\n\n <!-- Permission Edit Dialog -->\n <mj-permission-dialog\n [visible]=\"showPermissionDialog\"\n [data]=\"permissionDialogData\"\n (result)=\"onPermissionDialogResult($event)\"\n ></mj-permission-dialog>\n\n"]}
@@ -29,7 +29,7 @@ import * as i27 from "@memberjunction/ng-shared-generic";
29
29
  import * as i28 from "@memberjunction/ng-ui-components";
30
30
  export declare class ExplorerSettingsModule {
31
31
  static ɵfac: i0.ɵɵFactoryDeclaration<ExplorerSettingsModule, never>;
32
- static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerSettingsModule, [typeof i1.SettingsComponent, typeof i2.UserProfileSettingsComponent, typeof i3.UserAppConfigComponent, typeof i4.NotificationPreferencesComponent, typeof i5.GeneralSettingsComponent, typeof i6.AccountInfoComponent, typeof i7.ApplicationSettingsComponent, typeof i8.AppearanceSettingsComponent, typeof i9.SqlLoggingComponent, typeof i10.UserManagementComponent, typeof i11.RoleManagementComponent, typeof i12.ApplicationManagementComponent, typeof i13.EntityPermissionsComponent, typeof i14.RoleDialogComponent, typeof i15.UserDialogComponent, typeof i16.PermissionDialogComponent, typeof i17.ApplicationDialogComponent], [typeof i18.CommonModule, typeof i19.FormsModule, typeof i19.ReactiveFormsModule, typeof i20.DragDropModule, typeof i21.EntityPermissionsModule, typeof i22.EntityFormDialogModule, typeof i23.SimpleRecordListModule, typeof i24.JoinGridModule, typeof i25.CodeEditorModule, typeof i26.SharedSettingsModule, typeof i27.SharedGenericModule, typeof i28.MJButtonDirective], [typeof i1.SettingsComponent, typeof i2.UserProfileSettingsComponent, typeof i3.UserAppConfigComponent, typeof i4.NotificationPreferencesComponent, typeof i5.GeneralSettingsComponent, typeof i6.AccountInfoComponent, typeof i7.ApplicationSettingsComponent, typeof i8.AppearanceSettingsComponent, typeof i9.SqlLoggingComponent, typeof i10.UserManagementComponent, typeof i11.RoleManagementComponent, typeof i12.ApplicationManagementComponent, typeof i13.EntityPermissionsComponent, typeof i14.RoleDialogComponent, typeof i15.UserDialogComponent, typeof i16.PermissionDialogComponent, typeof i17.ApplicationDialogComponent]>;
32
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerSettingsModule, [typeof i1.SettingsComponent, typeof i2.UserProfileSettingsComponent, typeof i3.UserAppConfigComponent, typeof i4.NotificationPreferencesComponent, typeof i5.GeneralSettingsComponent, typeof i6.AccountInfoComponent, typeof i7.ApplicationSettingsComponent, typeof i8.AppearanceSettingsComponent, typeof i9.SqlLoggingComponent, typeof i10.UserManagementComponent, typeof i11.RoleManagementComponent, typeof i12.ApplicationManagementComponent, typeof i13.EntityPermissionsComponent, typeof i14.RoleDialogComponent, typeof i15.UserDialogComponent, typeof i16.PermissionDialogComponent, typeof i17.ApplicationDialogComponent], [typeof i18.CommonModule, typeof i19.FormsModule, typeof i19.ReactiveFormsModule, typeof i20.DragDropModule, typeof i21.EntityPermissionsModule, typeof i22.EntityFormDialogModule, typeof i23.SimpleRecordListModule, typeof i24.JoinGridModule, typeof i25.CodeEditorModule, typeof i26.SharedSettingsModule, typeof i27.SharedGenericModule, typeof i28.MJButtonDirective, typeof i28.MJPageHeaderInteriorComponent, typeof i28.MJPageBodyInteriorComponent, typeof i28.MJPageSearchComponent, typeof i28.MJFilterPopoverComponent, typeof i28.MJFilterPanelComponent, typeof i28.MJFilterChipComponent, typeof i28.MJRefreshButtonComponent, typeof i28.MJStatBadgeComponent, typeof i28.MJViewToggleComponent], [typeof i1.SettingsComponent, typeof i2.UserProfileSettingsComponent, typeof i3.UserAppConfigComponent, typeof i4.NotificationPreferencesComponent, typeof i5.GeneralSettingsComponent, typeof i6.AccountInfoComponent, typeof i7.ApplicationSettingsComponent, typeof i8.AppearanceSettingsComponent, typeof i9.SqlLoggingComponent, typeof i10.UserManagementComponent, typeof i11.RoleManagementComponent, typeof i12.ApplicationManagementComponent, typeof i13.EntityPermissionsComponent, typeof i14.RoleDialogComponent, typeof i15.UserDialogComponent, typeof i16.PermissionDialogComponent, typeof i17.ApplicationDialogComponent]>;
33
33
  static ɵinj: i0.ɵɵInjectorDeclaration<ExplorerSettingsModule>;
34
34
  }
35
35
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,qBAgEa,sBAAsB;yCAAtB,sBAAsB;0CAAtB,sBAAsB;0CAAtB,sBAAsB;CAAI"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,qBAyEa,sBAAsB;yCAAtB,sBAAsB;0CAAtB,sBAAsB;0CAAtB,sBAAsB;CAAI"}
@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { DragDropModule } from '@angular/cdk/drag-drop';
5
- import { MJButtonDirective } from '@memberjunction/ng-ui-components';
5
+ import { MJButtonDirective, MJPageHeaderInteriorComponent, MJPageBodyInteriorComponent, MJPageSearchComponent, MJFilterPopoverComponent, MJFilterPanelComponent, MJFilterChipComponent, MJRefreshButtonComponent, MJStatBadgeComponent, MJViewToggleComponent } from '@memberjunction/ng-ui-components';
6
6
  import { EntityPermissionsModule } from '@memberjunction/ng-entity-permissions';
7
7
  import { EntityFormDialogModule } from '@memberjunction/ng-entity-form-dialog';
8
8
  import { SimpleRecordListModule } from '@memberjunction/ng-simple-record-list';
@@ -47,7 +47,16 @@ export class ExplorerSettingsModule {
47
47
  JoinGridModule,
48
48
  CodeEditorModule,
49
49
  SharedSettingsModule,
50
- SharedGenericModule] });
50
+ SharedGenericModule,
51
+ MJPageHeaderInteriorComponent,
52
+ MJPageBodyInteriorComponent,
53
+ MJPageSearchComponent,
54
+ MJFilterPopoverComponent,
55
+ MJFilterPanelComponent,
56
+ MJFilterChipComponent,
57
+ MJRefreshButtonComponent,
58
+ MJStatBadgeComponent,
59
+ MJViewToggleComponent] });
51
60
  }
52
61
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExplorerSettingsModule, [{
53
62
  type: NgModule,
@@ -88,7 +97,16 @@ export class ExplorerSettingsModule {
88
97
  CodeEditorModule,
89
98
  SharedSettingsModule,
90
99
  SharedGenericModule,
91
- MJButtonDirective
100
+ MJButtonDirective,
101
+ MJPageHeaderInteriorComponent,
102
+ MJPageBodyInteriorComponent,
103
+ MJPageSearchComponent,
104
+ MJFilterPopoverComponent,
105
+ MJFilterPanelComponent,
106
+ MJFilterChipComponent,
107
+ MJRefreshButtonComponent,
108
+ MJStatBadgeComponent,
109
+ MJViewToggleComponent
92
110
  ],
93
111
  exports: [
94
112
  // Main settings container
@@ -149,7 +167,16 @@ export class ExplorerSettingsModule {
149
167
  CodeEditorModule,
150
168
  SharedSettingsModule,
151
169
  SharedGenericModule,
152
- MJButtonDirective], exports: [
170
+ MJButtonDirective,
171
+ MJPageHeaderInteriorComponent,
172
+ MJPageBodyInteriorComponent,
173
+ MJPageSearchComponent,
174
+ MJFilterPopoverComponent,
175
+ MJFilterPanelComponent,
176
+ MJFilterChipComponent,
177
+ MJRefreshButtonComponent,
178
+ MJStatBadgeComponent,
179
+ MJViewToggleComponent], exports: [
153
180
  // Main settings container
154
181
  SettingsComponent,
155
182
  // User-facing components
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { MJButtonDirective } from '@memberjunction/ng-ui-components';\n\nimport { EntityPermissionsModule } from '@memberjunction/ng-entity-permissions';\nimport { EntityFormDialogModule } from '@memberjunction/ng-entity-form-dialog';\nimport { SimpleRecordListModule } from '@memberjunction/ng-simple-record-list';\nimport { JoinGridModule } from '@memberjunction/ng-join-grid';\nimport { CodeEditorModule } from '@memberjunction/ng-code-editor';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\n\n// Shared module\nimport { SharedSettingsModule } from './shared/shared-settings.module';\n\n// Main settings container\nimport { SettingsComponent } from './settings/settings.component';\n\n// User-facing components\nimport { UserProfileSettingsComponent } from './user-profile-settings/user-profile-settings.component';\nimport { UserAppConfigComponent } from './user-app-config/user-app-config.component';\nimport { NotificationPreferencesComponent } from './notification-preferences/notification-preferences.component';\n\n// New user settings components\nimport { GeneralSettingsComponent } from './general-settings/general-settings.component';\nimport { AccountInfoComponent } from './account-info/account-info.component';\nimport { ApplicationSettingsComponent } from './application-settings/application-settings.component';\nimport { AppearanceSettingsComponent } from './appearance-settings/appearance-settings.component';\n\n// Admin components (used by Admin app dashboards)\nimport { SqlLoggingComponent } from './sql-logging/sql-logging.component';\nimport { UserManagementComponent } from './user-management/user-management.component';\nimport { RoleManagementComponent } from './role-management/role-management.component';\nimport { ApplicationManagementComponent } from './application-management/application-management.component';\nimport { EntityPermissionsComponent } from './entity-permissions/entity-permissions.component';\n\n// Admin dialog components\nimport { RoleDialogComponent } from './role-management/role-dialog/role-dialog.component';\nimport { UserDialogComponent } from './user-management/user-dialog/user-dialog.component';\nimport { PermissionDialogComponent } from './entity-permissions/permission-dialog/permission-dialog.component';\nimport { ApplicationDialogComponent } from './application-management/application-dialog/application-dialog.component';\n\n@NgModule({\n declarations: [\n // Main settings container\n SettingsComponent,\n // User-facing components\n UserProfileSettingsComponent,\n UserAppConfigComponent,\n NotificationPreferencesComponent,\n // New user settings components\n GeneralSettingsComponent,\n AccountInfoComponent,\n ApplicationSettingsComponent,\n AppearanceSettingsComponent,\n // Admin components (used by Admin app dashboards)\n SqlLoggingComponent,\n UserManagementComponent,\n RoleManagementComponent,\n ApplicationManagementComponent,\n EntityPermissionsComponent,\n // Admin dialog components\n RoleDialogComponent,\n UserDialogComponent,\n PermissionDialogComponent,\n ApplicationDialogComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n EntityPermissionsModule,\n EntityFormDialogModule,\n SimpleRecordListModule,\n JoinGridModule,\n CodeEditorModule,\n SharedSettingsModule,\n SharedGenericModule,\n MJButtonDirective\n ],\n exports: [\n // Main settings container\n SettingsComponent,\n // User-facing components\n UserProfileSettingsComponent,\n UserAppConfigComponent,\n NotificationPreferencesComponent,\n // New user settings components\n GeneralSettingsComponent,\n AccountInfoComponent,\n ApplicationSettingsComponent,\n AppearanceSettingsComponent,\n // Admin components (used by Admin app dashboards)\n SqlLoggingComponent,\n UserManagementComponent,\n RoleManagementComponent,\n ApplicationManagementComponent,\n EntityPermissionsComponent,\n // Admin dialog components\n RoleDialogComponent,\n UserDialogComponent,\n PermissionDialogComponent,\n ApplicationDialogComponent\n ]\n})\nexport class ExplorerSettingsModule { }\n"]}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport {\n MJButtonDirective,\n MJPageHeaderInteriorComponent,\n MJPageBodyInteriorComponent,\n MJPageSearchComponent,\n MJFilterPopoverComponent,\n MJFilterPanelComponent,\n MJFilterChipComponent,\n MJRefreshButtonComponent,\n MJStatBadgeComponent,\n MJViewToggleComponent\n} from '@memberjunction/ng-ui-components';\n\nimport { EntityPermissionsModule } from '@memberjunction/ng-entity-permissions';\nimport { EntityFormDialogModule } from '@memberjunction/ng-entity-form-dialog';\nimport { SimpleRecordListModule } from '@memberjunction/ng-simple-record-list';\nimport { JoinGridModule } from '@memberjunction/ng-join-grid';\nimport { CodeEditorModule } from '@memberjunction/ng-code-editor';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\n\n// Shared module\nimport { SharedSettingsModule } from './shared/shared-settings.module';\n\n// Main settings container\nimport { SettingsComponent } from './settings/settings.component';\n\n// User-facing components\nimport { UserProfileSettingsComponent } from './user-profile-settings/user-profile-settings.component';\nimport { UserAppConfigComponent } from './user-app-config/user-app-config.component';\nimport { NotificationPreferencesComponent } from './notification-preferences/notification-preferences.component';\n\n// New user settings components\nimport { GeneralSettingsComponent } from './general-settings/general-settings.component';\nimport { AccountInfoComponent } from './account-info/account-info.component';\nimport { ApplicationSettingsComponent } from './application-settings/application-settings.component';\nimport { AppearanceSettingsComponent } from './appearance-settings/appearance-settings.component';\n\n// Admin components (used by Admin app dashboards)\nimport { SqlLoggingComponent } from './sql-logging/sql-logging.component';\nimport { UserManagementComponent } from './user-management/user-management.component';\nimport { RoleManagementComponent } from './role-management/role-management.component';\nimport { ApplicationManagementComponent } from './application-management/application-management.component';\nimport { EntityPermissionsComponent } from './entity-permissions/entity-permissions.component';\n\n// Admin dialog components\nimport { RoleDialogComponent } from './role-management/role-dialog/role-dialog.component';\nimport { UserDialogComponent } from './user-management/user-dialog/user-dialog.component';\nimport { PermissionDialogComponent } from './entity-permissions/permission-dialog/permission-dialog.component';\nimport { ApplicationDialogComponent } from './application-management/application-dialog/application-dialog.component';\n\n@NgModule({\n declarations: [\n // Main settings container\n SettingsComponent,\n // User-facing components\n UserProfileSettingsComponent,\n UserAppConfigComponent,\n NotificationPreferencesComponent,\n // New user settings components\n GeneralSettingsComponent,\n AccountInfoComponent,\n ApplicationSettingsComponent,\n AppearanceSettingsComponent,\n // Admin components (used by Admin app dashboards)\n SqlLoggingComponent,\n UserManagementComponent,\n RoleManagementComponent,\n ApplicationManagementComponent,\n EntityPermissionsComponent,\n // Admin dialog components\n RoleDialogComponent,\n UserDialogComponent,\n PermissionDialogComponent,\n ApplicationDialogComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n DragDropModule,\n EntityPermissionsModule,\n EntityFormDialogModule,\n SimpleRecordListModule,\n JoinGridModule,\n CodeEditorModule,\n SharedSettingsModule,\n SharedGenericModule,\n MJButtonDirective,\n MJPageHeaderInteriorComponent,\n MJPageBodyInteriorComponent,\n MJPageSearchComponent,\n MJFilterPopoverComponent,\n MJFilterPanelComponent,\n MJFilterChipComponent,\n MJRefreshButtonComponent,\n MJStatBadgeComponent,\n MJViewToggleComponent\n ],\n exports: [\n // Main settings container\n SettingsComponent,\n // User-facing components\n UserProfileSettingsComponent,\n UserAppConfigComponent,\n NotificationPreferencesComponent,\n // New user settings components\n GeneralSettingsComponent,\n AccountInfoComponent,\n ApplicationSettingsComponent,\n AppearanceSettingsComponent,\n // Admin components (used by Admin app dashboards)\n SqlLoggingComponent,\n UserManagementComponent,\n RoleManagementComponent,\n ApplicationManagementComponent,\n EntityPermissionsComponent,\n // Admin dialog components\n RoleDialogComponent,\n UserDialogComponent,\n PermissionDialogComponent,\n ApplicationDialogComponent\n ]\n})\nexport class ExplorerSettingsModule { }\n"]}
@@ -29,7 +29,6 @@ export declare class RoleManagementComponent extends BaseDashboard implements On
29
29
  showCreateDialog: boolean;
30
30
  showEditDialog: boolean;
31
31
  showDeleteConfirm: boolean;
32
- showMobileFilters: boolean;
33
32
  expandedRoleId: string | null;
34
33
  rolePermissions: Map<string, string[]>;
35
34
  protected destroy$: Subject<void>;
@@ -45,7 +44,6 @@ export declare class RoleManagementComponent extends BaseDashboard implements On
45
44
  private applyFilters;
46
45
  private calculateStats;
47
46
  isSystemRole(role: MJRoleEntity): boolean;
48
- onSearchChange(event: Event): void;
49
47
  onTypeFilterChange(type: 'all' | 'system' | 'custom'): void;
50
48
  updateFilter(partial: Partial<FilterOptions>): void;
51
49
  toggleRoleExpansion(roleId: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"role-management.component.d.ts","sourceRoot":"","sources":["../../../src/lib/role-management/role-management.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;;AAEvF,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAOa,uBAAwB,SAAQ,aAAc,YAAW,SAAS;IAsCjE,OAAO,CAAC,GAAG;IAAqB,OAAO,CAAC,MAAM;IApCnD,KAAK,EAAE,YAAY,EAAE,CAAM;IAC3B,aAAa,EAAE,YAAY,EAAE,CAAM;IACnC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAQ;IACzC,SAAS,UAAS;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,cAAc,UAAS;IACvB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAG7C,KAAK,EAAE,SAAS,CAKrB;IAGK,QAAQ,iCAGZ;IAGI,gBAAgB,UAAS;IACzB,cAAc,UAAS;IACvB,iBAAiB,UAAS;IAC1B,iBAAiB,UAAS;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAa;IAE1D,UAAmB,QAAQ,gBAAuB;IAClD,OAAO,KAAK,QAAQ,GAAiC;gBACjC,GAAG,EAAE,iBAAiB,EAAU,MAAM,EAAE,MAAM;IAI5D,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B,SAAS,CAAC,QAAQ,IAAI,IAAI;IAIjB,WAAW,IAAI,IAAI;IAMf,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAsB/B,SAAS;IAWvB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;IAWf,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAOzC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKlC,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAI3D,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAOnD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,aAAa,IAAI,IAAI;IAOrB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAQlC,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BjC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAOvC,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI5C,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI5C,WAAW,IAAI,IAAI;IAInB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;yCA/O9C,uBAAuB;2CAAvB,uBAAuB;CAwPnC"}
1
+ {"version":3,"file":"role-management.component.d.ts","sourceRoot":"","sources":["../../../src/lib/role-management/role-management.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;;AAEvF,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAOa,uBAAwB,SAAQ,aAAc,YAAW,SAAS;IAqCjE,OAAO,CAAC,GAAG;IAAqB,OAAO,CAAC,MAAM;IAnCnD,KAAK,EAAE,YAAY,EAAE,CAAM;IAC3B,aAAa,EAAE,YAAY,EAAE,CAAM;IACnC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAQ;IACzC,SAAS,UAAS;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,cAAc,UAAS;IACvB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAG7C,KAAK,EAAE,SAAS,CAKrB;IAGK,QAAQ,iCAGZ;IAGI,gBAAgB,UAAS;IACzB,cAAc,UAAS;IACvB,iBAAiB,UAAS;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGrC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAa;IAE1D,UAAmB,QAAQ,gBAAuB;IAClD,OAAO,KAAK,QAAQ,GAAiC;gBACjC,GAAG,EAAE,iBAAiB,EAAU,MAAM,EAAE,MAAM;IAI5D,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjE,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B,SAAS,CAAC,QAAQ,IAAI,IAAI;IAIjB,WAAW,IAAI,IAAI;IAMf,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAsB/B,SAAS;IAWvB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,cAAc;IAWf,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAOzC,kBAAkB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAI3D,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAanD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC,aAAa,IAAI,IAAI;IAOrB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAQlC,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BjC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAOvC,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI5C,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI5C,WAAW,IAAI,IAAI;IAInB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;yCA/O9C,uBAAuB;2CAAvB,uBAAuB;CAwPnC"}