diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json index 628c9d0251..8446aaa85d 100644 --- a/npm/ng-packs/packages/feature-management/package.json +++ b/npm/ng-packs/packages/feature-management/package.json @@ -10,6 +10,9 @@ "@abp/ng.theme.shared": "~10.1.0-rc.2", "tslib": "^2.0.0" }, + "peerDependencies": { + "@angular/aria": "~21.0.0" + }, "publishConfig": { "access": "public" } diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html index 257221add9..e8d76d36f9 100644 --- a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html +++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.html @@ -12,18 +12,26 @@
@if (groups.length) { -
- +
- - - @if (description) { - {{ description }} - } - - -
} @if (!groups.length) { diff --git a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts index 0c6c532473..7f2d816bbc 100644 --- a/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts +++ b/npm/ng-packs/packages/feature-management/src/lib/components/feature-management/feature-management.component.ts @@ -1,5 +1,5 @@ import { Component, EventEmitter, Input, Output, inject, DOCUMENT } from '@angular/core'; -import { NgTemplateOutlet } from '@angular/common'; +import { NgTemplateOutlet, NgStyle } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { ConfigStateService, LocalizationPipe, TrackByService } from '@abp/ng.core'; import { @@ -17,7 +17,7 @@ import { ModalComponent, ToasterService, } from '@abp/ng.theme.shared'; -import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; +import { Tabs, TabList, Tab, TabPanel, TabContent } from '@angular/aria/tabs'; import { finalize } from 'rxjs/operators'; import { FreeTextInputDirective } from '../../directives'; import { FeatureManagement } from '../../models'; @@ -36,11 +36,16 @@ const DEFAULT_PROVIDER_NAME = 'D'; exportAs: 'abpFeatureManagement', imports: [ NgTemplateOutlet, + NgStyle, ButtonComponent, ModalComponent, LocalizationPipe, FormsModule, - NgbNavModule, + Tabs, + TabList, + Tab, + TabPanel, + TabContent, FreeTextInputDirective, ModalCloseDirective, ], diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json index a9d91b2d36..a82f782f56 100644 --- a/npm/ng-packs/packages/identity/package.json +++ b/npm/ng-packs/packages/identity/package.json @@ -12,6 +12,9 @@ "@abp/ng.theme.shared": "~10.1.0-rc.2", "tslib": "^2.0.0" }, + "peerDependencies": { + "@angular/aria": "~21.0.0" + }, "publishConfig": { "access": "public" } diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html index 5085f1d120..07ac0ca8ec 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html +++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.html @@ -28,39 +28,47 @@ @if (form) {
- -
+
+
+ + + +
+ +
+ + @for (roleGroup of roleGroups; track $index; let i = $index) { +
+ + +
+ } +
+
+
+
} @else {
diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts index ba7c5b451b..7ff04cf679 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts +++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts @@ -52,7 +52,8 @@ import { import { finalize, switchMap, tap } from 'rxjs/operators'; import { eIdentityComponents } from '../../enums/components'; import { PageComponent } from '@abp/ng.components/page'; -import { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { Tabs, TabList, Tab, TabPanel, TabContent } from '@angular/aria/tabs'; import { NgxValidateCoreModule } from '@ngx-validate/core'; @Component({ @@ -70,7 +71,11 @@ import { NgxValidateCoreModule } from '@ngx-validate/core'; FormsModule, PermissionManagementComponent, PageComponent, - NgbNavModule, + Tabs, + TabList, + Tab, + TabPanel, + TabContent, NgbDropdownModule, NgxValidateCoreModule, LocalizationPipe, @@ -101,6 +106,8 @@ export class UsersComponent implements OnInit { selected?: IdentityUserDto; + selectedTab = 'user-info'; + selectedUserRoles?: IdentityRoleDto[]; roles?: IdentityRoleDto[]; @@ -159,6 +166,7 @@ export class UsersComponent implements OnInit { } openModal() { + this.selectedTab = 'user-info'; this.buildForm(); this.isModalVisible = true; } diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json index 7ffca4e312..264a8f8a87 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.2", "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); diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json index d95be8cf2f..7961dca68a 100644 --- a/npm/ng-packs/packages/setting-management/package.json +++ b/npm/ng-packs/packages/setting-management/package.json @@ -12,7 +12,7 @@ "tslib": "^2.0.0" }, "peerDependencies": { - "@angular/aria": "21.0.0" + "@angular/aria": "~21.0.0" }, "publishConfig": { "access": "public"