From 5e2a0de6c3f4dffd3fe740f91396629b6b4931af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= <30300440+bariscanyilmaz@users.noreply.github.com> Date: Wed, 15 Feb 2023 11:09:39 +0300 Subject: [PATCH 1/5] make selected group permissions as array --- .../permission-management.component.ts | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) 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 44cc372f32..de285fd147 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 @@ -81,7 +81,7 @@ export class PermissionManagementComponent }); }); } else { - this.selectedGroup = null; + this.setSelectedGroup(null); this._visible = false; this.visibleChange.emit(false); } @@ -112,8 +112,20 @@ export class PermissionManagementComponent trackByFn: TrackByFunction = (_, item) => item.name; - get selectedGroupPermissions(): PermissionWithStyle[] { - if (!this.selectedGroup) return []; + selectedGroupPermissions: PermissionWithStyle[] = []; + + constructor(protected service: PermissionsService, protected configState: ConfigStateService) {} + + getChecked(name: string) { + return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted; + } + + setSelectedGroup(group: PermissionGroupDto) { + this.selectedGroup = group; + if (!this.selectedGroup) { + this.selectedGroupPermissions = []; + return; + } const margin = `margin-${ (document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left' @@ -123,7 +135,7 @@ export class PermissionManagementComponent group => group.name === this.selectedGroup.name, ).permissions; - return permissions.map( + this.selectedGroupPermissions = permissions.map( permission => ({ ...permission, @@ -133,12 +145,6 @@ export class PermissionManagementComponent ); } - constructor(protected service: PermissionsService, protected configState: ConfigStateService) {} - - getChecked(name: string) { - return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted; - } - setDisabled(permissions: PermissionGrantInfoDto[]) { if (permissions.length) { this.disableSelectAllTab = permissions.every( @@ -248,7 +254,7 @@ export class PermissionManagementComponent onChangeGroup(group: PermissionGroupDto) { this.setDisabled(group.permissions); - this.selectedGroup = group; + this.setSelectedGroup(group); this.setTabCheckboxState(); } @@ -291,8 +297,8 @@ export class PermissionManagementComponent return this.service.get(this.providerName, this.providerKey).pipe( tap((permissionRes: GetPermissionListResultDto) => { this.data = permissionRes; - this.selectedGroup = permissionRes.groups[0]; this.permissions = getPermissions(permissionRes.groups); + this.setSelectedGroup(permissionRes.groups[0]); this.disabledSelectAllInAllTabs = this.permissions.every( per => per.isGranted && From f94657bd16a91bb186ae4590edaf7ac75b246395 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 15 Feb 2023 16:43:29 +0800 Subject: [PATCH 2/5] Update WithProviders comment --- .../Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs index 14cd0d405b..1a1e2ece3b 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/FeatureDefinition.cs @@ -124,7 +124,7 @@ public class FeatureDefinition : ICanCreateChildFeature } /// - /// Sets a property in the dictionary. + /// Adds one or more providers to the list. /// This is a shortcut for nested calls on this object. /// public virtual FeatureDefinition WithProviders(params string[] providers) From b407da2f0985b0107d61b763904dcede70a09d82 Mon Sep 17 00:00:00 2001 From: Hamza Albreem <94292623+braim23@users.noreply.github.com> Date: Wed, 15 Feb 2023 12:26:38 +0300 Subject: [PATCH 3/5] Fixing the namespaces in the documentation --- docs/en/Tutorials/Todo/Single-Layer/Index.md | 21 ++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/en/Tutorials/Todo/Single-Layer/Index.md b/docs/en/Tutorials/Todo/Single-Layer/Index.md index 744aff88ad..ac6a89faea 100644 --- a/docs/en/Tutorials/Todo/Single-Layer/Index.md +++ b/docs/en/Tutorials/Todo/Single-Layer/Index.md @@ -255,7 +255,7 @@ Before starting to implement these use cases, first we need to create a DTO clas [Application services](../../../Application-Services.md) typically get and return DTOs ([Data Transfer Objects](../../../Data-Transfer-Objects.md)) instead of entities. So, create a new `TodoItemDto` class under the `Services/Dtos` folder{{if UI=="Blazor"}} of your `TodoApp.Contracts` project{{end}}: ```csharp -namespace TodoApp{{if UI=="Blazor"}}.Contracts{{end}}.Services.Dtos; +namespace TodoApp.Services.Dtos; public class TodoItemDto { @@ -273,10 +273,10 @@ This is a very simple DTO class that has the same properties as the `TodoItem` e Create a `ITodoAppService` interface under the `Services` folder of the `TodoApp.Contracts` project, as shown below: ```csharp -using TodoApp.Contracts.Services.Dtos; +using TodoApp.Services.Dtos; using Volo.Abp.Application.Services; -namespace TodoApp.Contracts.Services; +namespace TodoApp.Services; public interface ITodoAppService : IApplicationService { @@ -296,17 +296,18 @@ Create a `TodoAppService` class under the `Services` folder of {{if UI=="Blazor" ```csharp {{if UI=="Blazor"}} -using TodoApp.Contracts.Services; -using TodoApp.Contracts.Services.Dtos; -using TodoApp.Host.Entities; +using TodoApp.Services; +using TodoApp.Services.Dtos; +using TodoApp.Entities; using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Repositories; {{else}} using TodoApp.Entities; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; -{{end}} -namespace TodoApp{{if UI=="Blazor"}}.Host{{end}}.Services; + +namespace TodoApp.Services; public class TodoAppService : ApplicationService{{if UI=="Blazor"}}, ITodoAppService{{end}} { @@ -562,8 +563,8 @@ Open the `Index.razor.cs` file in the `Pages` folder{{if UI=="Blazor"}} in your ```csharp {{if UI=="Blazor"}} using Microsoft.AspNetCore.Components; -using TodoApp.Contracts.Services; -using TodoApp.Contracts.Services.Dtos; +using TodoApp.Services; +using TodoApp.Services.Dtos; {{else}} using Microsoft.AspNetCore.Components; using TodoApp.Services; From 95cab6cbed0e00ffafc90dc892297d989a36022e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= <30300440+bariscanyilmaz@users.noreply.github.com> Date: Wed, 15 Feb 2023 13:09:19 +0300 Subject: [PATCH 4/5] fix lint --- .../src/lib/components/permission-management.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 de285fd147..3d52624990 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 @@ -110,10 +110,10 @@ export class PermissionManagementComponent modalBusy = false; - trackByFn: TrackByFunction = (_, item) => item.name; - selectedGroupPermissions: PermissionWithStyle[] = []; + trackByFn: TrackByFunction = (_, item) => item.name; + constructor(protected service: PermissionsService, protected configState: ConfigStateService) {} getChecked(name: string) { From 2d1f34ce801e0710049283487ed630697bce8e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 16 Feb 2023 11:34:47 +0300 Subject: [PATCH 5/5] Switch Angular Dev-App to LeptonX-Lite --- npm/ng-packs/angular.json | 51 +++++++++++++++++-- .../apps/dev-app/src/app/app.module.ts | 6 ++- npm/ng-packs/package.json | 29 ++++++----- 3 files changed, 66 insertions(+), 20 deletions(-) diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json index 01e482cd85..7138cb5a38 100644 --- a/npm/ng-packs/angular.json +++ b/npm/ng-packs/angular.json @@ -195,15 +195,55 @@ "assets": ["apps/dev-app/src/favicon.ico", "apps/dev-app/src/assets"], "styles": [ { - "input": "node_modules/bootstrap/dist/css/bootstrap.rtl.min.css", + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.css", "inject": false, - "bundleName": "bootstrap-rtl.min" + "bundleName": "bootstrap-dim" }, { - "input": "node_modules/bootstrap/dist/css/bootstrap.min.css", - "inject": true, - "bundleName": "bootstrap-ltr.min" + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.css", + "inject": false, + "bundleName": "ng-bundle" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.css", + "inject": false, + "bundleName": "layout-bundle" + }, + { + "input": "node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.css", + "inject": false, + "bundleName": "abp-bundle" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/bootstrap-dim.rtl.css", + "inject": false, + "bundleName": "bootstrap-dim.rtl" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/ng-bundle.rtl.css", + "inject": false, + "bundleName": "ng-bundle.rtl" + }, + { + "input": "node_modules/@volo/ngx-lepton-x.lite/assets/css/side-menu/layout-bundle.rtl.css", + "inject": false, + "bundleName": "layout-bundle.rtl" + }, + { + "input": "node_modules/@abp/ng.theme.lepton-x/assets/css/abp-bundle.rtl.css", + "inject": false, + "bundleName": "abp-bundle.rtl" + }, + { + "input":"node_modules/@volo/ngx-lepton-x.lite/assets/css/font-bundle.rtl.css", + "inject":false, + "bundleName":"font-bundle.rtl" }, + { + "input":"node_modules/@volo/ngx-lepton-x.lite/assets/css/font-bundle.css", + "inject":false, + "bundleName":"font-bundle" + }, { "input": "node_modules/@fortawesome/fontawesome-free/css/all.min.css", "inject": true, @@ -234,6 +274,7 @@ "inject": false, "bundleName": "ng-zorro-antd-tree" }, + "node_modules/bootstrap-icons/font/bootstrap-icons.css", "apps/dev-app/src/styles.scss" ], "scripts": [] diff --git a/npm/ng-packs/apps/dev-app/src/app/app.module.ts b/npm/ng-packs/apps/dev-app/src/app/app.module.ts index 52ebd38362..86e29cf0d1 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app.module.ts @@ -4,7 +4,8 @@ import { registerLocale } from '@abp/ng.core/locale'; import { IdentityConfigModule } from '@abp/ng.identity/config'; import { SettingManagementConfigModule } from '@abp/ng.setting-management/config'; import { TenantManagementConfigModule } from '@abp/ng.tenant-management/config'; -import { ThemeBasicModule } from '@abp/ng.theme.basic'; +import { ThemeLeptonXModule } from "@abp/ng.theme.lepton-x"; +import { SideMenuLayoutModule } from "@abp/ng.theme.lepton-x/layouts"; import { ThemeSharedModule } from '@abp/ng.theme.shared'; import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; @@ -34,7 +35,8 @@ import { AbpOAuthModule } from '@abp/ng.oauth'; TenantManagementConfigModule.forRoot(), FeatureManagementModule.forRoot(), SettingManagementConfigModule.forRoot(), - ThemeBasicModule.forRoot(), + ThemeLeptonXModule.forRoot(), + SideMenuLayoutModule.forRoot() ], providers: [APP_ROUTE_PROVIDER], declarations: [AppComponent], diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 7e302ee20d..600c047ff4 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -42,6 +42,18 @@ }, "private": true, "devDependencies": { + "@abp/ng.account": "~7.1.0-rc.1", + "@abp/ng.account.core": "~7.1.0-rc.1", + "@abp/ng.core": "~7.1.0-rc.1", + "@abp/ng.feature-management": "~7.1.0-rc.1", + "@abp/ng.identity": "~7.1.0-rc.1", + "@abp/ng.oauth": "~7.1.0-rc.1", + "@abp/ng.permission-management": "~7.1.0-rc.1", + "@abp/ng.schematics": "~7.1.0-rc.1", + "@abp/ng.setting-management": "~7.1.0-rc.1", + "@abp/ng.tenant-management": "~7.1.0-rc.1", + "@abp/ng.theme.basic": "~7.1.0-rc.1", + "@abp/ng.theme.shared": "~7.1.0-rc.1", "@abp/utils": "~7.1.0-rc.1", "@angular-devkit/build-angular": "~15.0.1", "@angular-devkit/build-ng-packagr": "^0.1002.0", @@ -61,18 +73,6 @@ "@angular/platform-browser": "~15.0.1", "@angular/platform-browser-dynamic": "~15.0.1", "@angular/router": "~15.0.1", - "@abp/ng.account": "~7.1.0-rc.1", - "@abp/ng.account.core": "~7.1.0-rc.1", - "@abp/ng.core": "~7.1.0-rc.1", - "@abp/ng.oauth": "~7.1.0-rc.1", - "@abp/ng.feature-management": "~7.1.0-rc.1", - "@abp/ng.identity": "~7.1.0-rc.1", - "@abp/ng.permission-management": "~7.1.0-rc.1", - "@abp/ng.schematics": "~7.1.0-rc.1", - "@abp/ng.setting-management": "~7.1.0-rc.1", - "@abp/ng.tenant-management": "~7.1.0-rc.1", - "@abp/ng.theme.basic": "~7.1.0-rc.1", - "@abp/ng.theme.shared": "~7.1.0-rc.1", "@fortawesome/fontawesome-free": "^5.15.4", "@ng-bootstrap/ng-bootstrap": "^14.0.0", "@ngneat/spectator": "^10.0.0", @@ -129,7 +129,10 @@ "typescript": "4.8.4", "zone.js": "0.11.4" }, - "dependencies": {}, + "dependencies": { + "@abp/ng.theme.lepton-x": "^2.1.0-rc.1", + "bootstrap-icons": "^1.10.3" + }, "lint-staged": { "**/*.{js,jsx,ts,tsx}": [ "npx prettier --write --config .prettierrc "