From b32718eec7d355199eea89add002a07ce6424c3f Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 10 Jan 2020 10:04:05 +0300 Subject: [PATCH] fix(theme-shared): fix confirmation and toaster type errors --- .../confirmation/confirmation.component.html | 14 +++++---- .../confirmation/confirmation.component.ts | 8 ++--- .../src/lib/models/confirmation.ts | 1 - .../theme-shared/src/lib/models/toaster.ts | 6 ++-- .../src/lib/services/confirmation.service.ts | 2 +- .../src/lib/services/toaster.service.ts | 29 +++++++++++++++---- .../src/lib/tests/error.handler.spec.ts | 13 +++++---- .../src/lib/tests/modal.component.spec.ts | 10 +++++-- 8 files changed, 54 insertions(+), 29 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.html b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.html index b85fe4bc9b..82041d6b5a 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.html +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.html @@ -6,26 +6,28 @@

- {{ data.title | abpLocalization: titleLocalizationParams }} + {{ title }}

- {{ data.message | abpLocalization: messageLocalizationParams }} + {{ message }}

diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts index 6de221e642..365f878f6d 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts @@ -32,17 +32,17 @@ export class ConfirmationComponent { } } - get titleLocalizationParams(): string { + get title(): string { return this.localizationService.instant( this.data.title, - ...this.data.options.titleLocalizationParams, + ...(this.data.options.titleLocalizationParams || []), ); } - get messageLocalizationParams(): string { + get message(): string { return this.localizationService.instant( this.data.message, - ...this.data.options.messageLocalizationParams, + ...(this.data.options.messageLocalizationParams || []), ); } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts index 6e890b8b19..40925c1b2c 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts @@ -1,4 +1,3 @@ -import { Toaster } from './toaster'; import { Config } from '@abp/ng.core'; export namespace Confirmation { diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts index 4f407d129d..34fe04f351 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts @@ -1,3 +1,5 @@ +import { Config } from '@abp/ng.core'; + export namespace Toaster { export interface ToastOptions { life?: number; @@ -11,8 +13,8 @@ export namespace Toaster { } export interface Toast { - message: string; - title?: string; + message: Config.LocalizationParam; + title?: Config.LocalizationParam; severity?: string; options?: ToastOptions; } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts index 606ae83706..d90980c1bf 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts @@ -48,7 +48,6 @@ export class ConfirmationService { severity?: Toaster.Severity, options?: Partial, ): Observable { - this.listenToEscape(); this.confirmation$.next({ message, title: title || 'AbpUi:AreYouSure', @@ -56,6 +55,7 @@ export class ConfirmationService { options, }); this.status$ = new Subject(); + this.listenToEscape(); return this.status$; } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts b/npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts index 818b44bf97..26d68a5e38 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { Toaster } from '../models'; import { ReplaySubject } from 'rxjs'; +import { Config } from '@abp/ng.core'; @Injectable({ providedIn: 'root', @@ -18,7 +19,11 @@ export class ToasterService { * @param title Title of the toast * @param options Spesific style or structural options for individual toast */ - info(message: string, title?: string, options?: Partial) { + info( + message: Config.LocalizationParam, + title?: Config.LocalizationParam, + options?: Partial, + ) { return this.show(message, title, 'info', options); } @@ -28,7 +33,11 @@ export class ToasterService { * @param title Title of the toast * @param options Spesific style or structural options for individual toast */ - success(message: string, title?: string, options?: Partial) { + success( + message: Config.LocalizationParam, + title?: Config.LocalizationParam, + options?: Partial, + ) { return this.show(message, title, 'success', options); } @@ -38,7 +47,11 @@ export class ToasterService { * @param title Title of the toast * @param options Spesific style or structural options for individual toast */ - warn(message: string, title?: string, options?: Partial) { + warn( + message: Config.LocalizationParam, + title?: Config.LocalizationParam, + options?: Partial, + ) { return this.show(message, title, 'warning', options); } @@ -48,7 +61,11 @@ export class ToasterService { * @param title Title of the toast * @param options Spesific style or structural options for individual toast */ - error(message: string, title?: string, options?: Partial) { + error( + message: Config.LocalizationParam, + title?: Config.LocalizationParam, + options?: Partial, + ) { return this.show(message, title, 'error', options); } @@ -61,8 +78,8 @@ export class ToasterService { */ show( - message: string, - title: string = null, + message: Config.LocalizationParam, + title: Config.LocalizationParam = null, severity: Toaster.Severity = 'neutral', options: Partial = null, ) { diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts index 1be1e31d1c..ec23cd165e 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts @@ -73,10 +73,10 @@ describe('ErrorHandler', () => { it('should display the confirmation when not found error occurs', () => { store.dispatch(new RestOccurError(new HttpErrorResponse({ status: 404 }))); spectator.detectChanges(); - expect(spectator.query('.abp-confirm-summary')).toHaveText( + expect(spectator.query('.confirmation .title')).toHaveText( DEFAULT_ERROR_MESSAGES.defaultError404.title, ); - expect(spectator.query('.abp-confirm-body')).toHaveText( + expect(spectator.query('.confirmation .message')).toHaveText( DEFAULT_ERROR_MESSAGES.defaultError404.details, ); }); @@ -84,10 +84,10 @@ describe('ErrorHandler', () => { it('should display the confirmation when default error occurs', () => { store.dispatch(new RestOccurError(new HttpErrorResponse({ status: 412 }))); spectator.detectChanges(); - expect(spectator.query('.abp-confirm-summary')).toHaveText( + expect(spectator.query('.confirmation .title')).toHaveText( DEFAULT_ERROR_MESSAGES.defaultError.title, ); - expect(spectator.query('.abp-confirm-body')).toHaveText( + expect(spectator.query('.confirmation .message')).toHaveText( DEFAULT_ERROR_MESSAGES.defaultError.details, ); }); @@ -128,8 +128,9 @@ describe('ErrorHandler', () => { ); spectator.detectChanges(); - expect(spectator.query('.abp-confirm-summary')).toHaveText('test message'); - expect(spectator.query('.abp-confirm-body')).toHaveText('test detail'); + console.warn(spectator.query('.confirmation')); + expect(spectator.query('.title')).toHaveText('test message'); + expect(spectator.query('.confirmation .message')).toHaveText('test detail'); }); }); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts index 08656ff2d7..ead6d29a23 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/modal.component.spec.ts @@ -5,14 +5,18 @@ import { MessageService } from 'primeng/components/common/messageservice'; import { ToastModule } from 'primeng/toast'; import { timer } from 'rxjs'; import { ButtonComponent, ConfirmationComponent, ModalComponent } from '../components'; +import { RouterTestingModule } from '@angular/router/testing'; describe('ModalComponent', () => { - let spectator: SpectatorHost; + let spectator: SpectatorHost< + ModalComponent, + { visible: boolean; busy: boolean; ngDirty: boolean } + >; let appearFn; let disappearFn; const createHost = createHostFactory({ component: ModalComponent, - imports: [ToastModule], + imports: [ToastModule, RouterTestingModule], declarations: [ConfirmationComponent, LocalizationPipe, ButtonComponent], providers: [MessageService], mocks: [Store], @@ -82,7 +86,7 @@ describe('ModalComponent', () => { spectator.click('#abp-modal-close-button'); expect(disappearFn).not.toHaveBeenCalled(); - expect(spectator.query('p-toast')).toBeTruthy(); + expect(spectator.query('div.confirmation')).toBeTruthy(); spectator.click('button#cancel'); expect(spectator.query('div.modal')).toBeTruthy();