From c3f3edf13ab329a14d157168dea635e4d2e45bb0 Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:17:55 +0300 Subject: [PATCH] Integrate @angular/aria tabs into permission management Refactored the permission management component to use @angular/aria tab components for group navigation, improving accessibility and structure. Updated the template and styles to support ngTabs, TabList, Tab, TabPanel, and TabContent. Added @angular/aria as a peer dependency in package.json. --- .../permission-management/package.json | 3 + .../permission-management.component.html | 123 ++++++++++-------- .../permission-management.component.ts | 22 +++- 3 files changed, 90 insertions(+), 58 deletions(-) diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 7212ad60d8..0daff17ee7 100644 --- a/npm/ng-packs/packages/permission-management/package.json +++ b/npm/ng-packs/packages/permission-management/package.json @@ -10,6 +10,9 @@ "@abp/ng.theme.shared": "~10.1.0-rc.1", "tslib": "^2.0.0" }, + "peerDependencies": { + "@angular/aria": "21.0.0" + }, "publishConfig": { "access": "public" }, diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html index 32fe44e488..0224f3d45a 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html @@ -43,18 +43,27 @@ {{ 'AbpPermissionManagement::PermissionGroup' | abpLocalization }} -
+
-
- +
-
- @if (selectedGroupPermissions.length) { -
- - -
-
- @for (permission of selectedGroupPermissions; track $index; let i = $index) { -
- -
+ }
diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts index 2c7a4e57ec..3dd427df84 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts @@ -34,6 +34,8 @@ import { PermissionManagement } from '../models'; import { NgStyle } from '@angular/common'; import { FormsModule } from '@angular/forms'; +import { Tabs, TabList, Tab, TabPanel, TabContent } from '@angular/aria/tabs'; + type PermissionWithStyle = PermissionGrantInfoDto & { style: string; }; @@ -56,7 +58,7 @@ type PermissionWithGroupName = PermissionGrantInfoDto & { max-height: calc(100vh - 23.1rem); } - .lpx-scroll-pills-container ul { + .lpx-scroll-pills-container .nav-pills { display: block; overflow-y: auto; } @@ -66,7 +68,7 @@ type PermissionWithGroupName = PermissionGrantInfoDto & { .scroll-in-modal { max-height: calc(100vh - 15rem); } - .lpx-scroll-pills-container ul { + .lpx-scroll-pills-container .nav-pills { max-height: 500px; } } @@ -81,12 +83,12 @@ type PermissionWithGroupName = PermissionGrantInfoDto & { padding-bottom: 0 !important; } - .lpx-scroll-pills-container ul li { + .lpx-scroll-pills-container .nav-item { margin-bottom: 10px; border-radius: 10px; } - .lpx-scroll-pills-container ul li a.active { + .lpx-scroll-pills-container .nav-item .nav-link.active { color: #fff !important; border-color: #6c5dd3 !important; background-color: #6c5dd3 !important; @@ -100,6 +102,11 @@ type PermissionWithGroupName = PermissionGrantInfoDto & { LocalizationPipe, ButtonComponent, ModalCloseDirective, + Tabs, + TabList, + Tab, + TabPanel, + TabContent, ], }) export class PermissionManagementComponent @@ -418,6 +425,13 @@ export class PermissionManagementComponent this.onChangeGroup(this.selectedGroup); } + onTabChange(groupName: string) { + const group = this.permissionGroups().find(g => g.name === groupName); + if (group) { + this.onChangeGroup(group); + } + } + onChangeGroup(group: PermissionGroupDto) { this.setDisabled(group.permissions); this.setSelectedGroup(group);