@ciri/ngx-popup
Version:
An angular popup component that can customize animation.
154 lines • 10 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/overlay/overlay-helper.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, ApplicationRef, ComponentFactoryResolver, Injector, Inject } from '@angular/core';
import { OverlayComponent } from './overlay.component';
import { DOCUMENT } from '@angular/common';
import { Subscription } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
/**
* @record
*/
export function OverlayOptions() { }
if (false) {
/** @type {?} */
OverlayOptions.prototype.opacity;
/** @type {?|undefined} */
OverlayOptions.prototype.zIndex;
/** @type {?|undefined} */
OverlayOptions.prototype.onClick;
/** @type {?|undefined} */
OverlayOptions.prototype.getContainer;
}
/**
* \@dynamic
*/
export class OverlayHelper {
/**
* @param {?} appRef
* @param {?} cfr
* @param {?} injector
* @param {?} document
*/
constructor(appRef, cfr, injector, document) {
this.appRef = appRef;
this.cfr = cfr;
this.injector = injector;
this.document = document;
}
/**
* @param {?} options
* @return {?}
*/
open(options) {
/** @type {?} */
const opts = Object.assign(this.getDefaultOptions(), options);
const { opacity, zIndex, getContainer } = opts;
/** @type {?} */
const factory = this.cfr.resolveComponentFactory(OverlayComponent);
/** @type {?} */
const componentRef = factory.create(this.injector);
this.appRef.attachView(componentRef.hostView);
const { nativeElement } = componentRef.location;
/** @type {?} */
const container = getContainer();
container.insertBefore(nativeElement, container.firstChild);
/** @type {?} */
const inst = componentRef.instance;
inst.opacity = opacity;
inst.zIndex = zIndex;
inst.visible = true;
this.setListener(componentRef, opts);
return (/**
* @return {?}
*/
() => {
inst.visible = false;
});
}
/**
* @private
* @return {?}
*/
getDefaultOptions() {
return {
opacity: 0.5,
getContainer: (/**
* @return {?}
*/
() => document.body)
};
}
/**
* @private
* @param {?} componentRef
* @param {?} opts
* @return {?}
*/
setListener(componentRef, opts) {
/** @type {?} */
const inst = componentRef.instance;
/** @type {?} */
const subs = new Subscription();
const { onClick } = opts;
subs.add(inst.afterClose.subscribe((/**
* @return {?}
*/
() => {
componentRef.destroy();
})));
if (onClick) {
subs.add(inst.clickOverlay.subscribe((/**
* @return {?}
*/
() => {
onClick();
})));
}
componentRef.onDestroy((/**
* @return {?}
*/
() => {
subs.unsubscribe();
}));
}
}
OverlayHelper.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
OverlayHelper.ctorParameters = () => [
{ type: ApplicationRef },
{ type: ComponentFactoryResolver },
{ type: Injector },
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
];
/** @nocollapse */ OverlayHelper.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function OverlayHelper_Factory() { return new OverlayHelper(i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.DOCUMENT)); }, token: OverlayHelper, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
OverlayHelper.prototype.appRef;
/**
* @type {?}
* @private
*/
OverlayHelper.prototype.cfr;
/**
* @type {?}
* @private
*/
OverlayHelper.prototype.injector;
/**
* @type {?}
* @private
*/
OverlayHelper.prototype.document;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1oZWxwZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY2lyaS9uZ3gtcG9wdXAvIiwic291cmNlcyI6WyJsaWIvb3ZlcmxheS9vdmVybGF5LWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7Ozs7QUFFbkMsb0NBS0M7OztJQUpDLGlDQUFlOztJQUNmLGdDQUFlOztJQUNmLGlDQUFvQjs7SUFDcEIsc0NBQWdDOzs7OztBQU9sQyxNQUFNLE9BQU8sYUFBYTs7Ozs7OztJQUN4QixZQUNVLE1BQXNCLEVBQ3RCLEdBQTZCLEVBQzdCLFFBQWtCLEVBQ0EsUUFBa0I7UUFIcEMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBMEI7UUFDN0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNBLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDM0MsQ0FBQzs7Ozs7SUFFSixJQUFJLENBQUMsT0FBdUI7O2NBQ3BCLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sQ0FBQztjQUN2RCxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSTs7Y0FFeEMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUM7O2NBQzVELFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFBO2NBRXZDLEVBQUUsYUFBYSxFQUFFLEdBQUcsWUFBWSxDQUFDLFFBQVE7O2NBQ3pDLFNBQVMsR0FBRyxZQUFZLEVBQUU7UUFDaEMsU0FBUyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBOztjQUVyRCxJQUFJLEdBQUcsWUFBWSxDQUFDLFFBQVE7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFFbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFFcEM7OztRQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLENBQUMsRUFBQTtJQUNILENBQUM7Ozs7O0lBRU8saUJBQWlCO1FBQ3ZCLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBRztZQUNaLFlBQVk7OztZQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUE7U0FDbEMsQ0FBQTtJQUNILENBQUM7Ozs7Ozs7SUFFTyxXQUFXLENBQUMsWUFBNEMsRUFBRSxJQUFvQjs7Y0FDOUUsSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFROztjQUM1QixJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUU7Y0FDekIsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJO1FBRXhCLElBQUksQ0FBQyxHQUFHLENBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTOzs7UUFBQyxHQUFHLEVBQUU7WUFDN0IsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3hCLENBQUMsRUFBQyxDQUNILENBQUE7UUFDRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxHQUFHLENBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTOzs7WUFBQyxHQUFHLEVBQUU7Z0JBQy9CLE9BQU8sRUFBRSxDQUFBO1lBQ1gsQ0FBQyxFQUFDLENBQ0gsQ0FBQTtTQUNGO1FBRUQsWUFBWSxDQUFDLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDcEIsQ0FBQyxFQUFDLENBQUE7SUFDSixDQUFDOzs7WUEvREYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBcEJDLGNBQWM7WUFDZCx3QkFBd0I7WUFDeEIsUUFBUTtZQXdCOEIsUUFBUSx1QkFBM0MsTUFBTSxTQUFDLFFBQVE7Ozs7Ozs7O0lBSGhCLCtCQUE4Qjs7Ozs7SUFDOUIsNEJBQXFDOzs7OztJQUNyQyxpQ0FBMEI7Ozs7O0lBQzFCLGlDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEluamVjdG9yLFxuICBJbmplY3QsXG4gIENvbXBvbmVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS5jb21wb25lbnQnXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheU9wdGlvbnMge1xuICBvcGFjaXR5OiBudW1iZXJcbiAgekluZGV4PzogbnVtYmVyXG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkXG4gIGdldENvbnRhaW5lcj86ICgpID0+IEhUTUxFbGVtZW50XG59XG5cbi8qKiBAZHluYW1pYyAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheUhlbHBlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIGNmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICkge31cblxuICBvcGVuKG9wdGlvbnM6IE92ZXJsYXlPcHRpb25zKSB7XG4gICAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24odGhpcy5nZXREZWZhdWx0T3B0aW9ucygpLCBvcHRpb25zKVxuICAgIGNvbnN0IHsgb3BhY2l0eSwgekluZGV4LCBnZXRDb250YWluZXIgfSA9IG9wdHNcblxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShPdmVybGF5Q29tcG9uZW50KVxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpXG5cbiAgICBjb25zdCB7IG5hdGl2ZUVsZW1lbnQgfSA9IGNvbXBvbmVudFJlZi5sb2NhdGlvblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lcigpXG4gICAgY29udGFpbmVyLmluc2VydEJlZm9yZShuYXRpdmVFbGVtZW50LCBjb250YWluZXIuZmlyc3RDaGlsZClcblxuICAgIGNvbnN0IGluc3QgPSBjb21wb25lbnRSZWYuaW5zdGFuY2VcbiAgICBpbnN0Lm9wYWNpdHkgPSBvcGFjaXR5XG4gICAgaW5zdC56SW5kZXggPSB6SW5kZXhcbiAgICBpbnN0LnZpc2libGUgPSB0cnVlXG5cbiAgICB0aGlzLnNldExpc3RlbmVyKGNvbXBvbmVudFJlZiwgb3B0cylcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpbnN0LnZpc2libGUgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdE9wdGlvbnMoKTogT3ZlcmxheU9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBvcGFjaXR5OiAwLjUsXG4gICAgICBnZXRDb250YWluZXI6ICgpID0+IGRvY3VtZW50LmJvZHlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldExpc3RlbmVyKGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE92ZXJsYXlDb21wb25lbnQ+LCBvcHRzOiBPdmVybGF5T3B0aW9ucykge1xuICAgIGNvbnN0IGluc3QgPSBjb21wb25lbnRSZWYuaW5zdGFuY2VcbiAgICBjb25zdCBzdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpXG4gICAgY29uc3QgeyBvbkNsaWNrIH0gPSBvcHRzXG5cbiAgICBzdWJzLmFkZChcbiAgICAgIGluc3QuYWZ0ZXJDbG9zZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpXG4gICAgICB9KVxuICAgIClcbiAgICBpZiAob25DbGljaykge1xuICAgICAgc3Vicy5hZGQoXG4gICAgICAgIGluc3QuY2xpY2tPdmVybGF5LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgb25DbGljaygpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuXG4gICAgY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBzdWJzLnVuc3Vic2NyaWJlKClcbiAgICB9KVxuICB9XG59XG4iXX0=