From 523843e651e44daa4ffd5e7c3dfb79576b6fe702 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Jun 2021 13:20:16 +0300 Subject: [PATCH] add an injection token named NGX_DATATABLE_MESSAGES resolves #9343 --- .../ngx-datatable-list.directive.ts | 22 +++++++++++++------ .../theme-shared/src/lib/tokens/index.ts | 1 + .../tokens/ngx-datatable-messages.token.ts | 17 ++++++++++++++ 3 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 npm/ng-packs/packages/theme-shared/src/lib/tokens/ngx-datatable-messages.token.ts diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts index 38ebee5352..cf800db556 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts @@ -2,14 +2,21 @@ import { ListService, LocalizationService } from '@abp/ng.core'; import { ChangeDetectorRef, Directive, + Inject, Input, OnChanges, OnDestroy, OnInit, + Optional, SimpleChanges, } from '@angular/core'; import { DatatableComponent } from '@swimlane/ngx-datatable'; import { Subscription } from 'rxjs'; +import { + defaultNgxDatatableMessages, + NgxDatatableMessages, + NGX_DATATABLE_MESSAGES, +} from '../tokens/ngx-datatable-messages.token'; @Directive({ // tslint:disable-next-line @@ -26,6 +33,7 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { private table: DatatableComponent, private cdRef: ChangeDetectorRef, private localizationService: LocalizationService, + @Optional() @Inject(NGX_DATATABLE_MESSAGES) private ngxDatatableMessages: NgxDatatableMessages, ) { this.setInitialValues(); } @@ -33,14 +41,14 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { private setInitialValues() { this.table.externalPaging = true; this.table.externalSorting = true; + + const { emptyMessage, selectedMessage, totalMessage } = + this.ngxDatatableMessages || defaultNgxDatatableMessages; + this.table.messages = { - emptyMessage: this.localizationService.localizeSync( - 'AbpUi', - 'NoDataAvailableInDatatable', - 'No data available', - ), - totalMessage: this.localizationService.localizeSync('AbpUi', 'Total', 'total'), - selectedMessage: this.localizationService.localizeSync('AbpUi', 'Selected', 'selected'), + emptyMessage: this.localizationService.instant(emptyMessage), + totalMessage: this.localizationService.instant(totalMessage), + selectedMessage: this.localizationService.instant(selectedMessage), }; } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts index 18a2aac2f6..148c34084c 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts @@ -1,4 +1,5 @@ export * from './append-content.token'; export * from './http-error.token'; export * from './lazy-styles.token'; +export * from './ngx-datatable-messages.token'; export * from './suppress-unsaved-changes-warning.token'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tokens/ngx-datatable-messages.token.ts b/npm/ng-packs/packages/theme-shared/src/lib/tokens/ngx-datatable-messages.token.ts new file mode 100644 index 0000000000..bf1a73ab09 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/tokens/ngx-datatable-messages.token.ts @@ -0,0 +1,17 @@ +import { InjectionToken } from '@angular/core'; + +export interface NgxDatatableMessages { + emptyMessage: string; + totalMessage: string; + selectedMessage: string; +} + +export const defaultNgxDatatableMessages = { + emptyMessage: 'AbpUi::NoDataAvailableInDatatable', + totalMessage: 'AbpUi::Total', + selectedMessage: 'AbpUi::Selected', +}; + +export const NGX_DATATABLE_MESSAGES = new InjectionToken>( + 'NGX_DATATABLE_MESSAGES', +);