ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
272 lines • 19.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, ApplicationRef, NgZone, ComponentFactoryResolver } from '@angular/core';
import { ToastComponent } from './toast.component';
import { ToastOptions } from './toast-options.provider';
/**
* @record
*/
export function ConfigInterface() { }
if (false) {
/** @type {?|undefined} */
ConfigInterface.prototype.content;
/** @type {?|undefined} */
ConfigInterface.prototype.iconType;
/** @type {?|undefined} */
ConfigInterface.prototype.mask;
}
export class ToastService {
/**
* @param {?} _appRef
* @param {?} _cfr
* @param {?} _zone
*/
constructor(_appRef, _cfr, _zone) {
this._appRef = _appRef;
this._cfr = _cfr;
this._zone = _zone;
this.timeout = null;
this.zone = null;
this.compRef = null;
this.toastCompFactory = null;
this.appRef = null;
this.zone = this._zone;
this.appRef = this._appRef;
this.toastCompFactory = this._cfr.resolveComponentFactory(ToastComponent);
}
/**
* @param {?} config
* @param {?} options
* @return {?}
*/
_initConfig(config, options) {
/** @type {?} */
const props = {};
/** @type {?} */
const optionalParams = ['content', 'iconType', 'mask', 'position'];
config = Object.assign(options, config);
optionalParams.forEach((/**
* @param {?} key
* @return {?}
*/
key => {
if (config[key] !== undefined) {
props[key] = config[key];
}
}));
/** @type {?} */
const iconType = {
info: '',
success: 'success',
fail: 'fail',
offline: 'dislike',
loading: 'loading'
}[options.iconType];
props['iconType'] = iconType;
props['mask'] = options.mask;
props['position'] = options.position;
return props;
}
/**
* @param {?} config
* @param {?} type
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
notice(config, type, timeInterval = 2000, onClose, mask = true, position = 'middle') {
// 如果已经存在,在没有遮罩层的情况下,会响应别的toast,需要清除原来的
if (this.compRef) {
this.hide();
}
/** @type {?} */
const options = new ToastOptions();
options.iconType = type;
options.mask = mask;
options.position = position;
/** @type {?} */
const props = this._initConfig(config, options);
document.body.insertBefore(document.createElement(this.toastCompFactory.selector), document.body.firstChild);
/** @type {?} */
let instance;
/** @type {?} */
let subject;
this.compRef = this._appRef.bootstrap(this.toastCompFactory);
instance = this.compRef.instance;
subject = instance.subject;
if (timeInterval) {
this.timeout = setTimeout((/**
* @return {?}
*/
() => {
if (onClose) {
onClose();
}
this.hide();
}), timeInterval);
}
Object.assign(instance, props);
return subject;
}
/**
* Open info dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
info(content, timeInterval, onClose, mask, position) {
/** @type {?} */
const config = Object.assign({
iconType: 'info',
content: content
});
return this.notice(config, 'info', timeInterval, onClose, mask, position);
}
/**
* Open success dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
success(content, timeInterval, onClose, mask, position) {
/** @type {?} */
const config = Object.assign({
iconType: 'success',
content: content
});
return this.notice(config, 'success', timeInterval, onClose, mask, position);
}
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
show(content, timeInterval, mask, position) {
/** @type {?} */
const config = Object.assign({
iconType: 'info',
content: content
});
return this.notice(config, 'info', timeInterval, (/**
* @return {?}
*/
() => { }), mask, position);
}
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
fail(content, timeInterval, onClose, mask, position) {
/** @type {?} */
const config = Object.assign({
iconType: 'fail',
content: content
});
return this.notice(config, 'fail', timeInterval, onClose, mask, position);
}
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
offline(content, timeInterval, onClose, mask, position) {
/** @type {?} */
const config = Object.assign({
iconType: 'offline',
content: content
});
return this.notice(config, 'offline', timeInterval, onClose, mask, position);
}
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @param {?=} position
* @return {?}
*/
loading(content, timeInterval, onClose, mask, position) {
/** @type {?} */
const config = Object.assign({
iconType: 'loading',
content: content
});
return this.notice(config, 'loading', timeInterval, onClose, mask, position);
}
/**
* @return {?}
*/
hide() {
if (this.timeout) {
clearTimeout(this.timeout);
}
if (this.compRef) {
this._zone.run((/**
* @return {?}
*/
() => {
this.compRef.destroy();
}));
this.compRef = null;
}
}
}
ToastService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] },
{ type: Injectable }
];
/** @nocollapse */
ToastService.ctorParameters = () => [
{ type: ApplicationRef },
{ type: ComponentFactoryResolver },
{ type: NgZone }
];
if (false) {
/** @type {?} */
ToastService.prototype.timeout;
/** @type {?} */
ToastService.prototype.zone;
/** @type {?} */
ToastService.prototype.compRef;
/** @type {?} */
ToastService.prototype.toastCompFactory;
/** @type {?} */
ToastService.prototype.appRef;
/**
* @type {?}
* @private
*/
ToastService.prototype._appRef;
/**
* @type {?}
* @private
*/
ToastService.prototype._cfr;
/**
* @type {?}
* @private
*/
ToastService.prototype._zone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsidG9hc3QvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFHVixjQUFjLEVBQ2QsTUFBTSxFQUNOLHdCQUF3QixFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBRXhELHFDQUlDOzs7SUFIQyxrQ0FBYzs7SUFDZCxtQ0FBa0I7O0lBQ2xCLCtCQUFlOztBQU1qQixNQUFNLE9BQU8sWUFBWTs7Ozs7O0lBT3ZCLFlBQW9CLE9BQXVCLEVBQVUsSUFBOEIsRUFBVSxLQUFhO1FBQXRGLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBMEI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBTjFHLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ2xDLHFCQUFnQixHQUFxQyxJQUFJLENBQUM7UUFDMUQsV0FBTSxHQUFtQixJQUFJLENBQUM7UUFHNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RSxDQUFDOzs7Ozs7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLE9BQXFCOztjQUN6QyxLQUFLLEdBQUcsRUFBRTs7Y0FDVixjQUFjLEdBQWEsQ0FBQyxTQUFTLEVB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QTBEOztJQUMxRCw4QkFBOEI7Ozs7O0lBRWxCLCtCQUErQjs7Ozs7SUFBRSw0QkFBc0M7Ozs7O0lBQUUsNkJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5LFxuICBBcHBsaWNhdGlvblJlZixcbiAgTmdab25lLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdENvbXBvbmVudCB9IGZyb20gJy4vdG9hc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFRvYXN0T3B0aW9ucyB9IGZyb20gJy4vdG9hc3Qtb3B0aW9ucy5wcm92aWRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnSW50ZXJmYWNlIHtcbiAgY29udGVudD86IGFueTtcbiAgaWNvblR5cGU/OiBzdHJpbmc7XG4gIG1hc2s/OiBib29sZWFuO1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcbiAgdGltZW91dCA9IG51bGw7XG4gIHpvbmU6IE5nWm9uZSA9IG51bGw7XG4gIGNvbXBSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gbnVsbDtcbiAgdG9hc3RDb21wRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxUb2FzdENvbXBvbmVudD4gPSBudWxsO1xuICBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcHBSZWY6IEFwcGxpY2F0aW9uUmVmLCBwcml2YXRlIF9jZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBfem9uZTogTmdab25lKSB7XG4gICAgdGhpcy56b25lID0gdGhpcy5fem9uZTtcbiAgICB0aGlzLmFwcFJlZiA9IHRoaXMuX2FwcFJlZjtcbiAgICB0aGlzLnRvYXN0Q29tcEZhY3RvcnkgPSB0aGlzLl9jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoVG9hc3RDb21wb25lbnQpO1xuICB9XG5cbiAgX2luaXRDb25maWcoY29uZmlnOiBPYmplY3QsIG9wdGlvbnM6IFRvYXN0T3B0aW9ucyk6IE9iamVjdCB7XG4gICAgY29uc3QgcHJvcHMgPSB7fTtcbiAgICBjb25zdCBvcHRpb25hbFBhcmFtczogc3RyaW5nW10gPSBbJ2NvbnRlbnQnLCAnaWNvblR5cGUnLCAnbWFzaycsICdwb3NpdGlvbiddO1xuXG4gICAgY29uZmlnID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCBjb25maWcpO1xuICAgIG9wdGlvbmFsUGFyYW1zLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChjb25maWdba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BzW2tleV0gPSBjb25maWdba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGljb25UeXBlID0ge1xuICAgICAgaW5mbzogJycsXG4gICAgICBzdWNjZXNzOiAnc3VjY2VzcycsXG4gICAgICBmYWlsOiAnZmFpbCcsXG4gICAgICBvZmZsaW5lOiAnZGlzbGlrZScsXG4gICAgICBsb2FkaW5nOiAnbG9hZGluZydcbiAgICB9W29wdGlvbnMuaWNvblR5cGVdO1xuXG4gICAgcHJvcHNbJ2ljb25UeXBlJ10gPSBpY29uVHlwZTtcbiAgICBwcm9wc1snbWFzayddID0gb3B0aW9ucy5tYXNrO1xuICAgIHByb3BzWydwb3NpdGlvbiddID0gb3B0aW9ucy5wb3NpdGlvbjtcbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICBub3RpY2UoY29uZmlnOiBDb25maWdJbnRlcmZhY2UsIHR5cGUsIHRpbWVJbnRlcnZhbCA9IDIwMDAsIG9uQ2xvc2UsIG1hc2sgPSB0cnVlLCBwb3NpdGlvbiA9ICdtaWRkbGUnKSB7XG4gICAgLy8g5aaC5p6c5bey57uP5a2Y5Zyo77yM5Zyo5rKh5pyJ6YGu572p5bGC55qE5oOF5Ya15LiL77yM5Lya5ZON5bqU5Yir55qEdG9hc3TvvIzpnIDopoHmuIXpmaTljp/mnaXnmoRcbiAgICBpZiAodGhpcy5jb21wUmVmKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9uczogVG9hc3RPcHRpb25zID0gbmV3IFRvYXN0T3B0aW9ucygpO1xuICAgIG9wdGlvbnMuaWNvblR5cGUgPSB0eXBlO1xuICAgIG9wdGlvbnMubWFzayA9IG1hc2s7XG4gICAgb3B0aW9ucy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5faW5pdENvbmZpZyhjb25maWcsIG9wdGlvbnMpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLnRvYXN0Q29tcEZhY3Rvcnkuc2VsZWN0b3IpLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xuICAgIGxldCBpbnN0YW5jZTogYW55O1xuICAgIGxldCBzdWJqZWN0OiBhbnk7XG5cbiAgICB0aGlzLmNvbXBSZWYgPSB0aGlzLl9hcHBSZWYuYm9vdHN0cmFwKHRoaXMudG9hc3RDb21wRmFjdG9yeSk7XG4gICAgaW5zdGFuY2UgPSB0aGlzLmNvbXBSZWYuaW5zdGFuY2U7XG4gICAgc3ViamVjdCA9IGluc3RhbmNlLnN1YmplY3Q7XG5cbiAgICBpZiAodGltZUludGVydmFsKSB7XG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9LCB0aW1lSW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2UsIHByb3BzKTtcbiAgICByZXR1cm4gc3ViamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGluZm8gZGlhbG9nXG4gICAqL1xuICBpbmZvKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdpbmZvJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnaW5mbycsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gc3VjY2VzcyBkaWFsb2dcbiAgICovXG4gIHN1Y2Nlc3MoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdzdWNjZXNzJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrLCBwb3NpdGlvbik7XG4gIH1cblxuICBzaG93KGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ2luZm8nLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdpbmZvJywgdGltZUludGVydmFsLCAoKSA9PiB7fSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgZmFpbChjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbiwgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnZmFpbCcsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubm90aWNlKGNvbmZpZywgJ2ZhaWwnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIG9mZmxpbmUoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ29mZmxpbmUnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdvZmZsaW5lJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrLCBwb3NpdGlvbik7XG4gIH1cblxuICBsb2FkaW5nKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdsb2FkaW5nJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnbG9hZGluZycsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcFJlZikge1xuICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbXBSZWYuZGVzdHJveSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNvbXBSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19