@memberjunction/ng-explorer-settings 6.2.0-edge.0 → 6.2.0-edge.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.
- package/dist/lib/account-info/account-info.component.d.ts +1 -1
- package/dist/lib/account-info/account-info.component.js +2 -2
- package/dist/lib/account-info/account-info.component.js.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts +92 -10
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.js +222 -76
- package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
- package/dist/lib/application-management/application-management.component.d.ts +92 -10
- package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-management.component.js +229 -65
- package/dist/lib/application-management/application-management.component.js.map +1 -1
- package/dist/lib/application-settings/application-settings.component.d.ts +4 -4
- package/dist/lib/application-settings/application-settings.component.js +10 -10
- package/dist/lib/application-settings/application-settings.component.js.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts +88 -10
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.js +219 -63
- package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +44 -6
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +117 -43
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.d.ts +25 -3
- package/dist/lib/notification-preferences/notification-preferences.component.d.ts.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.js +62 -18
- package/dist/lib/notification-preferences/notification-preferences.component.js.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +32 -4
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.js +84 -30
- package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
- package/dist/lib/role-management/role-management-agent-context.d.ts +12 -4
- package/dist/lib/role-management/role-management-agent-context.d.ts.map +1 -1
- package/dist/lib/role-management/role-management-agent-context.js +26 -10
- package/dist/lib/role-management/role-management-agent-context.js.map +1 -1
- package/dist/lib/role-management/role-management.component.d.ts +95 -11
- package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-management.component.js +259 -91
- package/dist/lib/role-management/role-management.component.js.map +1 -1
- package/dist/lib/settings/settings.component.d.ts +87 -11
- package/dist/lib/settings/settings.component.d.ts.map +1 -1
- package/dist/lib/settings/settings.component.js +211 -65
- package/dist/lib/settings/settings.component.js.map +1 -1
- package/dist/lib/shared/settings-card.component.d.ts +24 -4
- package/dist/lib/shared/settings-card.component.d.ts.map +1 -1
- package/dist/lib/shared/settings-card.component.js +46 -6
- package/dist/lib/shared/settings-card.component.js.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.d.ts +172 -18
- package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.js +320 -108
- package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config-content.component.js +3 -3
- package/dist/lib/user-app-config/user-app-config-content.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config-reorder.d.ts +4 -0
- package/dist/lib/user-app-config/user-app-config-reorder.d.ts.map +1 -1
- package/dist/lib/user-app-config/user-app-config-reorder.js +11 -3
- package/dist/lib/user-app-config/user-app-config-reorder.js.map +1 -1
- package/dist/lib/user-management/transaction-group-refusals.d.ts +4 -2
- package/dist/lib/user-management/transaction-group-refusals.d.ts.map +1 -1
- package/dist/lib/user-management/transaction-group-refusals.js +7 -3
- package/dist/lib/user-management/transaction-group-refusals.js.map +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +44 -6
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.js +121 -47
- package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
- package/dist/lib/user-management/user-management-agent-context.d.ts +10 -0
- package/dist/lib/user-management/user-management-agent-context.d.ts.map +1 -1
- package/dist/lib/user-management/user-management-agent-context.js +26 -6
- package/dist/lib/user-management/user-management-agent-context.js.map +1 -1
- package/dist/lib/user-management/user-management.component.d.ts +174 -16
- package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-management.component.js +480 -171
- package/dist/lib/user-management/user-management.component.js.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts +97 -15
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.js +280 -116
- package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role-management.component.js","sourceRoot":"","sources":["../../../src/lib/role-management/role-management.component.ts","../../../src/lib/role-management/role-management.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, CompositeKey } from '@memberjunction/core';\nimport { ResourceData, MJRoleEntity, MJEntityPermissionEntity } from '@memberjunction/core-entities';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\nimport { RoleDialogData, RoleDialogResult } from './role-dialog/role-dialog.component';\nimport {\n buildRoleManagementAgentContext,\n isValidRoleTypeFilter,\n resolveRoleByIDOrName,\n RoleManagementAgentContextInput,\n RolePermissionSummary,\n} from './role-management-agent-context';\n\ninterface RoleStats {\n totalRoles: number;\n systemRoles: number;\n customRoles: number;\n activeRoles: number;\n}\n\ninterface FilterOptions {\n type: 'all' | 'system' | 'custom';\n search: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-role-management',\n templateUrl: './role-management.component.html',\n styleUrls: ['../shared/styles/_admin-patterns.css', './role-management.component.css']\n})\n@RegisterClass(BaseDashboard, 'RoleManagement')\nexport class RoleManagementComponent extends BaseDashboard implements OnDestroy {\n // State management\n public roles: MJRoleEntity[] = [];\n public filteredRoles: MJRoleEntity[] = [];\n public selectedRole: MJRoleEntity | null = null;\n public isLoading = false;\n public error: string | null = null;\n\n // Dialog state\n public showRoleDialog = false;\n public roleDialogData: RoleDialogData | null = null;\n\n // Stats\n public stats: RoleStats = {\n totalRoles: 0,\n systemRoles: 0,\n customRoles: 0,\n activeRoles: 0\n };\n\n // Filters\n public filters$ = new BehaviorSubject<FilterOptions>({\n type: 'all',\n search: ''\n });\n\n // UI State\n public showCreateDialog = false;\n public showEditDialog = false;\n public showDeleteConfirm = false;\n public expandedRoleId: string | null = null;\n\n // Role permissions (simplified view)\n public rolePermissions: Map<string, string[]> = new Map();\n\n // Read-only entity-permission summary per role id (lazily loaded on selection),\n // used only to surface a non-sensitive count summary to the agent context.\n private permissionSummaryCache = new Map<string, RolePermissionSummary>();\n private selectedRolePermissionSummary: RolePermissionSummary | null = null;\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 \"Role Management\"\n }\n\n protected initDashboard(): void {\n this.setupFilterSubscription();\n this.registerAgentClientTools();\n }\n\n protected loadData(): void {\n this.loadInitialData();\n }\n\n // ================================================================\n // AI Agent Context & Client Tools\n //\n // 🚨 SAFETY BOUNDARY — READ-ONLY / GOVERNANCE SURFACE 🚨\n // Role Management is a security-sensitive admin surface. The agent context\n // and client tools registered here are strictly READ-ONLY / navigational:\n // type filter, free-text search, SELECTING a role (view, with a read-only\n // permission-count summary), clearing filters, refreshing, and navigating to\n // a role's record for viewing. The mutating operations on this component —\n // create/edit/delete roles — AND any permission-grant/revoke surface are\n // DELIBERATELY NOT exposed to the agent; they remain human-initiated. The\n // permission summary published here is COUNTS ONLY (how many entities the role\n // can read/create/update/delete) — never a grant control. Context exposes only\n // counts, active filter selection, and on-screen display names.\n // ================================================================\n\n /**\n * Publish the current role-management state to the AI agent. Re-invoked on\n * every meaningful state change (data load, filter, selection). Shaped by the\n * pure {@link buildRoleManagementAgentContext} helper (unit-tested in isolation).\n */\n private publishAgentContext(): void {\n const selected = this.expandedRoleId\n ? this.roles.find(r => UUIDsEqual(r.ID, this.expandedRoleId!)) ?? null\n : null;\n const input: RoleManagementAgentContextInput = {\n TotalRoleCount: this.roles.length,\n FilteredRoleCount: this.filteredRoles.length,\n SystemRoleCount: this.stats.systemRoles,\n CustomRoleCount: this.stats.customRoles,\n TypeFilter: this.filters$.value.type,\n SearchText: this.filters$.value.search,\n SelectedRoleId: selected?.ID ?? null,\n SelectedRoleName: selected?.Name ?? null,\n VisibleRoleNames: this.filteredRoles.map(r => r.Name ?? '').filter(n => n !== ''),\n SelectedRolePermissions: selected ? this.selectedRolePermissionSummary : null,\n };\n this.navigationService.SetAgentContext(this, buildRoleManagementAgentContext(input));\n }\n\n /**\n * Register the read-only / navigational client tools the agent may invoke.\n * Every Handler is tolerant: validates input and returns\n * `{ Success: false, ErrorMessage }` rather than throwing.\n */\n private registerAgentClientTools(): void {\n this.navigationService.SetAgentClientTools(this, [\n {\n Name: 'FilterRolesByType',\n Description: 'Filter the role list by type. Valid values: all, system, custom.',\n ParameterSchema: { type: 'object', properties: { type: { type: 'string', enum: ['all', 'system', 'custom'] } }, required: ['type'] },\n Handler: async (params: Record<string, unknown>) => this.handleFilterByTypeTool(params),\n },\n {\n Name: 'SearchRoles',\n Description: 'Free-text search across role name and description.',\n ParameterSchema: { type: 'object', properties: { searchText: { type: 'string' } }, required: ['searchText'] },\n Handler: async (params: Record<string, unknown>) => this.handleSearchTool(params),\n },\n {\n Name: 'SelectRole',\n Description: 'Select a role for VIEWING by ID or name (exact ID → exact name → partial match). Read-only — does not edit the role. Loads a read-only permission-count summary into SelectedRolePermissions.',\n ParameterSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] },\n Handler: async (params: Record<string, unknown>) => this.handleSelectRoleTool(params),\n },\n {\n Name: 'NavigateToRoleRecord',\n Description: 'Open the record for a role (by ID or name) in a tab for VIEWING. Read-only navigation — does not edit the role.',\n ParameterSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] },\n Handler: async (params: Record<string, unknown>) => this.handleNavigateToRoleRecordTool(params),\n },\n {\n Name: 'ClearRoleFilters',\n Description: 'Clear all role filters (type and search) and show the full list.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => this.handleClearFiltersTool(),\n },\n {\n Name: 'RefreshRoles',\n Description: 'Reload the role list from the server. Read-only — does not mutate any data.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => this.handleRefreshTool(),\n },\n ]);\n }\n\n private handleFilterByTypeTool(params: Record<string, unknown>): { Success: boolean; ErrorMessage?: string } {\n const type = params?.['type'];\n if (!isValidRoleTypeFilter(type)) {\n return { Success: false, ErrorMessage: `Invalid type \"${String(type)}\". Expected one of: all, system, custom.` };\n }\n this.onTypeFilterChange(type);\n this.publishAgentContext();\n return { Success: true };\n }\n\n private handleSearchTool(params: Record<string, unknown>): { Success: boolean; ErrorMessage?: string } {\n const searchText = params?.['searchText'];\n if (typeof searchText !== 'string') {\n return { Success: false, ErrorMessage: 'searchText must be a string.' };\n }\n this.updateFilter({ search: searchText });\n this.publishAgentContext();\n return { Success: true };\n }\n\n private async handleSelectRoleTool(params: Record<string, unknown>): Promise<{ Success: boolean; ErrorMessage?: string }> {\n const raw = String(params?.['role'] ?? '');\n const resolved = resolveRoleByIDOrName(raw, this.roles.map(r => ({ ID: r.ID, Name: r.Name ?? '' })));\n if (!resolved.ok) {\n return { Success: false, ErrorMessage: resolved.error };\n }\n this.expandedRoleId = resolved.match.ID;\n this.selectedRolePermissionSummary = await this.loadPermissionSummary(resolved.match.ID);\n this.cdr.markForCheck();\n this.publishAgentContext();\n return { Success: true };\n }\n\n private handleNavigateToRoleRecordTool(params: Record<string, unknown>): { Success: boolean; ErrorMessage?: string } {\n const raw = String(params?.['role'] ?? '');\n const resolved = resolveRoleByIDOrName(raw, this.roles.map(r => ({ ID: r.ID, Name: r.Name ?? '' })));\n if (!resolved.ok) {\n return { Success: false, ErrorMessage: resolved.error };\n }\n this.navigationService.OpenEntityRecord('MJ: Roles', CompositeKey.FromID(resolved.match.ID));\n return { Success: true };\n }\n\n /**\n * Lazily load and cache the READ-ONLY entity-permission count summary for a role.\n * Surfaces only how broadly the role is granted access — never a grant control.\n */\n private async loadPermissionSummary(roleId: string): Promise<RolePermissionSummary> {\n const cached = this.permissionSummaryCache.get(roleId);\n if (cached) {\n return cached;\n }\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJEntityPermissionEntity>({\n EntityName: 'MJ: Entity Permissions',\n ExtraFilter: `RoleID='${roleId.replace(/'/g, \"''\")}'`,\n ResultType: 'entity_object'\n });\n const rows = result.Success ? result.Results : [];\n const summary: RolePermissionSummary = {\n EntityCount: rows.length,\n ReadCount: rows.filter(p => p.CanRead).length,\n CreateCount: rows.filter(p => p.CanCreate).length,\n UpdateCount: rows.filter(p => p.CanUpdate).length,\n DeleteCount: rows.filter(p => p.CanDelete).length,\n };\n this.permissionSummaryCache.set(roleId, summary);\n return summary;\n }\n\n private handleClearFiltersTool(): { Success: boolean } {\n this.resetAllFiltersAndSearch();\n this.publishAgentContext();\n return { Success: true };\n }\n\n private async handleRefreshTool(): Promise<{ Success: boolean; ErrorMessage?: string }> {\n try {\n this.permissionSummaryCache.clear();\n this.selectedRolePermissionSummary = null;\n await this.loadInitialData();\n this.publishAgentContext();\n return { Success: true };\n } catch (e) {\n return { Success: false, ErrorMessage: e instanceof Error ? e.message : 'Refresh failed.' };\n }\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 roles\n const roles = await this.loadRoles();\n this.roles = roles;\n this.calculateStats();\n this.applyFilters();\n \n } catch (error) {\n console.error('Error loading role data:', error);\n this.error = 'Failed to load role data. Please try again.';\n } finally {\n this.ngZone.run(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n this.publishAgentContext();\n });\n }\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 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 this.publishAgentContext();\n });\n }\n\n private applyFilters(): void {\n const filters = this.filters$.value;\n let filtered = [...this.roles];\n \n // Apply type filter\n if (filters.type !== 'all') {\n filtered = filtered.filter(role => {\n const isSystem = this.isSystemRole(role);\n return filters.type === 'system' ? isSystem : !isSystem;\n });\n }\n \n // Apply search filter\n if (filters.search) {\n const searchLower = filters.search.toLowerCase();\n filtered = filtered.filter(role =>\n role.Name?.toLowerCase().includes(searchLower) ||\n role.Description?.toLowerCase().includes(searchLower)\n );\n }\n \n this.filteredRoles = filtered;\n }\n \n private calculateStats(): void {\n const systemRoles = this.roles.filter(r => this.isSystemRole(r));\n \n this.stats = {\n totalRoles: this.roles.length,\n systemRoles: systemRoles.length,\n customRoles: this.roles.length - systemRoles.length,\n activeRoles: this.roles.length // All roles are considered active for now\n };\n }\n \n public isSystemRole(role: MJRoleEntity): boolean {\n // System roles typically have certain naming patterns or flags\n const systemRoleNames = ['Administrator', 'User', 'Guest', 'Developer'];\n return systemRoleNames.includes(role.Name || '');\n }\n \n // Public methods for template\n public onTypeFilterChange(type: 'all' | 'system' | 'custom'): void {\n this.updateFilter({ type });\n }\n \n public updateFilter(partial: Partial<FilterOptions>): void {\n this.filters$.next({\n ...this.filters$.value,\n ...partial\n });\n // Discrete changes (chips) apply immediately. Text search still goes\n // through the 300ms debounce in setupFilterSubscription.\n if (!('search' in partial)) {\n this.applyFilters();\n this.cdr.markForCheck();\n }\n }\n\n // -- Concise chrome: one Filter popover (Type) + applied-filter chips -------\n\n public get filterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'type',\n type: 'chips',\n label: 'Type',\n chipOptions: [\n { text: 'All', value: 'all' },\n { text: 'System', value: 'system' },\n { text: 'Custom', value: 'custom' },\n ],\n },\n ];\n }\n\n public get filterValues(): Record<string, unknown> {\n return { type: this.filters$.value.type };\n }\n\n /** Total active filters (Type) — drives the Filter button badge. */\n public get TotalActiveFilterCount(): number {\n return this.filters$.value.type !== 'all' ? 1 : 0;\n }\n\n public onFilterPanelChange(values: Record<string, unknown>): void {\n if ('type' in values) {\n this.updateFilter({ type: (values['type'] as FilterOptions['type']) || 'all' });\n }\n }\n\n /** Clear all filters (Type); search persists. */\n public clearAllAppliedFilters(): void {\n this.updateFilter({ type: 'all' });\n }\n\n /** True when search and/or panel filters are narrowing the list — gates the\n * no-results empty-state \"Reset filters\" CTA. */\n public get IsListNarrowed(): boolean {\n return this.filters$.value.search !== '' || this.TotalActiveFilterCount > 0;\n }\n\n /** Reset everything narrowing the list (search + Type) and refresh\n * immediately. Wired to the no-results empty-state CTA. Unlike\n * clearAllAppliedFilters(), this also clears the search box. */\n public resetAllFiltersAndSearch(): void {\n this.filters$.next({ type: 'all', search: '' });\n this.applyFilters();\n this.cdr.markForCheck();\n }\n \n public toggleRoleExpansion(roleId: string): void {\n this.expandedRoleId = this.expandedRoleId === roleId ? null : roleId;\n if (this.expandedRoleId) {\n // Lazy-load the read-only permission summary so the agent context reflects\n // the user's current selection; fire-and-forget (re-publishes on completion).\n void this.loadPermissionSummary(this.expandedRoleId).then(summary => {\n this.selectedRolePermissionSummary = summary;\n this.publishAgentContext();\n });\n } else {\n this.selectedRolePermissionSummary = null;\n }\n this.publishAgentContext();\n }\n \n public isRoleExpanded(roleId: string): boolean {\n return this.expandedRoleId === roleId;\n }\n \n public createNewRole(): void {\n this.roleDialogData = {\n mode: 'create'\n };\n this.showRoleDialog = true;\n }\n \n public editRole(role: MJRoleEntity): void {\n this.roleDialogData = {\n role: role,\n mode: 'edit'\n };\n this.showRoleDialog = true;\n }\n \n public confirmDeleteRole(role: MJRoleEntity): void {\n this.selectedRole = role;\n this.showDeleteConfirm = true;\n }\n \n public async deleteRole(): Promise<void> {\n if (!this.selectedRole) return;\n \n try {\n // Load role entity to delete\n const role = await this.metadata.GetEntityObject<MJRoleEntity>('MJ: Roles');\n const loadResult = await role.Load(this.selectedRole.ID);\n \n if (loadResult) {\n const deleteResult = await role.Delete();\n if (deleteResult) {\n this.showDeleteConfirm = false;\n this.selectedRole = null;\n await this.loadInitialData();\n } else {\n throw new Error(role.LatestResult?.Message || 'Failed to delete role');\n }\n } else {\n throw new Error('Role not found or permission denied');\n }\n } catch (error: unknown) {\n console.error('Error deleting role:', error);\n this.ngZone.run(() => {\n this.error = error instanceof Error ? error.message : 'Failed to delete role';\n this.cdr.markForCheck();\n });\n }\n }\n \n public getRoleIcon(role: MJRoleEntity): string {\n if (this.isSystemRole(role)) {\n return 'fa-shield-halved';\n }\n return 'fa-user-tag';\n }\n \n public getRoleTypeLabel(role: MJRoleEntity): string {\n return this.isSystemRole(role) ? 'System' : 'Custom';\n }\n \n public getRoleTypeClass(role: MJRoleEntity): string {\n return this.isSystemRole(role) ? 'badge-system' : 'badge-custom';\n }\n \n public refreshData(): void {\n this.loadInitialData();\n }\n\n public onRoleDialogResult(result: RoleDialogResult): void {\n this.showRoleDialog = false;\n this.roleDialogData = null;\n \n if (result.action === 'save') {\n // Refresh the role list to show changes\n this.loadInitialData();\n }\n }\n}","<!--\n Interior chrome — <mj-page-header-interior> is the body-level sibling of\n <mj-page-header>. Same slot conventions ([toolbar] / [meta] / [actions]);\n different visual shape (single-row card). See Section 10 of\n explorer-chrome-conventions.\n-->\n<mj-page-header-interior\n AriaLabel=\"Filter roles\"\n Title=\"Roles\"\n Subtitle=\"Define system and custom roles for permissions\">\n <!-- X-of-Y filtered count earns its meta spot per chrome conventions §2.\n Partition badges (system/custom) stay dropped — they mirror the\n System/Custom filter chips in [toolbar]. -->\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredRoles.length\"\n [Total]=\"roles.length\"\n Label=\"roles\">\n </mj-stat-badge>\n </div>\n <div toolbar>\n <!-- Concise-chrome control bar: search · Filter. Type lives behind the one\n Filter button; applied filters show as removable chips below the card.\n On mobile the popover docks as a bottom sheet. -->\n <mj-page-search\n Placeholder=\"Search roles by name or description...\"\n [Value]=\"filters$.value.search\"\n (ValueChange)=\"updateFilter({ search: $event })\">\n </mj-page-search>\n <mj-filter-popover\n Label=\"Filters\"\n Icon=\"fa-solid fa-filter\"\n [ActiveCount]=\"TotalActiveFilterCount\"\n [ShowClearAll]=\"TotalActiveFilterCount > 0\"\n (ClearAllRequested)=\"clearAllAppliedFilters()\">\n <mj-filter-panel\n [Fields]=\"filterFields\"\n [Values]=\"filterValues\"\n (ValuesChange)=\"onFilterPanelChange($event)\"\n (Reset)=\"clearAllAppliedFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refreshData()\"></mj-refresh-button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewRole()\" aria-label=\"Add new role\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Role</span>\n </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 roles...\" 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 mjButton variant=\"primary\" (click)=\"loadInitialData()\" aria-label=\"Retry loading roles\">\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n <!-- Roles List -->\n @if (!isLoading && !error) {\n <div class=\"roles-list\" role=\"list\" aria-label=\"Roles list\">\n @for (role of filteredRoles; track role.ID) {\n <div\n class=\"role-card\"\n [class.expanded]=\"isRoleExpanded(role.ID)\"\n role=\"listitem\"\n [attr.aria-expanded]=\"isRoleExpanded(role.ID)\"\n >\n <div\n class=\"role-header\"\n (click)=\"toggleRoleExpansion(role.ID)\"\n tabindex=\"0\"\n (keydown.enter)=\"toggleRoleExpansion(role.ID)\"\n (keydown.space)=\"toggleRoleExpansion(role.ID); $event.preventDefault()\"\n role=\"button\"\n [attr.aria-label]=\"'Toggle details for ' + role.Name\"\n >\n <div class=\"role-info\">\n <div class=\"role-icon-wrapper\" aria-hidden=\"true\">\n <i [class]=\"'fa-solid ' + getRoleIcon(role)\"></i>\n </div>\n <div class=\"role-details\">\n <h3 class=\"role-name\">{{ role.Name }}</h3>\n <p class=\"role-description\">{{ role.Description || 'No description available' }}</p>\n </div>\n </div>\n\n <div class=\"role-meta\">\n <span class=\"role-type-badge\" [class]=\"getRoleTypeClass(role)\">\n {{ getRoleTypeLabel(role) }}\n </span>\n <div class=\"role-actions\" (click)=\"$event.stopPropagation()\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editRole(role)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n </button>\n <button\n mjButton variant=\"danger\" size=\"sm\"\n (click)=\"confirmDeleteRole(role)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button class=\"expand-btn\" aria-label=\"Toggle details\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n @if (isRoleExpanded(role.ID)) {\n <div class=\"role-content\">\n <!-- Mobile-only actions bar -->\n <div class=\"mobile-actions-bar\" (click)=\"$event.stopPropagation()\">\n <span class=\"role-type-badge\" [class]=\"getRoleTypeClass(role)\">\n {{ getRoleTypeLabel(role) }}\n </span>\n <div class=\"mobile-action-buttons\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editRole(role)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n <span class=\"btn-label\">Edit</span>\n </button>\n <button\n mjButton variant=\"danger\" size=\"sm\"\n (click)=\"confirmDeleteRole(role)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n <span class=\"btn-label\">Delete</span>\n </button>\n </div>\n </div>\n\n <div class=\"role-stats\">\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-users\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Users:</span>\n <span class=\"stat-value\">0</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-calendar\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Created:</span>\n <span class=\"stat-value\">{{ role.__mj_CreatedAt | date:'short' }}</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-clock\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Updated:</span>\n <span class=\"stat-value\">{{ role.__mj_UpdatedAt | date:'short' }}</span>\n </div>\n </div>\n\n <div class=\"permissions-preview\">\n <h4 class=\"section-title\">\n <i class=\"fa-solid fa-key\" aria-hidden=\"true\"></i>\n Permissions Preview\n </h4>\n <p class=\"permissions-note\">Full permission management available in the Permissions tab</p>\n </div>\n </div>\n }\n </div>\n }\n\n @if (filteredRoles.length === 0) {\n <mj-empty-state\n [Variant]=\"IsListNarrowed ? 'no-results' : 'empty'\"\n Icon=\"fa-solid fa-user-tag\"\n Title=\"No roles found\"\n Message=\"Try adjusting your filters or create a new role\"\n [ActionText]=\"IsListNarrowed ? 'Reset filters' : ''\"\n ActionIcon=\"fa-solid fa-rotate-left\"\n (Action)=\"resetAllFiltersAndSearch()\" />\n }\n </div>\n }\n </mj-page-body-interior>\n\n <!-- Role Create/Edit Dialog -->\n <mj-role-dialog\n [data]=\"roleDialogData\"\n [visible]=\"showRoleDialog\"\n (result)=\"onRoleDialogResult($event)\">\n </mj-role-dialog>\n\n <!-- Delete Confirmation Dialog -->\n @if (showDeleteConfirm && selectedRole) {\n <div\n class=\"modal-backdrop\"\n (click)=\"showDeleteConfirm = false\"\n role=\"presentation\"\n >\n <div\n class=\"modal-dialog\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"delete-dialog-title\"\n aria-describedby=\"delete-dialog-desc\"\n >\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"delete-dialog-title\">\n <i class=\"fa-solid fa-exclamation-triangle text-danger\" aria-hidden=\"true\"></i>\n Confirm Delete\n </h3>\n <button\n class=\"modal-close\"\n (click)=\"showDeleteConfirm = false\"\n aria-label=\"Close dialog\"\n >\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"modal-body\" id=\"delete-dialog-desc\">\n <p>Are you sure you want to delete the role <strong>{{ selectedRole.Name }}</strong>?</p>\n <mj-alert Variant=\"warning\" Message=\"This will affect all users assigned to this role.\" />\n </div>\n <div class=\"modal-footer\">\n <!-- Primary action (Delete) on LEFT per MD3 design guide -->\n <button mjButton variant=\"danger\" (click)=\"deleteRole()\" [disabled]=\"isLoading\">\n @if (isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Deleting...\n } @else {\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n Delete Role\n }\n </button>\n <button mjButton (click)=\"showDeleteConfirm = false\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n"]}
|
|
1
|
+
{"version":3,"file":"role-management.component.js","sourceRoot":"","sources":["../../../src/lib/role-management/role-management.component.ts","../../../src/lib/role-management/role-management.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, CompositeKey } from '@memberjunction/core';\nimport { ResourceData, MJRoleEntity, MJEntityPermissionEntity } from '@memberjunction/core-entities';\nimport { BaseDashboard } from '@memberjunction/ng-shared';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { FilterFieldConfig } from '@memberjunction/ng-ui-components';\nimport { RoleDialogData, RoleDialogResult } from './role-dialog/role-dialog.component';\nimport {\n BuildRoleManagementAgentContext,\n IsValidRoleTypeFilter,\n ResolveRoleByIDOrName,\n RoleManagementAgentContextInput,\n RolePermissionSummary,\n} from './role-management-agent-context';\n\ninterface RoleStats {\n totalRoles: number;\n systemRoles: number;\n customRoles: number;\n activeRoles: number;\n}\n\ninterface FilterOptions {\n type: 'all' | 'system' | 'custom';\n search: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-role-management',\n templateUrl: './role-management.component.html',\n styleUrls: ['../shared/styles/_admin-patterns.css', './role-management.component.css']\n})\n@RegisterClass(BaseDashboard, 'RoleManagement')\nexport class RoleManagementComponent extends BaseDashboard implements OnDestroy {\n // State management\n public Roles: MJRoleEntity[] = [];\n\n /** @deprecated Use {@link Roles}. */\n public get roles(): MJRoleEntity[] {\n return this.Roles;\n }\n /** @deprecated Use {@link Roles}. */\n public set roles(value: MJRoleEntity[]) {\n this.Roles = value;\n }\n public FilteredRoles: MJRoleEntity[] = [];\n\n /** @deprecated Use {@link FilteredRoles}. */\n public get filteredRoles(): MJRoleEntity[] {\n return this.FilteredRoles;\n }\n /** @deprecated Use {@link FilteredRoles}. */\n public set filteredRoles(value: MJRoleEntity[]) {\n this.FilteredRoles = value;\n }\n public SelectedRole: MJRoleEntity | null = null;\n\n /** @deprecated Use {@link SelectedRole}. */\n public get selectedRole(): MJRoleEntity | null {\n return this.SelectedRole;\n }\n /** @deprecated Use {@link SelectedRole}. */\n public set selectedRole(value: MJRoleEntity | null) {\n this.SelectedRole = value;\n }\n public isLoading = false;\n public error: string | null = null;\n\n // Dialog state\n public ShowRoleDialog = false;\n\n /** @deprecated Use {@link ShowRoleDialog}. */\n public get showRoleDialog() {\n return this.ShowRoleDialog;\n }\n /** @deprecated Use {@link ShowRoleDialog}. */\n public set showRoleDialog(value) {\n this.ShowRoleDialog = value;\n }\n public RoleDialogData: RoleDialogData | null = null;\n\n /** @deprecated Use {@link RoleDialogData}. */\n public get roleDialogData(): RoleDialogData | null {\n return this.RoleDialogData;\n }\n /** @deprecated Use {@link RoleDialogData}. */\n public set roleDialogData(value: RoleDialogData | null) {\n this.RoleDialogData = value;\n }\n\n // Stats\n public Stats: RoleStats = {\n totalRoles: 0,\n systemRoles: 0,\n customRoles: 0,\n activeRoles: 0\n };\n\n /** @deprecated Use {@link Stats}. */\n public get stats(): RoleStats {\n return this.Stats;\n }\n /** @deprecated Use {@link Stats}. */\n public set stats(value: RoleStats) {\n this.Stats = value;\n }\n\n // Filters\n public Filters$ = new BehaviorSubject<FilterOptions>({\n type: 'all',\n search: ''\n });\n\n /** @deprecated Use {@link Filters$}. */\n public get filters$() {\n return this.Filters$;\n }\n /** @deprecated Use {@link Filters$}. */\n public set filters$(value) {\n this.Filters$ = value;\n }\n\n // UI State\n public showCreateDialog = false;\n public ShowEditDialog = false;\n\n /** @deprecated Use {@link ShowEditDialog}. */\n public get showEditDialog() {\n return this.ShowEditDialog;\n }\n /** @deprecated Use {@link ShowEditDialog}. */\n public set showEditDialog(value) {\n this.ShowEditDialog = value;\n }\n public ShowDeleteConfirm = false;\n\n /** @deprecated Use {@link ShowDeleteConfirm}. */\n public get showDeleteConfirm() {\n return this.ShowDeleteConfirm;\n }\n /** @deprecated Use {@link ShowDeleteConfirm}. */\n public set showDeleteConfirm(value) {\n this.ShowDeleteConfirm = value;\n }\n public ExpandedRoleId: string | null = null;\n\n /** @deprecated Use {@link ExpandedRoleId}. */\n public get expandedRoleId(): string | null {\n return this.ExpandedRoleId;\n }\n /** @deprecated Use {@link ExpandedRoleId}. */\n public set expandedRoleId(value: string | null) {\n this.ExpandedRoleId = value;\n }\n\n // Role permissions (simplified view)\n public RolePermissions: Map<string, string[]> = new Map();\n\n /** @deprecated Use {@link RolePermissions}. */\n public get rolePermissions(): Map<string, string[]> {\n return this.RolePermissions;\n }\n /** @deprecated Use {@link RolePermissions}. */\n public set rolePermissions(value: Map<string, string[]>) {\n this.RolePermissions = value;\n }\n\n // Read-only entity-permission summary per role id (lazily loaded on selection),\n // used only to surface a non-sensitive count summary to the agent context.\n private permissionSummaryCache = new Map<string, RolePermissionSummary>();\n private selectedRolePermissionSummary: RolePermissionSummary | null = null;\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 \"Role Management\"\n }\n\n protected initDashboard(): void {\n this.setupFilterSubscription();\n this.registerAgentClientTools();\n }\n\n protected loadData(): void {\n this.LoadInitialData();\n }\n\n // ================================================================\n // AI Agent Context & Client Tools\n //\n // 🚨 SAFETY BOUNDARY — READ-ONLY / GOVERNANCE SURFACE 🚨\n // Role Management is a security-sensitive admin surface. The agent context\n // and client tools registered here are strictly READ-ONLY / navigational:\n // type filter, free-text search, SELECTING a role (view, with a read-only\n // permission-count summary), clearing filters, refreshing, and navigating to\n // a role's record for viewing. The mutating operations on this component —\n // create/edit/delete roles — AND any permission-grant/revoke surface are\n // DELIBERATELY NOT exposed to the agent; they remain human-initiated. The\n // permission summary published here is COUNTS ONLY (how many entities the role\n // can read/create/update/delete) — never a grant control. Context exposes only\n // counts, active filter selection, and on-screen display names.\n // ================================================================\n\n /**\n * Publish the current role-management state to the AI agent. Re-invoked on\n * every meaningful state change (data load, filter, selection). Shaped by the\n * pure {@link buildRoleManagementAgentContext} helper (unit-tested in isolation).\n */\n private publishAgentContext(): void {\n const selected = this.ExpandedRoleId\n ? this.Roles.find(r => UUIDsEqual(r.ID, this.ExpandedRoleId!)) ?? null\n : null;\n const input: RoleManagementAgentContextInput = {\n TotalRoleCount: this.Roles.length,\n FilteredRoleCount: this.FilteredRoles.length,\n SystemRoleCount: this.Stats.systemRoles,\n CustomRoleCount: this.Stats.customRoles,\n TypeFilter: this.Filters$.value.type,\n SearchText: this.Filters$.value.search,\n SelectedRoleId: selected?.ID ?? null,\n SelectedRoleName: selected?.Name ?? null,\n VisibleRoleNames: this.FilteredRoles.map(r => r.Name ?? '').filter(n => n !== ''),\n SelectedRolePermissions: selected ? this.selectedRolePermissionSummary : null,\n };\n this.navigationService.SetAgentContext(this, BuildRoleManagementAgentContext(input));\n }\n\n /**\n * Register the read-only / navigational client tools the agent may invoke.\n * Every Handler is tolerant: validates input and returns\n * `{ Success: false, ErrorMessage }` rather than throwing.\n */\n private registerAgentClientTools(): void {\n this.navigationService.SetAgentClientTools(this, [\n {\n Name: 'FilterRolesByType',\n Description: 'Filter the role list by type. Valid values: all, system, custom.',\n ParameterSchema: { type: 'object', properties: { type: { type: 'string', enum: ['all', 'system', 'custom'] } }, required: ['type'] },\n Handler: async (params: Record<string, unknown>) => this.handleFilterByTypeTool(params),\n },\n {\n Name: 'SearchRoles',\n Description: 'Free-text search across role name and description.',\n ParameterSchema: { type: 'object', properties: { searchText: { type: 'string' } }, required: ['searchText'] },\n Handler: async (params: Record<string, unknown>) => this.handleSearchTool(params),\n },\n {\n Name: 'SelectRole',\n Description: 'Select a role for VIEWING by ID or name (exact ID → exact name → partial match). Read-only — does not edit the role. Loads a read-only permission-count summary into SelectedRolePermissions.',\n ParameterSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] },\n Handler: async (params: Record<string, unknown>) => this.handleSelectRoleTool(params),\n },\n {\n Name: 'NavigateToRoleRecord',\n Description: 'Open the record for a role (by ID or name) in a tab for VIEWING. Read-only navigation — does not edit the role.',\n ParameterSchema: { type: 'object', properties: { role: { type: 'string' } }, required: ['role'] },\n Handler: async (params: Record<string, unknown>) => this.handleNavigateToRoleRecordTool(params),\n },\n {\n Name: 'ClearRoleFilters',\n Description: 'Clear all role filters (type and search) and show the full list.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => this.handleClearFiltersTool(),\n },\n {\n Name: 'RefreshRoles',\n Description: 'Reload the role list from the server. Read-only — does not mutate any data.',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => this.handleRefreshTool(),\n },\n ]);\n }\n\n private handleFilterByTypeTool(params: Record<string, unknown>): { Success: boolean; ErrorMessage?: string } {\n const type = params?.['type'];\n if (!IsValidRoleTypeFilter(type)) {\n return { Success: false, ErrorMessage: `Invalid type \"${String(type)}\". Expected one of: all, system, custom.` };\n }\n this.OnTypeFilterChange(type);\n this.publishAgentContext();\n return { Success: true };\n }\n\n private handleSearchTool(params: Record<string, unknown>): { Success: boolean; ErrorMessage?: string } {\n const searchText = params?.['searchText'];\n if (typeof searchText !== 'string') {\n return { Success: false, ErrorMessage: 'searchText must be a string.' };\n }\n this.UpdateFilter({ search: searchText });\n this.publishAgentContext();\n return { Success: true };\n }\n\n private async handleSelectRoleTool(params: Record<string, unknown>): Promise<{ Success: boolean; ErrorMessage?: string }> {\n const raw = String(params?.['role'] ?? '');\n const resolved = ResolveRoleByIDOrName(raw, this.Roles.map(r => ({ ID: r.ID, Name: r.Name ?? '' })));\n if (!resolved.Ok) {\n return { Success: false, ErrorMessage: resolved.Error };\n }\n this.ExpandedRoleId = resolved.Match.ID;\n this.selectedRolePermissionSummary = await this.loadPermissionSummary(resolved.Match.ID);\n this.cdr.markForCheck();\n this.publishAgentContext();\n return { Success: true };\n }\n\n private handleNavigateToRoleRecordTool(params: Record<string, unknown>): { Success: boolean; ErrorMessage?: string } {\n const raw = String(params?.['role'] ?? '');\n const resolved = ResolveRoleByIDOrName(raw, this.Roles.map(r => ({ ID: r.ID, Name: r.Name ?? '' })));\n if (!resolved.Ok) {\n return { Success: false, ErrorMessage: resolved.Error };\n }\n this.navigationService.OpenEntityRecord('MJ: Roles', CompositeKey.FromID(resolved.Match.ID));\n return { Success: true };\n }\n\n /**\n * Lazily load and cache the READ-ONLY entity-permission count summary for a role.\n * Surfaces only how broadly the role is granted access — never a grant control.\n */\n private async loadPermissionSummary(roleId: string): Promise<RolePermissionSummary> {\n const cached = this.permissionSummaryCache.get(roleId);\n if (cached) {\n return cached;\n }\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJEntityPermissionEntity>({\n EntityName: 'MJ: Entity Permissions',\n ExtraFilter: `RoleID='${roleId.replace(/'/g, \"''\")}'`,\n ResultType: 'entity_object'\n });\n const rows = result.Success ? result.Results : [];\n const summary: RolePermissionSummary = {\n EntityCount: rows.length,\n ReadCount: rows.filter(p => p.CanRead).length,\n CreateCount: rows.filter(p => p.CanCreate).length,\n UpdateCount: rows.filter(p => p.CanUpdate).length,\n DeleteCount: rows.filter(p => p.CanDelete).length,\n };\n this.permissionSummaryCache.set(roleId, summary);\n return summary;\n }\n\n private handleClearFiltersTool(): { Success: boolean } {\n this.ResetAllFiltersAndSearch();\n this.publishAgentContext();\n return { Success: true };\n }\n\n private async handleRefreshTool(): Promise<{ Success: boolean; ErrorMessage?: string }> {\n try {\n this.permissionSummaryCache.clear();\n this.selectedRolePermissionSummary = null;\n await this.LoadInitialData();\n this.publishAgentContext();\n return { Success: true };\n } catch (e) {\n return { Success: false, ErrorMessage: e instanceof Error ? e.message : 'Refresh failed.' };\n }\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 roles\n const roles = await this.loadRoles();\n this.Roles = roles;\n this.calculateStats();\n this.applyFilters();\n \n } catch (error) {\n console.error('Error loading role data:', error);\n this.error = 'Failed to load role data. Please try again.';\n } finally {\n this.ngZone.run(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n this.publishAgentContext();\n });\n }\n }\n\n /** @deprecated Use {@link LoadInitialData}. */\n public async loadInitialData(): Promise<void> {\n return this.LoadInitialData();\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 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 this.publishAgentContext();\n });\n }\n\n private applyFilters(): void {\n const filters = this.Filters$.value;\n let filtered = [...this.Roles];\n \n // Apply type filter\n if (filters.type !== 'all') {\n filtered = filtered.filter(role => {\n const isSystem = this.IsSystemRole(role);\n return filters.type === 'system' ? isSystem : !isSystem;\n });\n }\n \n // Apply search filter\n if (filters.search) {\n const searchLower = filters.search.toLowerCase();\n filtered = filtered.filter(role =>\n role.Name?.toLowerCase().includes(searchLower) ||\n role.Description?.toLowerCase().includes(searchLower)\n );\n }\n \n this.FilteredRoles = filtered;\n }\n \n private calculateStats(): void {\n const systemRoles = this.Roles.filter(r => this.IsSystemRole(r));\n \n this.Stats = {\n totalRoles: this.Roles.length,\n systemRoles: systemRoles.length,\n customRoles: this.Roles.length - systemRoles.length,\n activeRoles: this.Roles.length // All roles are considered active for now\n };\n }\n \n public IsSystemRole(role: MJRoleEntity): boolean {\n // System roles typically have certain naming patterns or flags\n const systemRoleNames = ['Administrator', 'User', 'Guest', 'Developer'];\n return systemRoleNames.includes(role.Name || '');\n }\n\n /** @deprecated Use {@link IsSystemRole}. */\n public isSystemRole(role: MJRoleEntity): boolean {\n return this.IsSystemRole(role);\n }\n \n // Public methods for template\n public OnTypeFilterChange(type: 'all' | 'system' | 'custom'): void {\n this.UpdateFilter({ type });\n }\n\n /** @deprecated Use {@link OnTypeFilterChange}. */\n public onTypeFilterChange(type: 'all' | 'system' | 'custom'): void {\n return this.OnTypeFilterChange(type);\n }\n \n public UpdateFilter(partial: Partial<FilterOptions>): void {\n this.Filters$.next({\n ...this.Filters$.value,\n ...partial\n });\n // Discrete changes (chips) apply immediately. Text search still goes\n // through the 300ms debounce in setupFilterSubscription.\n if (!('search' in partial)) {\n this.applyFilters();\n this.cdr.markForCheck();\n }\n }\n\n /** @deprecated Use {@link UpdateFilter}. */\n public updateFilter(partial: Partial<FilterOptions>): void {\n return this.UpdateFilter(partial);\n }\n\n // -- Concise chrome: one Filter popover (Type) + applied-filter chips -------\n\n public get FilterFields(): FilterFieldConfig[] {\n return [\n {\n key: 'type',\n type: 'chips',\n label: 'Type',\n chipOptions: [\n { text: 'All', value: 'all' },\n { text: 'System', value: 'system' },\n { text: 'Custom', value: 'custom' },\n ],\n },\n ];\n }\n\n /** @deprecated Use {@link FilterFields}. */\n public get filterFields(): FilterFieldConfig[] {\n return this.FilterFields;\n }\n\n public get FilterValues(): Record<string, unknown> {\n return { type: this.Filters$.value.type };\n }\n\n /** @deprecated Use {@link FilterValues}. */\n public get filterValues(): Record<string, unknown> {\n return this.FilterValues;\n }\n\n /** Total active filters (Type) — drives the Filter button badge. */\n public get TotalActiveFilterCount(): number {\n return this.Filters$.value.type !== 'all' ? 1 : 0;\n }\n\n public OnFilterPanelChange(values: Record<string, unknown>): void {\n if ('type' in values) {\n this.UpdateFilter({ type: (values['type'] as FilterOptions['type']) || 'all' });\n }\n }\n\n /** @deprecated Use {@link OnFilterPanelChange}. */\n public onFilterPanelChange(values: Record<string, unknown>): void {\n return this.OnFilterPanelChange(values);\n }\n\n /** Clear all filters (Type); search persists. */\n public ClearAllAppliedFilters(): void {\n this.UpdateFilter({ type: 'all' });\n }\n\n /** @deprecated Use {@link ClearAllAppliedFilters}. */\n public clearAllAppliedFilters(): void {\n return this.ClearAllAppliedFilters();\n }\n\n /** True when search and/or panel filters are narrowing the list — gates the\n * no-results empty-state \"Reset filters\" CTA. */\n public get IsListNarrowed(): boolean {\n return this.Filters$.value.search !== '' || this.TotalActiveFilterCount > 0;\n }\n\n /** Reset everything narrowing the list (search + Type) and refresh\n * immediately. Wired to the no-results empty-state CTA. Unlike\n * clearAllAppliedFilters(), this also clears the search box. */\n public ResetAllFiltersAndSearch(): void {\n this.Filters$.next({ type: 'all', search: '' });\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link ResetAllFiltersAndSearch}. */\n public resetAllFiltersAndSearch(): void {\n return this.ResetAllFiltersAndSearch();\n }\n \n public ToggleRoleExpansion(roleId: string): void {\n this.ExpandedRoleId = this.ExpandedRoleId === roleId ? null : roleId;\n if (this.ExpandedRoleId) {\n // Lazy-load the read-only permission summary so the agent context reflects\n // the user's current selection; fire-and-forget (re-publishes on completion).\n void this.loadPermissionSummary(this.ExpandedRoleId).then(summary => {\n this.selectedRolePermissionSummary = summary;\n this.publishAgentContext();\n });\n } else {\n this.selectedRolePermissionSummary = null;\n }\n this.publishAgentContext();\n }\n\n /** @deprecated Use {@link ToggleRoleExpansion}. */\n public toggleRoleExpansion(roleId: string): void {\n return this.ToggleRoleExpansion(roleId);\n }\n \n public IsRoleExpanded(roleId: string): boolean {\n return this.ExpandedRoleId === roleId;\n }\n\n /** @deprecated Use {@link IsRoleExpanded}. */\n public isRoleExpanded(roleId: string): boolean {\n return this.IsRoleExpanded(roleId);\n }\n \n public CreateNewRole(): void {\n this.RoleDialogData = {\n mode: 'create'\n };\n this.ShowRoleDialog = true;\n }\n\n /** @deprecated Use {@link CreateNewRole}. */\n public createNewRole(): void {\n return this.CreateNewRole();\n }\n \n public EditRole(role: MJRoleEntity): void {\n this.RoleDialogData = {\n role: role,\n mode: 'edit'\n };\n this.ShowRoleDialog = true;\n }\n\n /** @deprecated Use {@link EditRole}. */\n public editRole(role: MJRoleEntity): void {\n return this.EditRole(role);\n }\n \n public ConfirmDeleteRole(role: MJRoleEntity): void {\n this.SelectedRole = role;\n this.ShowDeleteConfirm = true;\n }\n\n /** @deprecated Use {@link ConfirmDeleteRole}. */\n public confirmDeleteRole(role: MJRoleEntity): void {\n return this.ConfirmDeleteRole(role);\n }\n \n public async DeleteRole(): Promise<void> {\n if (!this.SelectedRole) return;\n \n try {\n // Load role entity to delete\n const role = await this.metadata.GetEntityObject<MJRoleEntity>('MJ: Roles');\n const loadResult = await role.Load(this.SelectedRole.ID);\n \n if (loadResult) {\n const deleteResult = await role.Delete();\n if (deleteResult) {\n this.ShowDeleteConfirm = false;\n this.SelectedRole = null;\n await this.LoadInitialData();\n } else {\n throw new Error(role.LatestResult?.Message || 'Failed to delete role');\n }\n } else {\n throw new Error('Role not found or permission denied');\n }\n } catch (error: unknown) {\n console.error('Error deleting role:', error);\n this.ngZone.run(() => {\n this.error = error instanceof Error ? error.message : 'Failed to delete role';\n this.cdr.markForCheck();\n });\n }\n }\n\n /** @deprecated Use {@link DeleteRole}. */\n public async deleteRole(): Promise<void> {\n return this.DeleteRole();\n }\n \n public GetRoleIcon(role: MJRoleEntity): string {\n if (this.IsSystemRole(role)) {\n return 'fa-shield-halved';\n }\n return 'fa-user-tag';\n }\n\n /** @deprecated Use {@link GetRoleIcon}. */\n public getRoleIcon(role: MJRoleEntity): string {\n return this.GetRoleIcon(role);\n }\n \n public GetRoleTypeLabel(role: MJRoleEntity): string {\n return this.IsSystemRole(role) ? 'System' : 'Custom';\n }\n\n /** @deprecated Use {@link GetRoleTypeLabel}. */\n public getRoleTypeLabel(role: MJRoleEntity): string {\n return this.GetRoleTypeLabel(role);\n }\n \n public GetRoleTypeClass(role: MJRoleEntity): string {\n return this.IsSystemRole(role) ? 'badge-system' : 'badge-custom';\n }\n\n /** @deprecated Use {@link GetRoleTypeClass}. */\n public getRoleTypeClass(role: MJRoleEntity): string {\n return this.GetRoleTypeClass(role);\n }\n \n public RefreshData(): void {\n this.LoadInitialData();\n }\n\n /** @deprecated Use {@link RefreshData}. */\n public refreshData(): void {\n return this.RefreshData();\n }\n\n public OnRoleDialogResult(result: RoleDialogResult): void {\n this.ShowRoleDialog = false;\n this.RoleDialogData = null;\n \n if (result.action === 'save') {\n // Refresh the role list to show changes\n this.LoadInitialData();\n }\n }\n\n /** @deprecated Use {@link OnRoleDialogResult}. */\n public onRoleDialogResult(result: RoleDialogResult): void {\n return this.OnRoleDialogResult(result);\n }\n}","<!--\n Interior chrome — <mj-page-header-interior> is the body-level sibling of\n <mj-page-header>. Same slot conventions ([toolbar] / [meta] / [actions]);\n different visual shape (single-row card). See Section 10 of\n explorer-chrome-conventions.\n-->\n<mj-page-header-interior\n AriaLabel=\"Filter roles\"\n Title=\"Roles\"\n Subtitle=\"Define system and custom roles for permissions\">\n <!-- X-of-Y filtered count earns its meta spot per chrome conventions §2.\n Partition badges (system/custom) stay dropped — they mirror the\n System/Custom filter chips in [toolbar]. -->\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredRoles.length\"\n [Total]=\"roles.length\"\n Label=\"roles\">\n </mj-stat-badge>\n </div>\n <div toolbar>\n <!-- Concise-chrome control bar: search · Filter. Type lives behind the one\n Filter button; applied filters show as removable chips below the card.\n On mobile the popover docks as a bottom sheet. -->\n <mj-page-search\n Placeholder=\"Search roles by name or description...\"\n [Value]=\"filters$.value.search\"\n (ValueChange)=\"updateFilter({ search: $event })\">\n </mj-page-search>\n <mj-filter-popover\n Label=\"Filters\"\n Icon=\"fa-solid fa-filter\"\n [ActiveCount]=\"TotalActiveFilterCount\"\n [ShowClearAll]=\"TotalActiveFilterCount > 0\"\n (ClearAllRequested)=\"clearAllAppliedFilters()\">\n <mj-filter-panel\n [Fields]=\"filterFields\"\n [Values]=\"filterValues\"\n (ValuesChange)=\"onFilterPanelChange($event)\"\n (Reset)=\"clearAllAppliedFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refreshData()\"></mj-refresh-button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewRole()\" aria-label=\"Add new role\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Role</span>\n </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 roles...\" 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 mjButton variant=\"primary\" (click)=\"loadInitialData()\" aria-label=\"Retry loading roles\">\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n <!-- Roles List -->\n @if (!isLoading && !error) {\n <div class=\"roles-list\" role=\"list\" aria-label=\"Roles list\">\n @for (role of filteredRoles; track role.ID) {\n <div\n class=\"role-card\"\n [class.expanded]=\"isRoleExpanded(role.ID)\"\n role=\"listitem\"\n [attr.aria-expanded]=\"isRoleExpanded(role.ID)\"\n >\n <div\n class=\"role-header\"\n (click)=\"toggleRoleExpansion(role.ID)\"\n tabindex=\"0\"\n (keydown.enter)=\"toggleRoleExpansion(role.ID)\"\n (keydown.space)=\"toggleRoleExpansion(role.ID); $event.preventDefault()\"\n role=\"button\"\n [attr.aria-label]=\"'Toggle details for ' + role.Name\"\n >\n <div class=\"role-info\">\n <div class=\"role-icon-wrapper\" aria-hidden=\"true\">\n <i [class]=\"'fa-solid ' + getRoleIcon(role)\"></i>\n </div>\n <div class=\"role-details\">\n <h3 class=\"role-name\">{{ role.Name }}</h3>\n <p class=\"role-description\">{{ role.Description || 'No description available' }}</p>\n </div>\n </div>\n\n <div class=\"role-meta\">\n <span class=\"role-type-badge\" [class]=\"getRoleTypeClass(role)\">\n {{ getRoleTypeLabel(role) }}\n </span>\n <div class=\"role-actions\" (click)=\"$event.stopPropagation()\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editRole(role)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n </button>\n <button\n mjButton variant=\"danger\" size=\"sm\"\n (click)=\"confirmDeleteRole(role)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <button class=\"expand-btn\" aria-label=\"Toggle details\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n @if (isRoleExpanded(role.ID)) {\n <div class=\"role-content\">\n <!-- Mobile-only actions bar -->\n <div class=\"mobile-actions-bar\" (click)=\"$event.stopPropagation()\">\n <span class=\"role-type-badge\" [class]=\"getRoleTypeClass(role)\">\n {{ getRoleTypeLabel(role) }}\n </span>\n <div class=\"mobile-action-buttons\">\n <button\n mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editRole(role)\"\n title=\"Edit\"\n [attr.aria-label]=\"'Edit ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-edit\" aria-hidden=\"true\"></i>\n <span class=\"btn-label\">Edit</span>\n </button>\n <button\n mjButton variant=\"danger\" size=\"sm\"\n (click)=\"confirmDeleteRole(role)\"\n title=\"Delete\"\n [attr.aria-label]=\"'Delete ' + role.Name\"\n [disabled]=\"isSystemRole(role)\"\n >\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n <span class=\"btn-label\">Delete</span>\n </button>\n </div>\n </div>\n\n <div class=\"role-stats\">\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-users\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Users:</span>\n <span class=\"stat-value\">0</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-calendar\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Created:</span>\n <span class=\"stat-value\">{{ role.__mj_CreatedAt | date:'short' }}</span>\n </div>\n <div class=\"stat-item\">\n <i class=\"fa-solid fa-clock\" aria-hidden=\"true\"></i>\n <span class=\"stat-label\">Updated:</span>\n <span class=\"stat-value\">{{ role.__mj_UpdatedAt | date:'short' }}</span>\n </div>\n </div>\n\n <div class=\"permissions-preview\">\n <h4 class=\"section-title\">\n <i class=\"fa-solid fa-key\" aria-hidden=\"true\"></i>\n Permissions Preview\n </h4>\n <p class=\"permissions-note\">Full permission management available in the Permissions tab</p>\n </div>\n </div>\n }\n </div>\n }\n\n @if (filteredRoles.length === 0) {\n <mj-empty-state\n [Variant]=\"IsListNarrowed ? 'no-results' : 'empty'\"\n Icon=\"fa-solid fa-user-tag\"\n Title=\"No roles found\"\n Message=\"Try adjusting your filters or create a new role\"\n [ActionText]=\"IsListNarrowed ? 'Reset filters' : ''\"\n ActionIcon=\"fa-solid fa-rotate-left\"\n (Action)=\"resetAllFiltersAndSearch()\" />\n }\n </div>\n }\n </mj-page-body-interior>\n\n <!-- Role Create/Edit Dialog -->\n <mj-role-dialog\n [data]=\"roleDialogData\"\n [visible]=\"showRoleDialog\"\n (result)=\"onRoleDialogResult($event)\">\n </mj-role-dialog>\n\n <!-- Delete Confirmation Dialog -->\n @if (showDeleteConfirm && selectedRole) {\n <div\n class=\"modal-backdrop\"\n (click)=\"showDeleteConfirm = false\"\n role=\"presentation\"\n >\n <div\n class=\"modal-dialog\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"delete-dialog-title\"\n aria-describedby=\"delete-dialog-desc\"\n >\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"delete-dialog-title\">\n <i class=\"fa-solid fa-exclamation-triangle text-danger\" aria-hidden=\"true\"></i>\n Confirm Delete\n </h3>\n <button\n class=\"modal-close\"\n (click)=\"showDeleteConfirm = false\"\n aria-label=\"Close dialog\"\n >\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"modal-body\" id=\"delete-dialog-desc\">\n <p>Are you sure you want to delete the role <strong>{{ selectedRole.Name }}</strong>?</p>\n <mj-alert Variant=\"warning\" Message=\"This will affect all users assigned to this role.\" />\n </div>\n <div class=\"modal-footer\">\n <!-- Primary action (Delete) on LEFT per MD3 design guide -->\n <button mjButton variant=\"danger\" (click)=\"deleteRole()\" [disabled]=\"isLoading\">\n @if (isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Deleting...\n } @else {\n <i class=\"fa-solid fa-trash\" aria-hidden=\"true\"></i>\n Delete Role\n }\n </button>\n <button mjButton (click)=\"showDeleteConfirm = false\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n\n"]}
|
|
@@ -30,30 +30,86 @@ export declare class SettingsComponent extends BaseNavigationComponent implement
|
|
|
30
30
|
private location;
|
|
31
31
|
private cdr;
|
|
32
32
|
private ngZone;
|
|
33
|
+
StateChange: EventEmitter<SettingsComponentState>;
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated Use {@link StateChange}.
|
|
36
|
+
*
|
|
37
|
+
* The same emitter under the old binding name, so a template still binding
|
|
38
|
+
* (stateChange) keeps working. Must stay AFTER StateChange: class fields
|
|
39
|
+
* initialise in order, and the other way round this captures undefined.
|
|
40
|
+
*/
|
|
33
41
|
stateChange: EventEmitter<SettingsComponentState>;
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
ActiveTab: string;
|
|
43
|
+
/** @deprecated Use {@link ActiveTab}. */
|
|
44
|
+
get activeTab(): string;
|
|
45
|
+
/** @deprecated Use {@link ActiveTab}. */
|
|
46
|
+
set activeTab(value: string);
|
|
47
|
+
SearchTerm$: BehaviorSubject<string>;
|
|
48
|
+
/** @deprecated Use {@link SearchTerm$}. */
|
|
49
|
+
get searchTerm$(): BehaviorSubject<string>;
|
|
50
|
+
/** @deprecated Use {@link SearchTerm$}. */
|
|
51
|
+
set searchTerm$(value: BehaviorSubject<string>);
|
|
36
52
|
isLoading: boolean;
|
|
37
53
|
error: string | null;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
54
|
+
FilteredTabs: SettingsTab[];
|
|
55
|
+
/** @deprecated Use {@link FilteredTabs}. */
|
|
56
|
+
get filteredTabs(): SettingsTab[];
|
|
57
|
+
/** @deprecated Use {@link FilteredTabs}. */
|
|
58
|
+
set filteredTabs(value: SettingsTab[]);
|
|
59
|
+
SearchResults: SearchableItem[];
|
|
60
|
+
/** @deprecated Use {@link SearchResults}. */
|
|
61
|
+
get searchResults(): SearchableItem[];
|
|
62
|
+
/** @deprecated Use {@link SearchResults}. */
|
|
63
|
+
set searchResults(value: SearchableItem[]);
|
|
64
|
+
IsSearching: boolean;
|
|
65
|
+
/** @deprecated Use {@link IsSearching}. */
|
|
66
|
+
get isSearching(): boolean;
|
|
67
|
+
/** @deprecated Use {@link IsSearching}. */
|
|
68
|
+
set isSearching(value: boolean);
|
|
69
|
+
ShowSearchResults: boolean;
|
|
70
|
+
/** @deprecated Use {@link ShowSearchResults}. */
|
|
71
|
+
get showSearchResults(): boolean;
|
|
72
|
+
/** @deprecated Use {@link ShowSearchResults}. */
|
|
73
|
+
set showSearchResults(value: boolean);
|
|
74
|
+
Tabs: SettingsTab[];
|
|
75
|
+
/** @deprecated Use {@link Tabs}. */
|
|
76
|
+
get tabs(): SettingsTab[];
|
|
77
|
+
/** @deprecated Use {@link Tabs}. */
|
|
78
|
+
set tabs(value: SettingsTab[]);
|
|
43
79
|
private searchableItems;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
80
|
+
ExpandedSections: string[];
|
|
81
|
+
/** @deprecated Use {@link ExpandedSections}. */
|
|
82
|
+
get expandedSections(): string[];
|
|
83
|
+
/** @deprecated Use {@link ExpandedSections}. */
|
|
84
|
+
set expandedSections(value: string[]);
|
|
85
|
+
IsMobile: boolean;
|
|
86
|
+
/** @deprecated Use {@link IsMobile}. */
|
|
87
|
+
get isMobile(): boolean;
|
|
88
|
+
/** @deprecated Use {@link IsMobile}. */
|
|
89
|
+
set isMobile(value: boolean);
|
|
90
|
+
IsMobileNavOpen: boolean;
|
|
91
|
+
/** @deprecated Use {@link IsMobileNavOpen}. */
|
|
92
|
+
get isMobileNavOpen(): boolean;
|
|
93
|
+
/** @deprecated Use {@link IsMobileNavOpen}. */
|
|
94
|
+
set isMobileNavOpen(value: boolean);
|
|
47
95
|
private destroy$;
|
|
48
96
|
constructor(location: Location, cdr: ChangeDetectorRef, ngZone: NgZone);
|
|
49
97
|
ngOnInit(): void;
|
|
50
98
|
ngOnDestroy(): void;
|
|
51
99
|
private setupSearchFilter;
|
|
100
|
+
LoadInitialData(): Promise<void>;
|
|
101
|
+
/** @deprecated Use {@link LoadInitialData}. */
|
|
52
102
|
loadInitialData(): Promise<void>;
|
|
53
103
|
private simulateDataLoad;
|
|
104
|
+
OnTabChange(tabId: string): void;
|
|
105
|
+
/** @deprecated Use {@link OnTabChange}. */
|
|
54
106
|
onTabChange(tabId: string): void;
|
|
107
|
+
OnSearchChange(event: Event): void;
|
|
108
|
+
/** @deprecated Use {@link OnSearchChange}. */
|
|
55
109
|
onSearchChange(event: Event): void;
|
|
56
110
|
toggleSection(sectionId: string): void;
|
|
111
|
+
IsSectionExpanded(sectionId: string): boolean;
|
|
112
|
+
/** @deprecated Use {@link IsSectionExpanded}. */
|
|
57
113
|
isSectionExpanded(sectionId: string): boolean;
|
|
58
114
|
/**
|
|
59
115
|
* Filters searchable content based on search term
|
|
@@ -62,34 +118,54 @@ export declare class SettingsComponent extends BaseNavigationComponent implement
|
|
|
62
118
|
/**
|
|
63
119
|
* Navigates to a search result
|
|
64
120
|
*/
|
|
121
|
+
NavigateToSearchResult(result: SearchableItem): void;
|
|
122
|
+
/** @deprecated Use {@link NavigateToSearchResult}. */
|
|
65
123
|
navigateToSearchResult(result: SearchableItem): void;
|
|
66
124
|
/**
|
|
67
125
|
* Clears the search and resets the view
|
|
68
126
|
*/
|
|
127
|
+
ClearSearch(): void;
|
|
128
|
+
/** @deprecated Use {@link ClearSearch}. */
|
|
69
129
|
clearSearch(): void;
|
|
70
130
|
/**
|
|
71
131
|
* Toggles the mobile navigation rail
|
|
72
132
|
*/
|
|
133
|
+
ToggleMobileNav(): void;
|
|
134
|
+
/** @deprecated Use {@link ToggleMobileNav}. */
|
|
73
135
|
toggleMobileNav(): void;
|
|
74
136
|
/**
|
|
75
137
|
* Closes the mobile navigation rail
|
|
76
138
|
*/
|
|
139
|
+
CloseMobileNav(): void;
|
|
140
|
+
/** @deprecated Use {@link CloseMobileNav}. */
|
|
77
141
|
closeMobileNav(): void;
|
|
78
142
|
/**
|
|
79
143
|
* Closes the settings page and navigates back
|
|
80
144
|
*/
|
|
145
|
+
CloseSettings(): void;
|
|
146
|
+
/** @deprecated Use {@link CloseSettings}. */
|
|
81
147
|
closeSettings(): void;
|
|
82
148
|
/**
|
|
83
149
|
* Handles tab change on mobile
|
|
84
150
|
*/
|
|
151
|
+
OnMobileTabChange(tabId: string): void;
|
|
152
|
+
/** @deprecated Use {@link OnMobileTabChange}. */
|
|
85
153
|
onMobileTabChange(tabId: string): void;
|
|
86
154
|
private handleResize;
|
|
87
155
|
private emitStateChange;
|
|
156
|
+
LoadUserState(state: Partial<SettingsComponentState>): void;
|
|
157
|
+
/** @deprecated Use {@link LoadUserState}. */
|
|
88
158
|
loadUserState(state: Partial<SettingsComponentState>): void;
|
|
159
|
+
GetTabIcon(tab: SettingsTab): string;
|
|
160
|
+
/** @deprecated Use {@link GetTabIcon}. */
|
|
89
161
|
getTabIcon(tab: SettingsTab): string;
|
|
162
|
+
GetTabClass(tab: SettingsTab): string;
|
|
163
|
+
/** @deprecated Use {@link GetTabClass}. */
|
|
90
164
|
getTabClass(tab: SettingsTab): string;
|
|
165
|
+
IsTabDisabled(tab: SettingsTab): boolean;
|
|
166
|
+
/** @deprecated Use {@link IsTabDisabled}. */
|
|
91
167
|
isTabDisabled(tab: SettingsTab): boolean;
|
|
92
168
|
static ɵfac: i0.ɵɵFactoryDeclaration<SettingsComponent, never>;
|
|
93
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SettingsComponent, "mj-settings", never, {}, { "stateChange": "stateChange"; }, never, never, false, never>;
|
|
169
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SettingsComponent, "mj-settings", never, {}, { "StateChange": "StateChange"; "stateChange": "stateChange"; }, never, never, false, never>;
|
|
94
170
|
}
|
|
95
171
|
//# sourceMappingURL=settings.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.component.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/settings.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,YAAY,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAW,eAAe,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;;AAEpE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAOa,iBAAkB,SAAQ,uBAAwB,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"settings.component.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/settings.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,YAAY,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAW,eAAe,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;;AAEpE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAOa,iBAAkB,SAAQ,uBAAwB,YAAW,MAAM,EAAE,SAAS;IAwM7E,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,GAAG;IAAqB,OAAO,CAAC,MAAM;IAvM5E,WAAW,uCAA8C;IAEnE;;;;;;OAMG;IACO,WAAW,uCAAoB;IAGlC,SAAS,SAAa;IAE7B,yCAAyC;IACzC,IAAW,SAAS,WAEnB;IACD,yCAAyC;IACzC,IAAW,SAAS,CAAC,KAAK,QAAA,EAEzB;IACM,WAAW,0BAAmC;IAErD,2CAA2C;IAC3C,IAAW,WAAW,4BAErB;IACD,2CAA2C;IAC3C,IAAW,WAAW,CAAC,KAAK,yBAAA,EAE3B;IACM,SAAS,UAAS;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,YAAY,EAAE,WAAW,EAAE,CAAM;IAExC,4CAA4C;IAC5C,IAAW,YAAY,IAAI,WAAW,EAAE,CAEvC;IACD,4CAA4C;IAC5C,IAAW,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAE3C;IACM,aAAa,EAAE,cAAc,EAAE,CAAM;IAE5C,6CAA6C;IAC7C,IAAW,aAAa,IAAI,cAAc,EAAE,CAE3C;IACD,6CAA6C;IAC7C,IAAW,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,EAE/C;IACM,WAAW,UAAS;IAE3B,2CAA2C;IAC3C,IAAW,WAAW,YAErB;IACD,2CAA2C;IAC3C,IAAW,WAAW,CAAC,KAAK,SAAA,EAE3B;IACM,iBAAiB,UAAS;IAEjC,iDAAiD;IACjD,IAAW,iBAAiB,YAE3B;IACD,iDAAiD;IACjD,IAAW,iBAAiB,CAAC,KAAK,SAAA,EAEjC;IAGM,IAAI,EAAE,WAAW,EAAE,CA0BxB;IAEF,oCAAoC;IACpC,IAAW,IAAI,IAAI,WAAW,EAAE,CAE/B;IACD,oCAAoC;IACpC,IAAW,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,EAEnC;IAGD,OAAO,CAAC,eAAe,CA6CrB;IAGK,gBAAgB,EAAE,MAAM,EAAE,CAA0B;IAE3D,gDAAgD;IAChD,IAAW,gBAAgB,IAAI,MAAM,EAAE,CAEtC;IACD,gDAAgD;IAChD,IAAW,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAE1C;IAGM,QAAQ,UAA2B;IAE1C,wCAAwC;IACxC,IAAW,QAAQ,YAElB;IACD,wCAAwC;IACxC,IAAW,QAAQ,CAAC,KAAK,SAAA,EAExB;IACM,eAAe,UAAS;IAE/B,+CAA+C;IAC/C,IAAW,eAAe,YAEzB;IACD,+CAA+C;IAC/C,IAAW,eAAe,CAAC,KAAK,SAAA,EAE/B;IAED,OAAO,CAAC,QAAQ,CAAuB;gBAEnB,QAAQ,EAAE,QAAQ,EAAU,GAAG,EAAE,iBAAiB,EAAU,MAAM,EAAE,MAAM;IAK9F,QAAQ,IAAI,IAAI;IAMhB,WAAW,IAAI,IAAI;IAMnB,OAAO,CAAC,iBAAiB;IAaZ,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB7C,+CAA+C;IAClC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAI/B,gBAAgB;IAIvB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASvC,2CAA2C;IACpC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKzC,8CAA8C;IACvC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIlC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUtC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpD,iDAAiD;IAC1C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;IACH,OAAO,CAAC,aAAa;IA2BrB;;OAEG;IACI,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAiB3D,sDAAsD;IAC/C,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI3D;;OAEG;IACI,WAAW,IAAI,IAAI;IAO1B,2CAA2C;IACpC,WAAW,IAAI,IAAI;IAI1B;;OAEG;IACI,eAAe,IAAI,IAAI;IAI9B,+CAA+C;IACxC,eAAe,IAAI,IAAI;IAI9B;;OAEG;IACI,cAAc,IAAI,IAAI;IAI7B,8CAA8C;IACvC,cAAc,IAAI,IAAI;IAI7B;;OAEG;IACI,aAAa,IAAI,IAAI;IAI5B,6CAA6C;IACtC,aAAa,IAAI,IAAI;IAI5B;;OAEG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7C,iDAAiD;IAC1C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7C,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAShB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAYlE,6CAA6C;IACtC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAI3D,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM;IAI3C,0CAA0C;IACnC,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM;IAIpC,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM;IAc5C,2CAA2C;IACpC,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM;IAIrC,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;IAI/C,6CAA6C;IACtC,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;yCApepC,iBAAiB;2CAAjB,iBAAiB;CAue7B"}
|