UNPKG

@addapptables/notifier

Version:
188 lines 16.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, Injector, Inject } from '@angular/core'; import { NotifierPortalService } from './notifier-portal.service'; import { PortalInjector, ComponentPortal } from '@angular/cdk/portal'; import { NotifierComponent } from '../notifier.component'; import { DOCUMENT } from '@angular/common'; import { NotifierRef } from '../notifier-ref'; import { NotifierConfiguration } from '../models/notifier-configuration.model'; import { ADDAPPTABLE_CONFIGURATION_NOTIFIER_DATA, ADDAPPTABLE_NOTIFIER_DATA } from '../tokens'; import { NotifierPositionType } from '../models/notifier-position-enum.model'; import { BottomRightStrategy } from '../strategies/bottom-right.strategy'; import { TopRightStrategy } from '../strategies/top-right.strategy'; import { BottomLeftStrategy } from '../strategies/bottom-left.strategy'; import { TopLeftStrategy } from '../strategies/top-left.strategy'; import { NotifierType } from '../models/notifier-type.model'; var NotifierService = /** @class */ (function () { function NotifierService(_notifierPortalService, _injector, _document, configuration) { this._notifierPortalService = _notifierPortalService; this._injector = _injector; this._document = _document; this.defaultConfiguration = { position: NotifierPositionType.bottomRight, timeout: 5000, classIcon: 'material-icons', iconValue: 'notifications' }; this.defaultConfiguration = Object.assign(this.defaultConfiguration, configuration); } /** * @param {?} message * @param {?=} configuration * @return {?} */ NotifierService.prototype.openSuccess = /** * @param {?} message * @param {?=} configuration * @return {?} */ function (message, configuration) { if (configuration === void 0) { configuration = (/** @type {?} */ ({})); } return this.open({ message: message, type: NotifierType.success }, configuration); }; /** * @param {?} message * @param {?=} configuration * @return {?} */ NotifierService.prototype.openError = /** * @param {?} message * @param {?=} configuration * @return {?} */ function (message, configuration) { if (configuration === void 0) { configuration = (/** @type {?} */ ({})); } return this.open({ message: message, type: NotifierType.danger }, configuration); }; /** * @param {?} message * @param {?=} configuration * @return {?} */ NotifierService.prototype.openInfo = /** * @param {?} message * @param {?=} configuration * @return {?} */ function (message, configuration) { if (configuration === void 0) { configuration = (/** @type {?} */ ({})); } return this.open({ message: message, type: NotifierType.info }, configuration); }; /** * @param {?} message * @param {?=} configuration * @return {?} */ NotifierService.prototype.openWarning = /** * @param {?} message * @param {?=} configuration * @return {?} */ function (message, configuration) { if (configuration === void 0) { configuration = (/** @type {?} */ ({})); } return this.open({ message: message, type: NotifierType.warning }, configuration); }; /** * @param {?} data * @param {?=} configuration * @return {?} */ NotifierService.prototype.open = /** * @param {?} data * @param {?=} configuration * @return {?} */ function (data, configuration) { if (configuration === void 0) { configuration = (/** @type {?} */ ({})); } /** @type {?} */ var portal = this._notifierPortalService.create(); /** @type {?} */ var componentPortal = this._createComponentPortal(data); /** @type {?} */ var componentRef = portal.attach(componentPortal); /** @type {?} */ var notifierRef = new NotifierRef(componentRef.instance, portal, this._document, this._notifierPortalService.getLastUniqueId); /** @type {?} */ var mergeConfiguration = Object.assign(this.defaultConfiguration, configuration); this._factoryStrategy(mergeConfiguration).newNotifier(notifierRef); return notifierRef; }; /** * @private * @param {?} configuration * @return {?} */ NotifierService.prototype._factoryStrategy = /** * @private * @param {?} configuration * @return {?} */ function (configuration) { switch (configuration.position) { case NotifierPositionType.bottomRight: return this._injector.get(BottomRightStrategy); case NotifierPositionType.bottomLeft: return this._injector.get(BottomLeftStrategy); case NotifierPositionType.topLeft: return this._injector.get(TopLeftStrategy); case NotifierPositionType.topRight: return this._injector.get(TopRightStrategy); default: return this._injector.get(BottomRightStrategy); } }; /** * @private * @param {?} data * @return {?} */ NotifierService.prototype._createComponentPortal = /** * @private * @param {?} data * @return {?} */ function (data) { /** @type {?} */ var injectionTokens = new WeakMap([ [ADDAPPTABLE_NOTIFIER_DATA, data] ]); /** @type {?} */ var injector = new PortalInjector(this._injector, injectionTokens); return new ComponentPortal(NotifierComponent, null, injector); }; NotifierService.decorators = [ { type: Injectable } ]; /** @nocollapse */ NotifierService.ctorParameters = function () { return [ { type: NotifierPortalService }, { type: Injector }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }, { type: NotifierConfiguration, decorators: [{ type: Inject, args: [ADDAPPTABLE_CONFIGURATION_NOTIFIER_DATA,] }] } ]; }; return NotifierService; }()); export { NotifierService }; if (false) { /** @type {?} */ NotifierService.prototype.defaultConfiguration; /** * @type {?} * @private */ NotifierService.prototype._notifierPortalService; /** * @type {?} * @private */ NotifierService.prototype._injector; /** * @type {?} * @private */ NotifierService.prototype._document; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhZGRhcHB0YWJsZXMvbm90aWZpZXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvbm90aWZpZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RDtJQVVFLHlCQUNVLHNCQUE2QyxFQUM3QyxTQUFtQixFQUNELFNBQWMsRUFDUyxhQUFvQztRQUg3RSwyQkFBc0IsR0FBdEIsc0JBQXNCLENB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QUFDLGtCQUFrQixDQUFDLENBQUM7WUFDaEQsS0FBSyxvQkFBb0IsQ0FBQyxPQUFPO2dCQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLEtBQUssb0JBQW9CLENBQUMsUUFBUTtnQkFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDO2dCQUNFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7Ozs7OztJQUVPLGdEQUFzQjs7Ozs7SUFBOUIsVUFBK0IsSUFBUzs7WUFDaEMsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFXO1lBQzVDLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDO1NBQ2xDLENBQUM7O1lBQ0ksUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxlQUFlLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7O2dCQWxFRixVQUFVOzs7O2dCQWhCRixxQkFBcUI7Z0JBRFQsUUFBUTtnREE4QnhCLE1BQU0sU0FBQyxRQUFRO2dCQXZCWCxxQkFBcUIsdUJBd0J6QixNQUFNLFNBQUMsdUNBQXVDOztJQXFEbkQsc0JBQUM7Q0FBQSxBQW5FRCxJQW1FQztTQWxFWSxlQUFlOzs7SUFFMUIsK0NBS0U7Ozs7O0lBR0EsaURBQXFEOzs7OztJQUNyRCxvQ0FBMkI7Ozs7O0lBQzNCLG9DQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vdGlmaWVyUG9ydGFsU2VydmljZSB9IGZyb20gJy4vbm90aWZpZXItcG9ydGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9ydGFsSW5qZWN0b3IsIENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgTm90aWZpZXJDb21wb25lbnQgfSBmcm9tICcuLi9ub3RpZmllci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTm90aWZpZXJSZWYgfSBmcm9tICcuLi9ub3RpZmllci1yZWYnO1xuaW1wb3J0IHsgTm90aWZpZXIgfSBmcm9tICcuLi9tb2RlbHMvbm90aWZpZXIubW9kZWwnO1xuaW1wb3J0IHsgTm90aWZpZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL25vdGlmaWVyLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgQUREQVBQVEFCTEVfQ09ORklHVVJBVElPTl9OT1RJRklFUl9EQVRBLCBBRERBUFBUQUJMRV9OT1RJRklFUl9EQVRBIH0gZnJvbSAnLi4vdG9rZW5zJztcbmltcG9ydCB7IE5vdGlmaWVyUG9zaXRpb25UeXBlIH0gZnJvbSAnLi4vbW9kZWxzL25vdGlmaWVyLXBvc2l0aW9uLWVudW0ubW9kZWwnO1xuaW1wb3J0IHsgQm90dG9tUmlnaHRTdHJhdGVneSB9IGZyb20gJy4uL3N0cmF0ZWdpZXMvYm90dG9tLXJpZ2h0LnN0cmF0ZWd5JztcbmltcG9ydCB7IFN0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcy9zdHJhdGVneSc7XG5pbXBvcnQgeyBUb3BSaWdodFN0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcy90b3AtcmlnaHQuc3RyYXRlZ3knO1xuaW1wb3J0IHsgQm90dG9tTGVmdFN0cmF0ZWd5IH0gZnJvbSAnLi4vc3RyYXRlZ2llcy9ib3R0b20tbGVmdC5zdHJhdGVneSc7XG5pbXBvcnQgeyBUb3BMZWZ0U3RyYXRlZ3kgfSBmcm9tICcuLi9zdHJhdGVnaWVzL3RvcC1sZWZ0LnN0cmF0ZWd5JztcbmltcG9ydCB7IE5vdGlmaWVyVHlwZSB9IGZyb20gJy4uL21vZGVscy9ub3RpZmllci10eXBlLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vdGlmaWVyU2VydmljZSB7XG5cbiAgZGVmYXVsdENvbmZpZ3VyYXRpb246IE5vdGlmaWVyQ29uZmlndXJhdGlvbiA9IHtcbiAgICBwb3NpdGlvbjogTm90aWZpZXJQb3NpdGlvblR5cGUuYm90dG9tUmlnaHQsXG4gICAgdGltZW91dDogNTAwMCxcbiAgICBjbGFzc0ljb246ICdtYXRlcmlhbC1pY29ucycsXG4gICAgaWNvblZhbHVlOiAnbm90aWZpY2F0aW9ucydcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ub3RpZmllclBvcnRhbFNlcnZpY2U6IE5vdGlmaWVyUG9ydGFsU2VydmljZSxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICBASW5qZWN0KEFEREFQUFRBQkxFX0NPTkZJR1VSQVRJT05fTk9USUZJRVJfREFUQSkgY29uZmlndXJhdGlvbjogTm90aWZpZXJDb25maWd1cmF0aW9uXG4gICkge1xuICAgIHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24gPSBPYmplY3QuYXNzaWduKHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgb3BlblN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBjb25maWd1cmF0aW9uOiBOb3RpZmllckNvbmZpZ3VyYXRpb24gPSA8Tm90aWZpZXJDb25maWd1cmF0aW9uPnt9KTogTm90aWZpZXJSZWYge1xuICAgIHJldHVybiB0aGlzLm9wZW4oeyBtZXNzYWdlOiBtZXNzYWdlLCB0eXBlOiBOb3RpZmllclR5cGUuc3VjY2VzcyB9LCBjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIG9wZW5FcnJvcihtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZ3VyYXRpb246IE5vdGlmaWVyQ29uZmlndXJhdGlvbiA9IDxOb3RpZmllckNvbmZpZ3VyYXRpb24+e30pOiBOb3RpZmllclJlZiB7XG4gICAgcmV0dXJuIHRoaXMub3Blbih7IG1lc3NhZ2U6IG1lc3NhZ2UsIHR5cGU6IE5vdGlmaWVyVHlwZS5kYW5nZXIgfSwgY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBvcGVuSW5mbyhtZXNzYWdlOiBzdHJpbmcsIGNvbmZpZ3VyYXRpb246IE5vdGlmaWVyQ29uZmlndXJhdGlvbiA9IDxOb3RpZmllckNvbmZpZ3VyYXRpb24+e30pOiBOb3RpZmllclJlZiB7XG4gICAgcmV0dXJuIHRoaXMub3Blbih7IG1lc3NhZ2U6IG1lc3NhZ2UsIHR5cGU6IE5vdGlmaWVyVHlwZS5pbmZvIH0sIGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgb3Blbldhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBjb25maWd1cmF0aW9uOiBOb3RpZmllckNvbmZpZ3VyYXRpb24gPSA8Tm90aWZpZXJDb25maWd1cmF0aW9uPnt9KTogTm90aWZpZXJSZWYge1xuICAgIHJldHVybiB0aGlzLm9wZW4oeyBtZXNzYWdlOiBtZXNzYWdlLCB0eXBlOiBOb3RpZmllclR5cGUud2FybmluZyB9LCBjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIG9wZW4oZGF0YTogTm90aWZpZXIsIGNvbmZpZ3VyYXRpb246IE5vdGlmaWVyQ29uZmlndXJhdGlvbiA9IDxOb3RpZmllckNvbmZpZ3VyYXRpb24+e30pOiBOb3RpZmllclJlZiB7XG4gICAgY29uc3QgcG9ydGFsID0gdGhpcy5fbm90aWZpZXJQb3J0YWxTZXJ2aWNlLmNyZWF0ZSgpO1xuICAgIGNvbnN0IGNvbXBvbmVudFBvcnRhbCA9IHRoaXMuX2NyZWF0ZUNvbXBvbmVudFBvcnRhbChkYXRhKTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBwb3J0YWwuYXR0YWNoKGNvbXBvbmVudFBvcnRhbCk7XG4gICAgY29uc3Qgbm90aWZpZXJSZWYgPSBuZXcgTm90aWZpZXJSZWYoY29tcG9uZW50UmVmLmluc3RhbmNlLCBwb3J0YWwsIHRoaXMuX2RvY3VtZW50LCB0aGlzLl9ub3RpZmllclBvcnRhbFNlcnZpY2UuZ2V0TGFzdFVuaXF1ZUlkKTtcbiAgICBjb25zdCBtZXJnZUNvbmZpZ3VyYXRpb24gPSBPYmplY3QuYXNzaWduKHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb24pO1xuICAgIHRoaXMuX2ZhY3RvcnlTdHJhdGVneShtZXJnZUNvbmZpZ3VyYXRpb24pLm5ld05vdGlmaWVyKG5vdGlmaWVyUmVmKTtcbiAgICByZXR1cm4gbm90aWZpZXJSZWY7XG4gIH1cblxuICBwcml2YXRlIF9mYWN0b3J5U3RyYXRlZ3koY29uZmlndXJhdGlvbjogTm90aWZpZXJDb25maWd1cmF0aW9uKTogU3RyYXRlZ3kge1xuICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbi5wb3NpdGlvbikge1xuICAgICAgY2FzZSBOb3RpZmllclBvc2l0aW9uVHlwZS5ib3R0b21SaWdodDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luamVjdG9yLmdldChCb3R0b21SaWdodFN0cmF0ZWd5KTtcbiAgICAgIGNhc2UgTm90aWZpZXJQb3NpdGlvblR5cGUuYm90dG9tTGVmdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luamVjdG9yLmdldChCb3R0b21MZWZ0U3RyYXRlZ3kpO1xuICAgICAgY2FzZSBOb3RpZmllclBvc2l0aW9uVHlwZS50b3BMZWZ0OlxuICAgICAgICByZXR1cm4gdGhpcy5faW5qZWN0b3IuZ2V0KFRvcExlZnRTdHJhdGVneSk7XG4gICAgICBjYXNlIE5vdGlmaWVyUG9zaXRpb25UeXBlLnRvcFJpZ2h0OlxuICAgICAgICByZXR1cm4gdGhpcy5faW5qZWN0b3IuZ2V0KFRvcFJpZ2h0U3RyYXRlZ3kpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luamVjdG9yLmdldChCb3R0b21SaWdodFN0cmF0ZWd5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVDb21wb25lbnRQb3J0YWwoZGF0YTogYW55KTogQ29tcG9uZW50UG9ydGFsPE5vdGlmaWVyQ29tcG9uZW50PiB7XG4gICAgY29uc3QgaW5qZWN0aW9uVG9rZW5zID0gbmV3IFdlYWtNYXA8YW55LCBhbnk+KFtcbiAgICAgIFtBRERBUFBUQUJMRV9OT1RJRklFUl9EQVRBLCBkYXRhXVxuICAgIF0pO1xuICAgIGNvbnN0IGluamVjdG9yID0gbmV3IFBvcnRhbEluamVjdG9yKHRoaXMuX2luamVjdG9yLCBpbmplY3Rpb25Ub2tlbnMpO1xuICAgIHJldHVybiBuZXcgQ29tcG9uZW50UG9ydGFsKE5vdGlmaWVyQ29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG4gIH1cbn1cbiJdfQ==