ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
598 lines (588 loc) • 20.3 kB
JavaScript
import { __assign, __extends } from 'tslib';
import { Subject } from 'rxjs';
import { Overlay, OverlayModule } from '@angular/cdk/overlay';
import { CommonModule } from '@angular/common';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { InjectionToken, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Optional, ViewEncapsulation, ApplicationRef, ComponentFactoryResolver, Injectable, Injector, Input, NgModule, defineInjectable, inject, INJECTOR } from '@angular/core';
import { toCssPixel, moveUpMotion, NzAddOnModule } from 'ng-zorro-antd/core';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var NZ_MESSAGE_DEFAULT_CONFIG = new InjectionToken('NZ_MESSAGE_DEFAULT_CONFIG');
/** @type {?} */
var NZ_MESSAGE_CONFIG = new InjectionToken('NZ_MESSAGE_CONFIG');
/** @type {?} */
var NZ_MESSAGE_DEFAULT_CONFIG_PROVIDER = {
provide: NZ_MESSAGE_DEFAULT_CONFIG,
useValue: {
nzAnimate: true,
nzDuration: 3000,
nzMaxStack: 7,
nzPauseOnHover: true,
nzTop: 24
}
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NzMessageContainerComponent = /** @class */ (function () {
function NzMessageContainerComponent(cdr, defaultConfig, config) {
this.cdr = cdr;
this.messages = [];
this.setConfig(__assign({}, defaultConfig, config));
}
/**
* @param {?} config
* @return {?}
*/
NzMessageContainerComponent.prototype.setConfig = /**
* @param {?} config
* @return {?}
*/
function (config) {
this.config = __assign({}, this.config, config);
this.top = toCssPixel(this.config.nzTop);
this.cdr.markForCheck();
};
/**
* Create a new message.
* @param message Parsed message configuration.
*/
/**
* Create a new message.
* @param {?} message Parsed message configuration.
* @return {?}
*/
NzMessageContainerComponent.prototype.createMessage = /**
* Create a new message.
* @param {?} message Parsed message configuration.
* @return {?}
*/
function (message) {
if (this.messages.length >= this.config.nzMaxStack) {
this.messages.splice(0, 1);
}
message.options = this._mergeMessageOptions(message.options);
message.onClose = new Subject();
this.messages.push(message);
this.cdr.detectChanges();
};
/**
* Remove a message by `messageId`.
* @param messageId Id of the message to be removed.
* @param userAction Whether this is closed by user interaction.
*/
/**
* Remove a message by `messageId`.
* @param {?} messageId Id of the message to be removed.
* @param {?=} userAction Whether this is closed by user interaction.
* @return {?}
*/
NzMessageContainerComponent.prototype.removeMessage = /**
* Remove a message by `messageId`.
* @param {?} messageId Id of the message to be removed.
* @param {?=} userAction Whether this is closed by user interaction.
* @return {?}
*/
function (messageId, userAction) {
var _this = this;
if (userAction === void 0) { userAction = false; }
this.messages.some((/**
* @param {?} message
* @param {?} index
* @return {?}
*/
function (message, index) {
if (message.messageId === messageId) {
_this.messages.splice(index, 1);
_this.cdr.detectChanges();
(/** @type {?} */ (message.onClose)).next(userAction);
(/** @type {?} */ (message.onClose)).complete();
return true;
}
return false;
}));
};
/**
* Remove all messages.
*/
/**
* Remove all messages.
* @return {?}
*/
NzMessageContainerComponent.prototype.removeMessageAll = /**
* Remove all messages.
* @return {?}
*/
function () {
this.messages = [];
this.cdr.detectChanges();
};
/**
* Merge default options and custom message options
* @param options
*/
/**
* Merge default options and custom message options
* @protected
* @param {?=} options
* @return {?}
*/
NzMessageContainerComponent.prototype._mergeMessageOptions = /**
* Merge default options and custom message options
* @protected
* @param {?=} options
* @return {?}
*/
function (options) {
/** @type {?} */
var defaultOptions = {
nzDuration: this.config.nzDuration,
nzAnimate: this.config.nzAnimate,
nzPauseOnHover: this.config.nzPauseOnHover
};
return __assign({}, defaultOptions, options);
};
NzMessageContainerComponent.decorators = [
{ type: Component, args: [{
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
selector: 'nz-message-container',
exportAs: 'nzMessageContainer',
preserveWhitespaces: false,
template: "<div class=\"ant-message\" [style.top]=\"top\">\n <nz-message *ngFor=\"let message of messages; let i = index\" [nzMessage]=\"message\" [nzIndex]=\"i\"></nz-message>\n</div>"
}] }
];
/** @nocollapse */
NzMessageContainerComponent.ctorParameters = function () { return [
{ type: ChangeDetectorRef },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NZ_MESSAGE_DEFAULT_CONFIG,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NZ_MESSAGE_CONFIG,] }] }
]; };
return NzMessageContainerComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var globalCounter = 0;
/**
* @template ContainerClass, MessageData, MessageConfig
*/
var /**
* @template ContainerClass, MessageData, MessageConfig
*/
NzMessageBaseService = /** @class */ (function () {
function NzMessageBaseService(overlay, containerClass, injector, cfr, appRef, _idPrefix) {
if (_idPrefix === void 0) { _idPrefix = ''; }
this.overlay = overlay;
this.containerClass = containerClass;
this.injector = injector;
this.cfr = cfr;
this.appRef = appRef;
this._idPrefix = _idPrefix;
this._container = this.createContainer();
}
/**
* @param {?=} messageId
* @return {?}
*/
NzMessageBaseService.prototype.remove = /**
* @param {?=} messageId
* @return {?}
*/
function (messageId) {
if (messageId) {
this._container.removeMessage(messageId);
}
else {
this._container.removeMessageAll();
}
};
/**
* @param {?} message
* @param {?=} options
* @return {?}
*/
NzMessageBaseService.prototype.createMessage = /**
* @param {?} message
* @param {?=} options
* @return {?}
*/
function (message, options) {
/** @type {?} */
var resultMessage = __assign({}, ((/** @type {?} */ (message))), {
createdAt: new Date(),
messageId: this._generateMessageId(),
options: options
});
this._container.createMessage(resultMessage);
return resultMessage;
};
/**
* @param {?} config
* @return {?}
*/
NzMessageBaseService.prototype.config = /**
* @param {?} config
* @return {?}
*/
function (config) {
this._container.setConfig(config);
};
/**
* @protected
* @return {?}
*/
NzMessageBaseService.prototype._generateMessageId = /**
* @protected
* @return {?}
*/
function () {
return this._idPrefix + globalCounter++;
};
// Manually creating container for overlay to avoid multi-checking error, see: https://github.com/NG-ZORRO/ng-zorro-antd/issues/391
// NOTE: we never clean up the container component and it's overlay resources, if we should, we need to do it by our own codes.
// Manually creating container for overlay to avoid multi-checking error, see: https://github.com/NG-ZORRO/ng-zorro-antd/issues/391
// NOTE: we never clean up the container component and it's overlay resources, if we should, we need to do it by our own codes.
/**
* @private
* @return {?}
*/
NzMessageBaseService.prototype.createContainer =
// Manually creating container for overlay to avoid multi-checking error, see: https://github.com/NG-ZORRO/ng-zorro-antd/issues/391
// NOTE: we never clean up the container component and it's overlay resources, if we should, we need to do it by our own codes.
/**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var factory = this.cfr.resolveComponentFactory(this.containerClass);
/** @type {?} */
var componentRef = factory.create(this.injector);
componentRef.changeDetectorRef.detectChanges(); // Immediately change detection to avoid multi-checking error
this.appRef.attachView(componentRef.hostView); // Load view into app root
// Load view into app root
/** @type {?} */
var overlayPane = this.overlay.create().overlayElement;
overlayPane.style.zIndex = '1010'; // Patching: assign the same zIndex of ant-message to it's parent overlay panel, to the ant-message's zindex work.
overlayPane.appendChild((/** @type {?} */ (((/** @type {?} */ (componentRef.hostView))).rootNodes[0])));
return componentRef.instance;
};
return NzMessageBaseService;
}());
var NzMessageService = /** @class */ (function (_super) {
__extends(NzMessageService, _super);
function NzMessageService(overlay, injector, cfr, appRef) {
return _super.call(this, overlay, NzMessageContainerComponent, injector, cfr, appRef, 'message-') || this;
}
// Shortcut methods
// Shortcut methods
/**
* @param {?} content
* @param {?=} options
* @return {?}
*/
NzMessageService.prototype.success =
// Shortcut methods
/**
* @param {?} content
* @param {?=} options
* @return {?}
*/
function (content, options) {
return this.createMessage({ type: 'success', content: content }, options);
};
/**
* @param {?} content
* @param {?=} options
* @return {?}
*/
NzMessageService.prototype.error = /**
* @param {?} content
* @param {?=} options
* @return {?}
*/
function (content, options) {
return this.createMessage({ type: 'error', content: content }, options);
};
/**
* @param {?} content
* @param {?=} options
* @return {?}
*/
NzMessageService.prototype.info = /**
* @param {?} content
* @param {?=} options
* @return {?}
*/
function (content, options) {
return this.createMessage({ type: 'info', content: content }, options);
};
/**
* @param {?} content
* @param {?=} options
* @return {?}
*/
NzMessageService.prototype.warning = /**
* @param {?} content
* @param {?=} options
* @return {?}
*/
function (content, options) {
return this.createMessage({ type: 'warning', content: content }, options);
};
/**
* @param {?} content
* @param {?=} options
* @return {?}
*/
NzMessageService.prototype.loading = /**
* @param {?} content
* @param {?=} options
* @return {?}
*/
function (content, options) {
return this.createMessage({ type: 'loading', content: content }, options);
};
/**
* @param {?} type
* @param {?} content
* @param {?=} options
* @return {?}
*/
NzMessageService.prototype.create = /**
* @param {?} type
* @param {?} content
* @param {?=} options
* @return {?}
*/
function (type, content, options) {
return this.createMessage({ type: type, content: content }, options);
};
NzMessageService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NzMessageService.ctorParameters = function () { return [
{ type: Overlay },
{ type: Injector },
{ type: ComponentFactoryResolver },
{ type: ApplicationRef }
]; };
/** @nocollapse */ NzMessageService.ngInjectableDef = defineInjectable({ factory: function NzMessageService_Factory() { return new NzMessageService(inject(Overlay), inject(INJECTOR), inject(ComponentFactoryResolver), inject(ApplicationRef)); }, token: NzMessageService, providedIn: "root" });
return NzMessageService;
}(NzMessageBaseService));
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NzMessageComponent = /** @class */ (function () {
function NzMessageComponent(_messageContainer, cdr) {
this._messageContainer = _messageContainer;
this.cdr = cdr;
// Whether to set a timeout to destroy itself.
this._eraseTimer = null;
}
/**
* @return {?}
*/
NzMessageComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
// `NzMessageContainer` does its job so all properties cannot be undefined.
this._options = (/** @type {?} */ (this.nzMessage.options));
if (this._options.nzAnimate) {
this.nzMessage.state = 'enter';
}
this._autoErase = this._options.nzDuration > 0;
if (this._autoErase) {
this._initErase();
this._startEraseTimeout();
}
};
/**
* @return {?}
*/
NzMessageComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this._autoErase) {
this._clearEraseTimeout();
}
};
/**
* @return {?}
*/
NzMessageComponent.prototype.onEnter = /**
* @return {?}
*/
function () {
if (this._autoErase && this._options.nzPauseOnHover) {
this._clearEraseTimeout();
this._updateTTL();
}
};
/**
* @return {?}
*/
NzMessageComponent.prototype.onLeave = /**
* @return {?}
*/
function () {
if (this._autoErase && this._options.nzPauseOnHover) {
this._startEraseTimeout();
}
};
// Remove self
// Remove self
/**
* @protected
* @param {?=} userAction
* @return {?}
*/
NzMessageComponent.prototype._destroy =
// Remove self
/**
* @protected
* @param {?=} userAction
* @return {?}
*/
function (userAction) {
var _this = this;
if (userAction === void 0) { userAction = false; }
if (this._options.nzAnimate) {
this.nzMessage.state = 'leave';
this.cdr.detectChanges();
setTimeout((/**
* @return {?}
*/
function () { return _this._messageContainer.removeMessage(_this.nzMessage.messageId, userAction); }), 200);
}
else {
this._messageContainer.removeMessage(this.nzMessage.messageId, userAction);
}
};
/**
* @private
* @return {?}
*/
NzMessageComponent.prototype._initErase = /**
* @private
* @return {?}
*/
function () {
this._eraseTTL = this._options.nzDuration;
this._eraseTimingStart = Date.now();
};
/**
* @private
* @return {?}
*/
NzMessageComponent.prototype._updateTTL = /**
* @private
* @return {?}
*/
function () {
if (this._autoErase) {
this._eraseTTL -= Date.now() - this._eraseTimingStart;
}
};
/**
* @private
* @return {?}
*/
NzMessageComponent.prototype._startEraseTimeout = /**
* @private
* @return {?}
*/
function () {
var _this = this;
if (this._eraseTTL > 0) {
this._clearEraseTimeout();
this._eraseTimer = setTimeout((/**
* @return {?}
*/
function () { return _this._destroy(); }), this._eraseTTL);
this._eraseTimingStart = Date.now();
}
else {
this._destroy();
}
};
/**
* @private
* @return {?}
*/
NzMessageComponent.prototype._clearEraseTimeout = /**
* @private
* @return {?}
*/
function () {
if (this._eraseTimer !== null) {
clearTimeout(this._eraseTimer);
this._eraseTimer = null;
}
};
NzMessageComponent.decorators = [
{ type: Component, args: [{
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
selector: 'nz-message',
exportAs: 'nzMessage',
preserveWhitespaces: false,
animations: [moveUpMotion],
template: "<div class=\"ant-message-notice\"\n [@moveUpMotion]=\"nzMessage.state\"\n (mouseenter)=\"onEnter()\"\n (mouseleave)=\"onLeave()\">\n <div class=\"ant-message-notice-content\">\n <div class=\"ant-message-custom-content\" [ngClass]=\"'ant-message-' + nzMessage.type\">\n <ng-container [ngSwitch]=\"nzMessage.type\">\n <i *ngSwitchCase=\"'success'\" nz-icon type=\"check-circle\"></i>\n <i *ngSwitchCase=\"'info'\" nz-icon type=\"info-circle\"></i>\n <i *ngSwitchCase=\"'warning'\" nz-icon type=\"exclamation-circle\"></i>\n <i *ngSwitchCase=\"'error'\" nz-icon type=\"close-circle\"></i>\n <i *ngSwitchCase=\"'loading'\" nz-icon type=\"loading\"></i>\n </ng-container>\n <ng-container *nzStringTemplateOutlet=\"nzMessage.content\">\n <span [innerHTML]=\"nzMessage.content\"></span>\n </ng-container>\n </div>\n </div>\n</div>\n"
}] }
];
/** @nocollapse */
NzMessageComponent.ctorParameters = function () { return [
{ type: NzMessageContainerComponent },
{ type: ChangeDetectorRef }
]; };
NzMessageComponent.propDecorators = {
nzMessage: [{ type: Input }],
nzIndex: [{ type: Input }]
};
return NzMessageComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NzMessageModule = /** @class */ (function () {
function NzMessageModule() {
}
NzMessageModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, OverlayModule, NzIconModule, NzAddOnModule],
declarations: [NzMessageContainerComponent, NzMessageComponent],
providers: [NZ_MESSAGE_DEFAULT_CONFIG_PROVIDER, NzMessageService],
entryComponents: [NzMessageContainerComponent]
},] }
];
return NzMessageModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { NzMessageBaseService, NzMessageService, NzMessageModule, NzMessageComponent, NzMessageContainerComponent, NZ_MESSAGE_DEFAULT_CONFIG, NZ_MESSAGE_CONFIG, NZ_MESSAGE_DEFAULT_CONFIG_PROVIDER };
//# sourceMappingURL=ng-zorro-antd-message.js.map