UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

272 lines 19.9 kB
/** * @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