From 7766fa622239e9f1a053227d8f5bb956df420773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sinan=20=C3=96zt=C3=BCrk?= Date: Mon, 11 Dec 2023 12:03:33 +0300 Subject: [PATCH 1/4] fix grant all permissions checkbox does not affect Select all checkbox --- .../src/lib/components/permission-management.component.ts | 1 + 1 file changed, 1 insertion(+) 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 2609d92198..fe50c4cc88 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 @@ -254,6 +254,7 @@ export class PermissionManagementComponent this.selectThisTab = !this.selectAllTab; this.setTabCheckboxState(); } + this.onChangeGroup(this.selectedGroup); } onChangeGroup(group: PermissionGroupDto) { From 8b42625eea895c4e72298f11c449e010dc590409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sinan=20=C3=96zt=C3=BCrk?= Date: Mon, 11 Dec 2023 15:57:53 +0300 Subject: [PATCH 2/4] fix when click to tab permission --- .../permission-management.component.ts | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 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 fe50c4cc88..904d4b10cb 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 @@ -49,9 +49,8 @@ type PermissionWithGroupName = PermissionGrantInfoDto & { }) export class PermissionManagementComponent implements - PermissionManagement.PermissionManagementComponentInputs, - PermissionManagement.PermissionManagementComponentOutputs -{ + PermissionManagement.PermissionManagementComponentInputs, + PermissionManagement.PermissionManagementComponentOutputs { @Input() readonly providerName!: string; @@ -118,7 +117,7 @@ export class PermissionManagementComponent trackByFn: TrackByFunction = (_, item) => item.name; - constructor(protected service: PermissionsService, protected configState: ConfigStateService) {} + constructor(protected service: PermissionsService, protected configState: ConfigStateService) { } getChecked(name: string) { return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted; @@ -131,21 +130,19 @@ export class PermissionManagementComponent return; } - const margin = `margin-${ - (document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left' - }.px`; + const margin = `margin-${(document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left' + }.px`; const permissions = (this.data.groups.find(group => group.name === this.selectedGroup?.name) || {}).permissions || []; - this.selectedGroupPermissions = permissions.map( permission => - ({ - ...permission, - style: { [margin]: findMargin(permissions, permission) }, - isGranted: (this.permissions.find(per => per.name === permission.name) || {}).isGranted, - } as unknown as PermissionWithStyle), + ({ + ...permission, + style: { [margin]: findMargin(permissions, permission) }, + isGranted: (this.permissions.find(per => per.name === permission.name) || {}).isGranted, + } as unknown as PermissionWithStyle), ); } @@ -174,7 +171,7 @@ export class PermissionManagementComponent this.isGrantedByOtherProviderName(clickedPermission.grantedProviders) ) return; - + this.setSelectedGroup(this.selectedGroup); setTimeout(() => { this.permissions = this.permissions.map(per => { if (clickedPermission.name === per.name) { @@ -186,11 +183,21 @@ export class PermissionManagementComponent } return per; }); + this.updateSelectedGroupPermissions(clickedPermission); this.setTabCheckboxState(); this.setGrantCheckboxState(); }, 0); } + updateSelectedGroupPermissions(clickedPermissions: PermissionGrantInfoDto) { + this.selectedGroupPermissions = this.selectedGroupPermissions.map(per => { + if (per.name === clickedPermissions.name) { + per.isGranted = !per.isGranted + } + return per; + }) + } + setTabCheckboxState() { const selectableGroupPermissions = this.selectedGroupPermissions.filter(per => per.grantedProviders.every(p => p.providerName === this.providerName), @@ -269,7 +276,7 @@ export class PermissionManagementComponent const changedPermissions: UpdatePermissionDto[] = this.permissions .filter(per => (unchangedPermissions.find(unchanged => unchanged.name === per.name) || {}).isGranted === - per.isGranted + per.isGranted ? false : true, ) From c02c214220d184fa0ba9f34779f38f95f4d2379c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sinan=20=C3=96zt=C3=BCrk?= Date: Mon, 11 Dec 2023 17:26:07 +0300 Subject: [PATCH 3/4] autoselect parent permission when clicked child route --- .../permission-management.component.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) 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 904d4b10cb..e5b3d56265 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 @@ -186,9 +186,44 @@ export class PermissionManagementComponent this.updateSelectedGroupPermissions(clickedPermission); this.setTabCheckboxState(); this.setGrantCheckboxState(); + this.setParentClicked(clickedPermission); }, 0); } + setParentClicked(clickedPermissions: PermissionGrantInfoDto) { + let childPermissionGrantedCount = 0; + let parentPermission: PermissionGrantInfoDto; + console.log({ clickedPermissions }); + + if (clickedPermissions.parentName) { + this.permissions.forEach(per => { + if (per.name === clickedPermissions.parentName) { + parentPermission = per; + } + }) + this.permissions.forEach(per => { + if (parentPermission.name === per.parentName) { + per.isGranted && childPermissionGrantedCount++; + } + }) + if (childPermissionGrantedCount === 1 && !parentPermission.isGranted) { + this.permissions = this.permissions.map(per => { + if (per.name === parentPermission.name) { + per.isGranted = true; + } + return per; + }) + } + return; + } + this.permissions = this.permissions.map(per => { + if (per.parentName === clickedPermissions.name) { + per.isGranted = false; + } + return per; + }) + } + updateSelectedGroupPermissions(clickedPermissions: PermissionGrantInfoDto) { this.selectedGroupPermissions = this.selectedGroupPermissions.map(per => { if (per.name === clickedPermissions.name) { From ddb7b1983c97330193d667dd24c63914c1a6c75e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sinan=20=C3=96zt=C3=BCrk?= Date: Mon, 11 Dec 2023 17:26:36 +0300 Subject: [PATCH 4/4] remove console.log() --- .../src/lib/components/permission-management.component.ts | 1 - 1 file changed, 1 deletion(-) 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 e5b3d56265..4cb90a0fff 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 @@ -193,7 +193,6 @@ export class PermissionManagementComponent setParentClicked(clickedPermissions: PermissionGrantInfoDto) { let childPermissionGrantedCount = 0; let parentPermission: PermissionGrantInfoDto; - console.log({ clickedPermissions }); if (clickedPermissions.parentName) { this.permissions.forEach(per => {