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); + } } diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html index 4fcf67fcfc..9991336bf9 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/grid-actions/grid-actions.component.html @@ -1,42 +1,44 @@ @if (actionList.length > 1) { -
- -
- @for (action of actionList; track action.text) { - - - } +
+ +
+ @for (action of actionList; track action.text) { + + + } +
-
-} @if (actionList.length === 1) { - +} + +@if (actionList.length === 1) { + } @if (action.visible(data)) { - + } @@ -60,7 +62,9 @@ type="button" [class]="action.btnClass" [style]="action.btnStyle" - [ngbTooltip]="action.tooltip.text | abpLocalization" [placement]="action.tooltip.placement || 'auto'" container="body" + [ngbTooltip]="action.tooltip.text | abpLocalization" + [placement]="action.tooltip.placement || 'auto'" + container="body" >