From 08d7ac317acfd460df9a5caac7beda56cbd5c51a Mon Sep 17 00:00:00 2001 From: sumeyyeKurtulus Date: Tue, 30 Apr 2024 10:14:33 +0300 Subject: [PATCH] update: permission service injection is generalized and action list check is added --- .../extensible-table.component.html | 116 +++++++++--------- .../extensible-table.component.ts | 9 +- 2 files changed, 68 insertions(+), 57 deletions(-) diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html index 5b28627085..59d50a40ec 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html @@ -6,62 +6,68 @@ (activate)="tableActivate.emit($event)" > @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) { - - - - - - - - - } @for (prop of propList; track prop.name; let i = $index) { - - - @if (prop.tooltip) { - - {{ column.name }} - - }@else{ - {{ column.name }} - } - - - - - @if (!row['_' + prop.name].component) { -
- }@else{ - + + + + + @if (hasAvailableActions(i, row)) { + } + + + + } + @for (prop of propList; track prop.name; let i = $index) { + + + @if (prop.tooltip) { + + {{ column.name }} + + } @else { + {{ column.name }} + } + + + + + @if (!row['_' + prop.name].component) { +
+ } @else { + + } +
-
-
-
+ + } diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts index 0018f90985..8ed24133f2 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts @@ -109,6 +109,7 @@ export class ExtensibleTableComponent implements OnChanges { entityPropTypeClasses = inject(ENTITY_PROP_TYPE_CLASSES); #injector = inject(Injector); getInjected = this.#injector.get.bind(this.#injector); + permissionService = this.#injector.get(PermissionService); constructor() { const extensions = this.#injector.get(ExtensionsService); @@ -117,9 +118,8 @@ export class ExtensibleTableComponent implements OnChanges { this.actionList = extensions['entityActions'].get(name) .actions as unknown as EntityActionList; - const permissionService = this.#injector.get(PermissionService); this.hasAtLeastOnePermittedAction = - permissionService.filterItemsByPolicy( + this.permissionService.filterItemsByPolicy( this.actionList.toArray().map(action => ({ requiredPolicy: action.permission })), ).length > 0; this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH); @@ -205,4 +205,9 @@ export class ExtensibleTableComponent implements OnChanges { return record; }); } + + hasAvailableActions(index, row): boolean { + const { permission, visible } = this.actionList.get(index).value; + return this.permissionService.getGrantedPolicy(permission) && visible(row); + } }