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] 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) {