diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html
index d30b005a98..d6d80bad42 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html
+++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html
@@ -27,11 +27,11 @@
[sortable]="prop.sortable"
>
-
-
+
+
diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts
index 7768d70c2c..2e866d467f 100644
--- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts
+++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.ts
@@ -9,6 +9,11 @@ import {
LOCALE_ID,
TemplateRef,
TrackByFunction,
+ Type,
+ InjectionToken,
+ InjectFlags,
+ SimpleChanges,
+ OnChanges,
} from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@@ -25,7 +30,7 @@ const DEFAULT_ACTIONS_COLUMN_WIDTH = 150;
templateUrl: './extensible-table.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class ExtensibleTableComponent {
+export class ExtensibleTableComponent implements OnChanges {
@Input() actionsText: string;
@Input() data: R[];
@Input() list: ListService;
@@ -35,6 +40,8 @@ export class ExtensibleTableComponent {
}
@Input() actionsTemplate: TemplateRef;
+ getInjected: (token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags) => T;
+
readonly columnWidths: number[];
readonly propList: EntityPropList;
@@ -42,6 +49,8 @@ export class ExtensibleTableComponent {
readonly trackByFn: TrackByFunction> = (_, item) => item.name;
constructor(@Inject(LOCALE_ID) private locale: string, injector: Injector) {
+ // tslint:disable-next-line
+ this.getInjected = injector.get.bind(injector);
const extensions = injector.get(ExtensionsService);
const name = injector.get(EXTENSIONS_IDENTIFIER);
this.propList = extensions.entityProps.get(name).props;
@@ -85,4 +94,18 @@ export class ExtensibleTableComponent {
}),
);
}
+
+ ngOnChanges({ data }: SimpleChanges) {
+ if (!data?.currentValue) return;
+
+ this.data = data.currentValue.map((record, index) => {
+ this.propList.forEach(prop => {
+ const propData = { getInjected: this.getInjected, record, index } as any;
+ record[`${prop.value.name}Visible`] = prop.value.visible(propData);
+ record[`${prop.value.name}Value`] = this.getContent(prop.value, propData);
+ });
+
+ return record;
+ });
+ }
}