Browse Source

Merge pull request #19846 from abpframework/issue-19837

Angular - Extensible table logic errors for action list
pull/19854/head
oykuermann 2 years ago
committed by GitHub
parent
commit
2ab494612c
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html
  2. 29
      npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts

2
npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html

@ -17,7 +17,7 @@
*ngTemplateOutlet="actionsTemplate || gridActions; context: { $implicit: row, index: i }" *ngTemplateOutlet="actionsTemplate || gridActions; context: { $implicit: row, index: i }"
></ng-container> ></ng-container>
<ng-template #gridActions> <ng-template #gridActions>
@if (hasAvailableActions(row)) { @if (isVisibleActions(row)) {
<abp-grid-actions [index]="i" [record]="row" text="AbpUi::Actions"></abp-grid-actions> <abp-grid-actions [index]="i" [record]="row" text="AbpUi::Actions"></abp-grid-actions>
} }
</ng-template> </ng-template>

29
npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts

@ -206,20 +206,25 @@ export class ExtensibleTableComponent<R = any> implements OnChanges {
}); });
} }
hasAvailableActions(rowData): boolean { isVisibleActions(rowData: any): boolean {
let isActionAvailable = true; const actions = this.actionList.toArray();
this.actionList.toArray().map(action => { const visibleActions = actions.filter(action => {
const { visible, permission } = action; const { visible, permission } = action;
if (rowData && action) {
const visibilityCheck = visible({ let isVisible = true;
record: rowData, let hasPermission = true;
getInjected: this.getInjected,
}); if (visible) {
const permissionCheck = this.permissionService.getGrantedPolicy(permission); isVisible = visible({ record: rowData, getInjected: this.getInjected });
}
isActionAvailable = visibilityCheck && permissionCheck;
if (permission) {
hasPermission = this.permissionService.getGrantedPolicy(permission);
} }
return isVisible && hasPermission;
}); });
return isActionAvailable;
return visibleActions.length > 0;
} }
} }

Loading…
Cancel
Save