UNPKG

ngx-toast-notifications

Version:
167 lines 16.8 kB
/** * @fileoverview added by tsickle * Generated from: toast-container/toast-container.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core'; import { animate, animateChild, query, style, transition, trigger } from '@angular/animations'; import { Toast } from '../toast'; /** @type {?} */ var nestedTransition = transition('* => *', [ query('@*', animateChild(), { optional: true }) ]); /** @type {?} */ var shrinkInTransition = transition('void => *', [ style({ height: 0, opacity: 0, 'margin-top': 0 }), animate(200, style({ height: '*', opacity: 1, 'margin-top': '1rem' })) ]); /** @type {?} */ var shrinkOutTransition = transition('* => void', [ style({ height: '!', opacity: 1, 'margin-top': '1rem' }), animate(150, style({ height: 0, opacity: 0, 'margin-top': 0 })) ]); /** @type {?} */ var progressTransition = transition('void => *', [ style({ width: 0, opacity: 0 }), animate('{{duration}}', style({ width: '100%', opacity: 1 })) ]); var ToastContainerComponent = /** @class */ (function () { function ToastContainerComponent(_changeDetector) { this._changeDetector = _changeDetector; this.tl = []; this.tc = []; this.tr = []; this.bl = []; this.bc = []; this.br = []; } /** * @param {?} config * @return {?} */ ToastContainerComponent.prototype.add = /** * @param {?} config * @return {?} */ function (config) { var _this = this; /** @type {?} */ var collection = this._getCollection(config.position); if (config.preventDuplicates && this._isDuplicate(collection, config)) { return null; } /** @type {?} */ var toast = new Toast(config, (/** * @param {?} t * @return {?} */ function (t) { return _this._delete(collection, t); })); collection.push(toast); this._changeDetector.detectChanges(); return toast; }; /** * @private * @param {?} collection * @param {?} toast * @return {?} */ ToastContainerComponent.prototype._delete = /** * @private * @param {?} collection * @param {?} toast * @return {?} */ function (collection, toast) { collection.splice(collection.indexOf(toast), 1); this._changeDetector.detectChanges(); }; /** * @private * @param {?} collection * @param {?} config * @return {?} */ ToastContainerComponent.prototype._isDuplicate = /** * @private * @param {?} collection * @param {?} config * @return {?} */ function (collection, config) { return collection.some((/** * @param {?} t * @return {?} */ function (t) { return t.type === config.type && t.component === config.component && t.caption === config.caption && t.text === config.text; })); }; /** * @private * @param {?} position * @return {?} */ ToastContainerComponent.prototype._getCollection = /** * @private * @param {?} position * @return {?} */ function (position) { switch (position) { case 'top-left': return this.tl; case 'top-center': return this.tc; case 'top-right': return this.tr; case 'bottom-left': return this.bl; case 'bottom-center': return this.bc; default: return this.br; } }; ToastContainerComponent.decorators = [ { type: Component, args: [{ template: "<ng-template #toastPanel let-toasts>\r\n <div *ngFor=\"let toast of toasts\" [@nested]>\r\n <div class=\"toast-card\" [ngClass]=\"toast.type || 'light'\" [@shrink]>\r\n <ng-template toastContent [toast]=\"toast\"></ng-template>\r\n <div *ngIf=\"toast.autoClose\"\r\n class=\"lifetime-progress\"\r\n role=\"progressbar\"\r\n [@progress]=\"{value: '*', params: {duration: toast.duration + 'ms'}}\"></div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"toast-overlay\">\r\n <div class=\"toast-panel top-center\">\r\n <ng-container *ngTemplateOutlet=\"toastPanel; context: {$implicit: tc}\"></ng-container>\r\n </div>\r\n <div class=\"toast-panel top-left\">\r\n <ng-container *ngTemplateOutlet=\"toastPanel; context: {$implicit: tl}\"></ng-container>\r\n </div>\r\n <div class=\"toast-panel top-right\">\r\n <ng-container *ngTemplateOutlet=\"toastPanel; context: {$implicit: tr}\"></ng-container>\r\n </div>\r\n <div class=\"toast-panel bottom-center\">\r\n <ng-container *ngTemplateOutlet=\"toastPanel; context: {$implicit: bc}\"></ng-container>\r\n </div>\r\n <div class=\"toast-panel bottom-left\">\r\n <ng-container *ngTemplateOutlet=\"toastPanel; context: {$implicit: bl}\"></ng-container>\r\n </div>\r\n <div class=\"toast-panel bottom-right\">\r\n <ng-container *ngTemplateOutlet=\"toastPanel; context: {$implicit: br}\"></ng-container>\r\n </div>\r\n</div>\r\n", animations: [ trigger('nested', [nestedTransition]), trigger('shrink', [shrinkInTransition, shrinkOutTransition]), trigger('progress', [progressTransition]), ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".toast-overlay{pointer-events:none;position:fixed;z-index:9000;left:0;top:0;width:100%;height:100%}@media (max-width:575px){.toast-overlay{display:flex;justify-content:flex-end;flex-direction:column}}.toast-panel{width:100%;font-size:1rem;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif}.toast-card{pointer-events:auto;overflow:hidden;background-clip:border-box;min-width:0;background-color:#f8f9fa;color:#212529;margin-top:1rem;box-shadow:rgba(0,0,0,.15) 0 .2rem 1.5rem .3rem}@media (min-width:576px){.toast-panel{position:absolute;max-width:20rem}.toast-panel.top-left{top:0;left:1rem}.toast-panel.top-center{top:0;left:50%;margin-left:-10rem}.toast-panel.top-right{top:0;right:1rem}.toast-panel.bottom-left{bottom:1rem;left:1rem}.toast-panel.bottom-center{bottom:1rem;left:50%;margin-left:-10rem}.toast-panel.bottom-right{bottom:1rem;right:1rem}.toast-card{border-radius:.15rem;box-shadow:rgba(0,0,0,.2) 0 .3rem .4rem -.2rem,rgba(0,0,0,.15) 0 .2rem 1.5rem .3rem}}.toast-card.danger,.toast-card.dark,.toast-card.info,.toast-card.primary,.toast-card.secondary,.toast-card.success{color:#f8f9fa}.toast-card.danger .lifetime-progress,.toast-card.dark .lifetime-progress,.toast-card.info .lifetime-progress,.toast-card.primary .lifetime-progress,.toast-card.secondary .lifetime-progress,.toast-card.success .lifetime-progress{background-color:#f8f9fa}.toast-card.light .lifetime-progress,.toast-card.primary,.toast-card.warning .lifetime-progress{background-color:#007bff}.toast-card.secondary{background-color:#868e96}.toast-card.success{background-color:#28a745}.toast-card.danger{background-color:#dc3545}.toast-card.warning{background-color:#ffc107}.toast-card.info{background-color:#17a2b8}.toast-card.light{background-color:#f8f9fa}.toast-card.dark{background-color:#343a40}.toast-card .lifetime-progress{display:flex;height:2px;width:0;border-radius:1px}"] }] } ]; /** @nocollapse */ ToastContainerComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef } ]; }; return ToastContainerComponent; }()); export { ToastContainerComponent }; if (false) { /** @type {?} */ ToastContainerComponent.prototype.tl; /** @type {?} */ ToastContainerComponent.prototype.tc; /** @type {?} */ ToastContainerComponent.prototype.tr; /** @type {?} */ ToastContainerComponent.prototype.bl; /** @type {?} */ ToastContainerComponent.prototype.bc; /** @type {?} */ ToastContainerComponent.prototype.br; /** * @type {?} * @private */ ToastContainerComponent.prototype._changeDetector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10b2FzdC1ub3RpZmljYXRpb25zLyIsInNvdXJjZXMiOlsidG9hc3QtY29udGFpbmVyL3RvYXN0LWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9GLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7O0lBRzNCLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztDQUM5QyxDQUFDOztJQUVJLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUU7SUFDakQsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUMsQ0FBQztJQUMvQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztDQUNyRSxDQUFDOztJQUVJLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUU7SUFDbEQsS0FBSyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsR0FBRyxFQUFFLEtB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U0FBQztvQkFDVCw0N0NBQStDO29CQUUvQyxVQUFVLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7d0JBQ3JDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO3dCQUM1RCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztxQkFDMUM7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2lCQUNoRDs7OztnQkFsQ2lDLGlCQUFpQjs7SUEwRm5ELDhCQUFDO0NBQUEsQUFqRUQsSUFpRUM7U0F2RFksdUJBQXVCOzs7SUFFbEMscUNBQWlCOztJQUNqQixxQ0FBaUI7O0lBQ2pCLHFDQUFpQjs7SUFDakIscUNBQWlCOztJQUNqQixxQ0FBaUI7O0lBQ2pCLHFDQUFpQjs7Ozs7SUFHZixrREFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBhbmltYXRlQ2hpbGQsIHF1ZXJ5LCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBUb2FzdENvbmZpZyB9IGZyb20gJy4uL3RvYXN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IFRvYXN0IH0gZnJvbSAnLi4vdG9hc3QnO1xyXG5pbXBvcnQgeyBUb2FzdFBvc2l0aW9uIH0gZnJvbSAnLi4vdG9hc3Qtbm90aWZpY2F0aW9ucy5jb25maWcnO1xyXG5cclxuY29uc3QgbmVzdGVkVHJhbnNpdGlvbiA9IHRyYW5zaXRpb24oJyogPT4gKicsIFtcclxuICBxdWVyeSgnQConLCBhbmltYXRlQ2hpbGQoKSwge29wdGlvbmFsOiB0cnVlfSlcclxuXSk7XHJcblxyXG5jb25zdCBzaHJpbmtJblRyYW5zaXRpb24gPSB0cmFuc2l0aW9uKCd2b2lkID0+IConLCBbXHJcbiAgc3R5bGUoe2hlaWdodDogMCwgb3BhY2l0eTogMCwgJ21hcmdpbi10b3AnOiAwfSksXHJcbiAgYW5pbWF0ZSgyMDAsIHN0eWxlKHtoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSwgJ21hcmdpbi10b3AnOiAnMXJlbSd9KSlcclxuXSk7XHJcblxyXG5jb25zdCBzaHJpbmtPdXRUcmFuc2l0aW9uID0gdHJhbnNpdGlvbignKiA9PiB2b2lkJywgW1xyXG4gIHN0eWxlKHtoZWlnaHQ6ICchJywgb3BhY2l0eTogMSwgJ21hcmdpbi10b3AnOiAnMXJlbSd9KSxcclxuICBhbmltYXRlKDE1MCwgc3R5bGUoe2hlaWdodDogMCwgb3BhY2l0eTogMCwgJ21hcmdpbi10b3AnOiAwfSkpXHJcbl0pO1xyXG5cclxuY29uc3QgcHJvZ3Jlc3NUcmFuc2l0aW9uID0gdHJhbnNpdGlvbigndm9pZCA9PiAqJywgW1xyXG4gIHN0eWxlKHt3aWR0aDogMCwgb3BhY2l0eTogMH0pLFxyXG4gIGFuaW1hdGUoJ3t7ZHVyYXRpb259fScsIHN0eWxlKHt3aWR0aDogJzEwMCUnLCBvcGFjaXR5OiAxfSkpXHJcbl0pO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RvYXN0LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignbmVzdGVkJywgW25lc3RlZFRyYW5zaXRpb25dKSxcclxuICAgIHRyaWdnZXIoJ3NocmluaycsIFtzaHJpbmtJblRyYW5zaXRpb24sIHNocmlua091dFRyYW5zaXRpb25dKSxcclxuICAgIHRyaWdnZXIoJ3Byb2dyZXNzJywgW3Byb2dyZXNzVHJhbnNpdGlvbl0pLFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2FzdENvbnRhaW5lckNvbXBvbmVudCB7XHJcblxyXG4gIHRsOiBUb2FzdFtdID0gW107XHJcbiAgdGM6IFRvYXN0W10gPSBbXTtcclxuICB0cjogVG9hc3RbXSA9IFtdO1xyXG4gIGJsOiBUb2FzdFtdID0gW107XHJcbiAgYmM6IFRvYXN0W10gPSBbXTtcclxuICBicjogVG9hc3RbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICB9XHJcblxyXG4gIGFkZChjb25maWc6IFRvYXN0Q29uZmlnKTogVG9hc3QgfCBudWxsIHtcclxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLl9nZXRDb2xsZWN0aW9uKGNvbmZpZy5wb3NpdGlvbik7XHJcbiAgICBpZiAoY29uZmlnLnByZXZlbnREdXBsaWNhdGVzICYmIHRoaXMuX2lzRHVwbGljYXRlKGNvbGxlY3Rpb24sIGNvbmZpZykpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0b2FzdCA9IG5ldyBUb2FzdChjb25maWcsICh0KSA9PiB0aGlzLl9kZWxldGUoY29sbGVjdGlvbiwgdCkpO1xyXG4gICAgY29sbGVjdGlvbi5wdXNoKHRvYXN0KTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiB0b2FzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2RlbGV0ZShjb2xsZWN0aW9uOiBUb2FzdFtdLCB0b2FzdDogVG9hc3QpOiB2b2lkIHtcclxuICAgIGNvbGxlY3Rpb24uc3BsaWNlKGNvbGxlY3Rpb24uaW5kZXhPZih0b2FzdCksIDEpO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNEdXBsaWNhdGUoY29sbGVjdGlvbjogVG9hc3RbXSwgY29uZmlnOiBUb2FzdENvbmZpZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uc29tZSh0ID0+IHtcclxuICAgICAgcmV0dXJuIHQudHlwZSA9PT0gY29uZmlnLnR5cGVcclxuICAgICAgICAmJiB0LmNvbXBvbmVudCA9PT0gY29uZmlnLmNvbXBvbmVudFxyXG4gICAgICAgICYmIHQuY2FwdGlvbiA9PT0gY29uZmlnLmNhcHRpb25cclxuICAgICAgICAmJiB0LnRleHQgPT09IGNvbmZpZy50ZXh0O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldENvbGxlY3Rpb24ocG9zaXRpb246IFRvYXN0UG9zaXRpb24pOiBUb2FzdFtdIHtcclxuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcclxuICAgICAgY2FzZSAndG9wLWxlZnQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLnRsO1xyXG4gICAgICBjYXNlICd0b3AtY2VudGVyJzpcclxuICAgICAgICByZXR1cm4gdGhpcy50YztcclxuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcclxuICAgICAgICByZXR1cm4gdGhpcy50cjtcclxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmJsO1xyXG4gICAgICBjYXNlICdib3R0b20tY2VudGVyJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5iYztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5icjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19