Browse Source

Merge pull request #18014 from linch90/ng-customize-entity-prop

Angular Data Table Column Extensions enhance
pull/18107/head
Masum ULU 3 years ago
committed by GitHub
parent
commit
98f59620b3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 25
      npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html
  2. 13
      npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts

25
npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html

@ -24,23 +24,24 @@
<ng-container *ngFor="let prop of propList; let i = index; trackBy: trackByFn"> <ng-container *ngFor="let prop of propList; let i = index; trackBy: trackByFn">
<ngx-datatable-column <ngx-datatable-column
*abpVisible="prop.columnVisible(getInjected)"
[width]="columnWidths[i + 1] || 200" [width]="columnWidths[i + 1] || 200"
[name]="prop.displayName | abpLocalization " [name]="prop.displayName | abpLocalization"
[prop]="prop.name" [prop]="prop.name"
[sortable]="prop.sortable" [sortable]="prop.sortable"
> >
<ng-template ngx-datatable-header-template let-column="column" > <ng-template ngx-datatable-header-template let-column="column">
<span <span
*ngIf="prop.tooltip; else elseBlock" *ngIf="prop.tooltip; else elseBlock"
[ngbTooltip]="prop.tooltip | abpLocalization" [ngbTooltip]="prop.tooltip | abpLocalization"
container="body" container="body"
> >
{{column.name}} <i class="fa fa-info-circle" aria-hidden="true"></i> {{ column.name }} <i class="fa fa-info-circle" aria-hidden="true"></i>
</span> </span>
<ng-template #elseBlock> <ng-template #elseBlock>
{{column.name}} {{ column.name }}
</ng-template>
</ng-template> </ng-template>
</ng-template>
<ng-template let-row="row" let-i="index" ngx-datatable-cell-template> <ng-template let-row="row" let-i="index" ngx-datatable-cell-template>
<ng-container *abpPermission="prop.permission; runChangeDetection: false"> <ng-container *abpPermission="prop.permission; runChangeDetection: false">
<ng-container *ngIf="row['_' + prop.name]?.visible"> <ng-container *ngIf="row['_' + prop.name]?.visible">

13
npm/ng-packs/packages/theme-shared/extensions/src/lib/models/entity-props.ts

@ -1,5 +1,5 @@
import { ABP, escapeHtmlChars } from '@abp/ng.core'; import { ABP, escapeHtmlChars } from '@abp/ng.core';
import { Type } from '@angular/core'; import { InjectFlags, InjectOptions, InjectionToken, Type } from '@angular/core';
import { Observable, of } from 'rxjs'; import { Observable, of } from 'rxjs';
import { O } from 'ts-toolbelt'; import { O } from 'ts-toolbelt';
import { ActionCallback } from './actions'; import { ActionCallback } from './actions';
@ -31,6 +31,7 @@ export class EntityProp<R = any> extends Prop<R> {
readonly component?: Type<any>; readonly component?: Type<any>;
readonly enumList?: Array<ABP.Option<any>>; readonly enumList?: Array<ABP.Option<any>>;
readonly tooltip?: string; readonly tooltip?: string;
readonly columnVisible: ColumnPredicate;
constructor(options: EntityPropOptions<R>) { constructor(options: EntityPropOptions<R>) {
super( super(
@ -41,7 +42,8 @@ export class EntityProp<R = any> extends Prop<R> {
options.visible, options.visible,
options.isExtra, options.isExtra,
); );
this.columnVisible = options.columnVisible || (() => true);
this.columnWidth = options.columnWidth; this.columnWidth = options.columnWidth;
this.sortable = options.sortable || false; this.sortable = options.sortable || false;
this.valueResolver = this.valueResolver =
@ -72,6 +74,7 @@ export type EntityPropOptions<R = any> = O.Optional<
O.Writable<EntityProp<R>>, O.Writable<EntityProp<R>>,
| 'permission' | 'permission'
| 'visible' | 'visible'
| 'columnVisible'
| 'displayName' | 'displayName'
| 'isExtra' | 'isExtra'
| 'columnWidth' | 'columnWidth'
@ -85,4 +88,10 @@ export type EntityPropOptions<R = any> = O.Optional<
export type EntityPropDefaults<R = any> = Record<string, EntityProp<R>[]>; export type EntityPropDefaults<R = any> = Record<string, EntityProp<R>[]>;
export type EntityPropContributorCallback<R = any> = PropContributorCallback<EntityPropList<R>>; export type EntityPropContributorCallback<R = any> = PropContributorCallback<EntityPropList<R>>;
export type EntityPropContributorCallbacks<R = any> = PropContributorCallbacks<EntityPropList<R>>; export type EntityPropContributorCallbacks<R = any> = PropContributorCallbacks<EntityPropList<R>>;
export type ColumnPredicate = (getInjected: GetInjected, auxData?: any) => boolean;
export type GetInjected = <T>(
token: Type<T> | InjectionToken<T>,
notFoundValue?: T,
options?: InjectOptions | InjectFlags,
) => T;
type PropDataObject = { [key: string]: any }; type PropDataObject = { [key: string]: any };

Loading…
Cancel
Save