Browse Source

fix when click to tab permission

pull/18429/head
Sinan Öztürk 3 years ago
parent
commit
8b42625eea
  1. 37
      npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

37
npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

@ -49,9 +49,8 @@ type PermissionWithGroupName = PermissionGrantInfoDto & {
}) })
export class PermissionManagementComponent export class PermissionManagementComponent
implements implements
PermissionManagement.PermissionManagementComponentInputs, PermissionManagement.PermissionManagementComponentInputs,
PermissionManagement.PermissionManagementComponentOutputs PermissionManagement.PermissionManagementComponentOutputs {
{
@Input() @Input()
readonly providerName!: string; readonly providerName!: string;
@ -118,7 +117,7 @@ export class PermissionManagementComponent
trackByFn: TrackByFunction<PermissionGroupDto> = (_, item) => item.name; trackByFn: TrackByFunction<PermissionGroupDto> = (_, item) => item.name;
constructor(protected service: PermissionsService, protected configState: ConfigStateService) {} constructor(protected service: PermissionsService, protected configState: ConfigStateService) { }
getChecked(name: string) { getChecked(name: string) {
return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted; return (this.permissions.find(per => per.name === name) || { isGranted: false }).isGranted;
@ -131,21 +130,19 @@ export class PermissionManagementComponent
return; return;
} }
const margin = `margin-${ const margin = `margin-${(document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left'
(document.body.dir as LocaleDirection) === 'rtl' ? 'right' : 'left' }.px`;
}.px`;
const permissions = const permissions =
(this.data.groups.find(group => group.name === this.selectedGroup?.name) || {}).permissions || (this.data.groups.find(group => group.name === this.selectedGroup?.name) || {}).permissions ||
[]; [];
this.selectedGroupPermissions = permissions.map( this.selectedGroupPermissions = permissions.map(
permission => permission =>
({ ({
...permission, ...permission,
style: { [margin]: findMargin(permissions, permission) }, style: { [margin]: findMargin(permissions, permission) },
isGranted: (this.permissions.find(per => per.name === permission.name) || {}).isGranted, isGranted: (this.permissions.find(per => per.name === permission.name) || {}).isGranted,
} as unknown as PermissionWithStyle), } as unknown as PermissionWithStyle),
); );
} }
@ -174,7 +171,7 @@ export class PermissionManagementComponent
this.isGrantedByOtherProviderName(clickedPermission.grantedProviders) this.isGrantedByOtherProviderName(clickedPermission.grantedProviders)
) )
return; return;
this.setSelectedGroup(this.selectedGroup);
setTimeout(() => { setTimeout(() => {
this.permissions = this.permissions.map(per => { this.permissions = this.permissions.map(per => {
if (clickedPermission.name === per.name) { if (clickedPermission.name === per.name) {
@ -186,11 +183,21 @@ export class PermissionManagementComponent
} }
return per; return per;
}); });
this.updateSelectedGroupPermissions(clickedPermission);
this.setTabCheckboxState(); this.setTabCheckboxState();
this.setGrantCheckboxState(); this.setGrantCheckboxState();
}, 0); }, 0);
} }
updateSelectedGroupPermissions(clickedPermissions: PermissionGrantInfoDto) {
this.selectedGroupPermissions = this.selectedGroupPermissions.map(per => {
if (per.name === clickedPermissions.name) {
per.isGranted = !per.isGranted
}
return per;
})
}
setTabCheckboxState() { setTabCheckboxState() {
const selectableGroupPermissions = this.selectedGroupPermissions.filter(per => const selectableGroupPermissions = this.selectedGroupPermissions.filter(per =>
per.grantedProviders.every(p => p.providerName === this.providerName), per.grantedProviders.every(p => p.providerName === this.providerName),
@ -269,7 +276,7 @@ export class PermissionManagementComponent
const changedPermissions: UpdatePermissionDto[] = this.permissions const changedPermissions: UpdatePermissionDto[] = this.permissions
.filter(per => .filter(per =>
(unchangedPermissions.find(unchanged => unchanged.name === per.name) || {}).isGranted === (unchangedPermissions.find(unchanged => unchanged.name === per.name) || {}).isGranted ===
per.isGranted per.isGranted
? false ? false
: true, : true,
) )

Loading…
Cancel
Save