add an injection token named NGX_DATATABLE_MESSAGES

resolves #9343
pull/9346/head
mehmet-erim 4 years ago
parent 6643863c99
commit 523843e651

@ -2,14 +2,21 @@ import { ListService, LocalizationService } from '@abp/ng.core';
import { import {
ChangeDetectorRef, ChangeDetectorRef,
Directive, Directive,
Inject,
Input, Input,
OnChanges, OnChanges,
OnDestroy, OnDestroy,
OnInit, OnInit,
Optional,
SimpleChanges, SimpleChanges,
} from '@angular/core'; } from '@angular/core';
import { DatatableComponent } from '@swimlane/ngx-datatable'; import { DatatableComponent } from '@swimlane/ngx-datatable';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import {
defaultNgxDatatableMessages,
NgxDatatableMessages,
NGX_DATATABLE_MESSAGES,
} from '../tokens/ngx-datatable-messages.token';
@Directive({ @Directive({
// tslint:disable-next-line // tslint:disable-next-line
@ -26,6 +33,7 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit {
private table: DatatableComponent, private table: DatatableComponent,
private cdRef: ChangeDetectorRef, private cdRef: ChangeDetectorRef,
private localizationService: LocalizationService, private localizationService: LocalizationService,
@Optional() @Inject(NGX_DATATABLE_MESSAGES) private ngxDatatableMessages: NgxDatatableMessages,
) { ) {
this.setInitialValues(); this.setInitialValues();
} }
@ -33,14 +41,14 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit {
private setInitialValues() { private setInitialValues() {
this.table.externalPaging = true; this.table.externalPaging = true;
this.table.externalSorting = true; this.table.externalSorting = true;
const { emptyMessage, selectedMessage, totalMessage } =
this.ngxDatatableMessages || defaultNgxDatatableMessages;
this.table.messages = { this.table.messages = {
emptyMessage: this.localizationService.localizeSync( emptyMessage: this.localizationService.instant(emptyMessage),
'AbpUi', totalMessage: this.localizationService.instant(totalMessage),
'NoDataAvailableInDatatable', selectedMessage: this.localizationService.instant(selectedMessage),
'No data available',
),
totalMessage: this.localizationService.localizeSync('AbpUi', 'Total', 'total'),
selectedMessage: this.localizationService.localizeSync('AbpUi', 'Selected', 'selected'),
}; };
} }

@ -1,4 +1,5 @@
export * from './append-content.token'; export * from './append-content.token';
export * from './http-error.token'; export * from './http-error.token';
export * from './lazy-styles.token'; export * from './lazy-styles.token';
export * from './ngx-datatable-messages.token';
export * from './suppress-unsaved-changes-warning.token'; export * from './suppress-unsaved-changes-warning.token';

@ -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<Partial<NgxDatatableMessages>>(
'NGX_DATATABLE_MESSAGES',
);
Loading…
Cancel
Save