UNPKG

ng-zorro-antd-mobile

Version:

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

159 lines 19.8 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { Injectable, ApplicationRef, NgZone, ComponentFactoryResolver } from '@angular/core'; import { ToastComponent } from './toast.component'; import { ToastOptions } from './toast-options.provider'; import { first } from 'rxjs/operators'; import * as i0 from "@angular/core"; let ToastService = class ToastService { constructor(_appRef, _cfr, _zone) { this._appRef = _appRef; this._cfr = _cfr; this._zone = _zone; this.timeout = null; this.zone = null; this.compRef = null; this.insertElement = null; this.toastCompFactory = null; this.appRef = null; this.zone = this._zone; this.appRef = this._appRef; this.toastCompFactory = this._cfr.resolveComponentFactory(ToastComponent); } _initConfig(config, options) { const props = {}; const optionalParams = ['content', 'iconType', 'mask', 'position']; config = Object.assign(options, config); optionalParams.forEach(key => { if (config[key] !== undefined) { props[key] = config[key]; } }); 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; } async notice(config, type, timeInterval = 2000, onClose, mask = true, position = 'middle') { // 如果已经存在,在没有遮罩层的情况下,会响应别的toast,需要清除原来的 if (this.compRef) { this.hide(); } const options = new ToastOptions(); options.iconType = type; options.mask = mask; options.position = position; const props = this._initConfig(config, options); this.insertElement = document.body.insertBefore(document.createElement(this.toastCompFactory.selector), document.body.firstChild); let instance; let subject; // 需要等待应用程序稳定后再安装,比如在 ngOnInit 里调用 if (!this._zone.isStable) { await this._appRef.isStable.pipe(first(stable => stable)); } this.compRef = this._appRef.bootstrap(this.toastCompFactory); instance = this.compRef.instance; subject = instance.subject; if (timeInterval) { this.timeout = setTimeout(() => { if (onClose) { onClose(); } this.hide(); }, timeInterval); } Object.assign(instance, props); return subject; } /** * Open info dialog */ info(content, timeInterval, onClose, mask, position) { const config = Object.assign({ iconType: 'info', content: content }); return this.notice(config, 'info', timeInterval, onClose, mask, position); } /** * Open success dialog */ success(content, timeInterval, onClose, mask, position) { const config = Object.assign({ iconType: 'success', content: content }); return this.notice(config, 'success', timeInterval, onClose, mask, position); } show(content, timeInterval, mask, position) { const config = Object.assign({ iconType: 'info', content: content }); return this.notice(config, 'info', timeInterval, () => { }, mask, position); } fail(content, timeInterval, onClose, mask, position) { const config = Object.assign({ iconType: 'fail', content: content }); return this.notice(config, 'fail', timeInterval, onClose, mask, position); } offline(content, timeInterval, onClose, mask, position) { const config = Object.assign({ iconType: 'offline', content: content }); return this.notice(config, 'offline', timeInterval, onClose, mask, position); } loading(content, timeInterval, onClose, mask, position) { const config = Object.assign({ iconType: 'loading', content: content }); return this.notice(config, 'loading', timeInterval, onClose, mask, position); } hide() { if (this.timeout) { clearTimeout(this.timeout); } if (this.compRef) { this._zone.run(() => { this.compRef.destroy(); document.body.removeChild(this.insertElement); }); this.compRef = null; this.insertElement = null; } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ToastService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ToastService, providedIn: 'root' }); } }; ToastService = __decorate([ Injectable(), __metadata("design:paramtypes", [ApplicationRef, ComponentFactoryResolver, NgZone]) ], ToastService); export { ToastService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ToastService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }, { type: Injectable }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.NgZone }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvdG9hc3QvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUdWLGNBQWMsRUFDZCxNQUFNLEVBQ04sd0JBQXdCLEVBQ3pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVdoQyxJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFZO0lBUXZCLFlBQW9CLE9BQXVCLEVBQVUsSUFBOEIsRUFBVSxLQUFhO1FBQXRGLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBMEI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBUDFHLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ2xDLGtCQUFhLEdBQWdCLElBQUksQ0FBQztRQUNsQyxxQkFBZ0IsR0FBcUMsSUFBSSxDQUFDO1FBQzFELFdBQU0sR0FBbUIsSUFBSSxDQUFDO1FBRzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsT0FBcUI7UUFDL0MsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FB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SyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs4R0E5SVUsWUFBWTtrSEFBWixZQUFZLGNBSFgsTUFBTTs7QUFHUCxZQUFZO0lBRHhCLFVBQVUsRUFBRTtxQ0FTa0IsY0FBYyxFQUFnQix3QkFBd0IsRUFBaUIsTUFBTTtHQVIvRixZQUFZLENBK0l4Qjs7MkZBL0lZLFlBQVk7a0JBSnhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztrQkFDQSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5LFxuICBBcHBsaWNhdGlvblJlZixcbiAgTmdab25lLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdENvbXBvbmVudCB9IGZyb20gJy4vdG9hc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFRvYXN0T3B0aW9ucyB9IGZyb20gJy4vdG9hc3Qtb3B0aW9ucy5wcm92aWRlcic7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdJbnRlcmZhY2Uge1xuICBjb250ZW50PzogYW55O1xuICBpY29uVHlwZT86IHN0cmluZztcbiAgbWFzaz86IGJvb2xlYW47XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUb2FzdFNlcnZpY2Uge1xuICB0aW1lb3V0ID0gbnVsbDtcbiAgem9uZTogTmdab25lID0gbnVsbDtcbiAgY29tcFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSBudWxsO1xuICBpbnNlcnRFbGVtZW50OiBIVE1MRWxlbWVudCA9IG51bGw7XG4gIHRvYXN0Q29tcEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8VG9hc3RDb21wb25lbnQ+ID0gbnVsbDtcbiAgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMuem9uZSA9IHRoaXMuX3pvbmU7XG4gICAgdGhpcy5hcHBSZWYgPSB0aGlzLl9hcHBSZWY7XG4gICAgdGhpcy50b2FzdENvbXBGYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRvYXN0Q29tcG9uZW50KTtcbiAgfVxuXG4gIF9pbml0Q29uZmlnKGNvbmZpZzogT2JqZWN0LCBvcHRpb25zOiBUb2FzdE9wdGlvbnMpOiBPYmplY3Qge1xuICAgIGNvbnN0IHByb3BzID0ge307XG4gICAgY29uc3Qgb3B0aW9uYWxQYXJhbXM6IHN0cmluZ1tdID0gWydjb250ZW50JywgJ2ljb25UeXBlJywgJ21hc2snLCAncG9zaXRpb24nXTtcblxuICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgY29uZmlnKTtcbiAgICBvcHRpb25hbFBhcmFtcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1trZXldID0gY29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpY29uVHlwZSA9IHtcbiAgICAgIGluZm86ICcnLFxuICAgICAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICAgICAgZmFpbDogJ2ZhaWwnLFxuICAgICAgb2ZmbGluZTogJ2Rpc2xpa2UnLFxuICAgICAgbG9hZGluZzogJ2xvYWRpbmcnXG4gICAgfVtvcHRpb25zLmljb25UeXBlXTtcblxuICAgIHByb3BzWydpY29uVHlwZSddID0gaWNvblR5cGU7XG4gICAgcHJvcHNbJ21hc2snXSA9IG9wdGlvbnMubWFzaztcbiAgICBwcm9wc1sncG9zaXRpb24nXSA9IG9wdGlvbnMucG9zaXRpb247XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgYXN5bmMgbm90aWNlKGNvbmZpZzogQ29uZmlnSW50ZXJmYWNlLCB0eXBlLCB0aW1lSW50ZXJ2YWwgPSAyMDAwLCBvbkNsb3NlLCBtYXNrID0gdHJ1ZSwgcG9zaXRpb24gPSAnbWlkZGxlJykge1xuICAgIC8vIOWmguaenOW3sue7j+WtmOWcqO+8jOWcqOayoeaciemBrue9qeWxgueahOaDheWGteS4i++8jOS8muWTjeW6lOWIq+eahHRvYXN077yM6ZyA6KaB5riF6Zmk5Y6f5p2l55qEXG4gICAgaWYgKHRoaXMuY29tcFJlZikge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnM6IFRvYXN0T3B0aW9ucyA9IG5ldyBUb2FzdE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLmljb25UeXBlID0gdHlwZTtcbiAgICBvcHRpb25zLm1hc2sgPSBtYXNrO1xuICAgIG9wdGlvbnMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcblxuICAgIHRoaXMuaW5zZXJ0RWxlbWVudCA9IGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy50b2FzdENvbXBGYWN0b3J5LnNlbGVjdG9yKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcbiAgICBsZXQgaW5zdGFuY2U6IGFueTtcbiAgICBsZXQgc3ViamVjdDogYW55O1xuICAgIC8vIOmcgOimgeetieW+heW6lOeUqOeoi+W6j+eos+WumuWQjuWGjeWuieijhe+8jOavlOWmguWcqCBuZ09uSW5pdCDph4zosIPnlKhcbiAgICBpZiAoIXRoaXMuX3pvbmUuaXNTdGFibGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuX2FwcFJlZi5pc1N0YWJsZS5waXBlKFxuICAgICAgICBmaXJzdChzdGFibGUgPT4gc3RhYmxlKVxuICAgICAgKVxuICAgIH1cblxuICAgIHRoaXMuY29tcFJlZiA9IHRoaXMuX2FwcFJlZi5ib290c3RyYXAodGhpcy50b2FzdENvbXBGYWN0b3J5KTtcbiAgICBpbnN0YW5jZSA9IHRoaXMuY29tcFJlZi5pbnN0YW5jZTtcbiAgICBzdWJqZWN0ID0gaW5zdGFuY2Uuc3ViamVjdDtcblxuICAgIGlmICh0aW1lSW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH0sIHRpbWVJbnRlcnZhbCk7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24oaW5zdGFuY2UsIHByb3BzKTtcbiAgICByZXR1cm4gc3ViamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIGluZm8gZGlhbG9nXG4gICAqL1xuICBpbmZvKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdpbmZvJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnaW5mbycsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gc3VjY2VzcyBkaWFsb2dcbiAgICovXG4gIHN1Y2Nlc3MoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdzdWNjZXNzJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrLCBwb3NpdGlvbik7XG4gIH1cblxuICBzaG93KGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ2luZm8nLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdpbmZvJywgdGltZUludGVydmFsLCAoKSA9PiB7fSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgZmFpbChjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbiwgcG9zaXRpb24/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnZmFpbCcsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMubm90aWNlKGNvbmZpZywgJ2ZhaWwnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2ssIHBvc2l0aW9uKTtcbiAgfVxuXG4gIG9mZmxpbmUoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4sIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ29mZmxpbmUnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm5vdGljZShjb25maWcsICdvZmZsaW5lJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrLCBwb3NpdGlvbik7XG4gIH1cblxuICBsb2FkaW5nKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdsb2FkaW5nJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5ub3RpY2UoY29uZmlnLCAnbG9hZGluZycsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzaywgcG9zaXRpb24pO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcFJlZikge1xuICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbXBSZWYuZGVzdHJveSgpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMuaW5zZXJ0RWxlbWVudCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29tcFJlZiA9IG51bGw7XG4gICAgICB0aGlzLmluc2VydEVsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19