From 2664c4ee5d9aea49e253e0106cbb23932f88a2ee Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 13 Aug 2020 13:14:52 +0300 Subject: [PATCH] feat: added action callback to EntityProp #5047 --- npm/ng-packs/.vscode/settings.json | 4 +--- .../extensible-table/extensible-table.component.html | 2 ++ .../extensible-table/extensible-table.component.ts | 5 +++++ .../theme-shared/extensions/src/lib/models/entity-props.ts | 4 ++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/.vscode/settings.json b/npm/ng-packs/.vscode/settings.json index a04bf7ca0c..9c2678df08 100644 --- a/npm/ng-packs/.vscode/settings.json +++ b/npm/ng-packs/.vscode/settings.json @@ -18,9 +18,7 @@ "titleBar.inactiveForeground": "#e7e7e799", "statusBar.background": "#1d70a2", "statusBarItem.hoverBackground": "#258ecd", - "statusBar.foreground": "#e7e7e7", - "statusBar.border": "#1d70a2", - "titleBar.border": "#1d70a2" + "statusBar.foreground": "#e7e7e7" }, "peacock.color": "#1D70A2" } 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 dc09088430..7cb90c3329 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 @@ -1,5 +1,6 @@ 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 adacc4efa8..ea7ef33687 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 @@ -22,6 +22,7 @@ import { EntityProp, EntityPropList } from '../../models/entity-props'; import { PropData } from '../../models/props'; import { ExtensionsService } from '../../services/extensions.service'; import { EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token'; +import { EntityActionList } from '../../models/entity-actions'; const DEFAULT_ACTIONS_COLUMN_WIDTH = 150; @Component({ @@ -46,6 +47,8 @@ export class ExtensibleTableComponent implements OnChanges { readonly propList: EntityPropList; + readonly actionList: EntityActionList; + readonly trackByFn: TrackByFunction> = (_, item) => item.name; constructor(@Inject(LOCALE_ID) private locale: string, injector: Injector) { @@ -54,6 +57,8 @@ export class ExtensibleTableComponent implements OnChanges { const extensions = injector.get(ExtensionsService); const name = injector.get(EXTENSIONS_IDENTIFIER); this.propList = extensions.entityProps.get(name).props; + this.actionList = (extensions['entityActions'].get(name) + .actions as unknown) as EntityActionList; this.setColumnWidths(DEFAULT_ACTIONS_COLUMN_WIDTH); } diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts index a49a8e8d41..14fd37ad84 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts @@ -11,6 +11,7 @@ import { Props, PropsFactory, } from './props'; +import { ActionCallback } from './actions'; export class EntityPropList extends PropList> {} @@ -26,6 +27,7 @@ export class EntityProp extends Prop { readonly columnWidth: number | undefined; readonly sortable: boolean; readonly valueResolver: PropCallback>; + readonly action: ActionCallback; constructor(options: EntityPropOptions) { super( @@ -40,6 +42,7 @@ export class EntityProp extends Prop { this.columnWidth = options.columnWidth; this.sortable = options.sortable || false; this.valueResolver = options.valueResolver || (data => of(data.record[this.name])); + this.action = options.action || (_ => {}); } static create(options: EntityPropOptions) { @@ -60,6 +63,7 @@ export type EntityPropOptions = O.Optional< | 'columnWidth' | 'sortable' | 'valueResolver' + | 'action' >; export type EntityPropDefaults = Record[]>;