ng-ytl-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
60 lines (53 loc) • 2 kB
text/typescript
import { Component, Inject, OnInit, Optional, ViewEncapsulation } from '@angular/core';
import { NzMessageConfig, NZ_MESSAGE_CONFIG, NZ_MESSAGE_DEFAULT_CONFIG } from './nz-message-config';
import { NzMessageDataFilled, NzMessageDataOptions } from './nz-message.definitions';
export class NzMessageContainerComponent {
messages: NzMessageDataFilled[] = [];
config: NzMessageConfig;
constructor( defaultConfig: NzMessageConfig,
config: NzMessageConfig) {
this.config = { ...defaultConfig, ...config };
}
// Create a new message
createMessage(message: NzMessageDataFilled): void {
if (this.messages.length >= this.config.nzMaxStack) {
this.messages.splice(0, 1);
}
message.options = this._mergeMessageOptions(message.options);
this.messages.push(message);
}
// Remove a message by messageId
removeMessage(messageId: string): void {
this.messages.some((message, index) => {
if (message.messageId === messageId) {
this.messages.splice(index, 1);
return true;
}
});
}
// Remove all messages
removeMessageAll(): void {
this.messages = [];
}
// Merge default options and cutom message options
protected _mergeMessageOptions(options: NzMessageDataOptions): NzMessageDataOptions {
const defaultOptions: NzMessageDataOptions = {
nzDuration: this.config.nzDuration,
nzAnimate: this.config.nzAnimate,
nzPauseOnHover: this.config.nzPauseOnHover
};
return { ...defaultOptions, ...options };
}
}