UNPKG

ngx-modialog-10

Version:
184 lines 13.8 kB
/** * @fileoverview added by tsickle * Generated from: lib/components/base-dynamic-component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Subject } from 'rxjs'; import { filter } from 'rxjs/operators'; import { createComponent } from '../framework/createComponent'; /** @type {?} */ const BROWSER_PREFIX = ['webkit', 'moz', 'MS', 'o', '']; /** * @param {?} eventName * @param {?} element * @param {?} cb * @return {?} */ function register(eventName, element, cb) { BROWSER_PREFIX.forEach((/** * @param {?} p * @return {?} */ p => { element.addEventListener(p ? p + eventName : eventName.toLowerCase(), cb, false); })); } /** * A base class for supporting dynamic components. * There are 3 main support areas: * 1 - Easy wrapper for dynamic styling via CSS classes and inline styles. * 2 - Easy wrapper for interception of transition/animation end events. * 3 - Easy wrapper for component creation and injection. * * Dynamic css is done via direct element manipulation (via renderer), it does not use change detection * or binding. This is to allow better control over animation. * * Animation support is limited, only transition/keyframes END even are notified. * The animation support is needed since currently the angular animation module is limited as well and * does not support CSS animation that are not pre-parsed and are not in the styles metadata of a component. * * Capabilities: Add/Remove styls, Add/Remove classes, listen to animation/transition end event, * add components */ export class BaseDynamicComponent { /** * @param {?} el * @param {?} renderer */ constructor(el, renderer) { this.el = el; this.renderer = renderer; } /** * @return {?} */ activateAnimationListener() { if (this.animationEnd) { return; } this.animationEnd = new Subject(); this.animationEnd$ = this.animationEnd.asObservable(); register('TransitionEnd', this.el.nativeElement, (/** * @param {?} e * @return {?} */ (e) => this.onEnd(e))); register('AnimationEnd', this.el.nativeElement, (/** * @param {?} e * @return {?} */ (e) => this.onEnd(e))); } /** * Set a specific inline style on the overlay host element. * @template THIS * @this {THIS} * @param {?} prop The style key * @param {?} value The value, undefined to remove * @return {THIS} */ setStyle(prop, value) { (/** @type {?} */ (this)).renderer.setStyle((/** @type {?} */ (this)).el.nativeElement, prop, value); return (/** @type {?} */ (this)); } /** * @return {?} */ forceReflow() { this.el.nativeElement.offsetWidth; } /** * @param {?} css * @param {?=} forceReflow * @return {?} */ addClass(css, forceReflow = false) { css.split(' ') .forEach((/** * @param {?} c * @return {?} */ c => this.renderer.addClass(this.el.nativeElement, c))); if (forceReflow) { this.forceReflow(); } } /** * @param {?} css * @param {?=} forceReflow * @return {?} */ removeClass(css, forceReflow = false) { css.split(' ') .forEach((/** * @param {?} c * @return {?} */ c => this.renderer.removeClass(this.el.nativeElement, c))); if (forceReflow) { this.forceReflow(); } } /** * @return {?} */ ngOnDestroy() { if (this.animationEnd && !this.animationEnd.closed) { this.animationEnd.complete(); } } /** * @return {?} */ myAnimationEnd$() { return this.animationEnd$.pipe(filter((/** * @param {?} e * @return {?} */ e => e.target === this.el.nativeElement))); } /** * Add a component, supply a view container ref. * Note: The components vcRef will result in a sibling. * @protected * @template T * @param {?} instructions * @return {?} */ _addComponent(instructions) { /** @type {?} */ const cmpRef = createComponent(instructions); cmpRef.changeDetectorRef.detectChanges(); return cmpRef; } /** * @private * @param {?} event * @return {?} */ onEnd(event) { if (!this.animationEnd.closed) { this.animationEnd.next(event); } } } if (false) { /** @type {?} */ BaseDynamicComponent.prototype.animationEnd$; /** * @type {?} * @protected */ BaseDynamicComponent.prototype.animationEnd; /** * @type {?} * @protected */ BaseDynamicComponent.prototype.el; /** * @type {?} * @protected */ BaseDynamicComponent.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1keW5hbWljLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb2RpYWxvZy0xMC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2Jhc2UtZHluYW1pYy1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVF4QyxPQUFPLEVBQUUsZUFBZSxFQUF1QixNQUFNLDhCQUE4QixDQUFDOztNQUU5RSxjQUFjLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDOzs7Ozs7O0FBRXZELFNBQVMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUN0QyxjQUFjLENBQUMsT0FBTzs7OztJQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkYsQ0FBQyxFQUFDLENBQUM7QUFDTCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkQsTUFBTSxPQUFPLG9CQUFvQjs7Ozs7SUFLL0IsWUFBc0IsRUFBYyxFQUNkLFFBQW1CO1FBRG5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ3pDLENBQUM7Ozs7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQW9DLENBQUM7UUFDcEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RELFFBQVEsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhOzs7O1FBQUUsQ0FBQyxDQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7UUFDeEYsUUFBUSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWE7Ozs7UUFBRSxDQUFDLENBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztJQUN4RixDQUFDOzs7Ozs7Ozs7SUFPRCxRQUFRLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDbEMsbUJBQUEsSUFBSSxFQUFBLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxtQkFBQSxJQUFJLEVBQUEsQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxPQUFPLG1CQUFBLElBQUksRUFBQSxDQUFDO0lBQ2QsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDcEMsQ0FBQzs7Ozs7O0lBRUQsUUFBUSxDQUFDLEdBQVcsRUFBRSxjQUF1QixLQUFLO1FBQ2hELEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1gsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUNsRSxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7Ozs7OztJQUVELFdBQVcsQ0FBQyxHQUFXLEVBQUUsY0FBdUIsS0FBSztRQUNuRCxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNYLE9BQU87Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUM7UUFDckUsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDOzs7O0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDOzs7O0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzVCLE1BQU07Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUMsQ0FDaEQsQ0FBQztJQUNKLENBQUM7Ozs7Ozs7OztJQU1TLGFBQWEsQ0FBSSxZQUFpQzs7Y0FDcEQsTUFBTSxHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFDNUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Ozs7OztJQUdPLEtBQUssQ0FBQyxLQUF1QztRQUVuRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0NBRUY7OztJQS9FQyw2Q0FBNEQ7Ozs7O0lBRTVELDRDQUFrRTs7Ozs7SUFFdEQsa0NBQXdCOzs7OztJQUN4Qix3Q0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjcmVhdGVDb21wb25lbnQsIENyZWF0ZUNvbXBvbmVudEFyZ3MgfSBmcm9tICcuLi9mcmFtZXdvcmsvY3JlYXRlQ29tcG9uZW50JztcblxuY29uc3QgQlJPV1NFUl9QUkVGSVggPSBbJ3dlYmtpdCcsICdtb3onLCAnTVMnLCAnbycsICcnXTtcblxuZnVuY3Rpb24gcmVnaXN0ZXIoZXZlbnROYW1lLCBlbGVtZW50LCBjYikge1xuICBCUk9XU0VSX1BSRUZJWC5mb3JFYWNoKHAgPT4ge1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihwID8gcCArIGV2ZW50TmFtZSA6IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpLCBjYiwgZmFsc2UpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIHN1cHBvcnRpbmcgZHluYW1pYyBjb21wb25lbnRzLlxuICogVGhlcmUgYXJlIDMgbWFpbiBzdXBwb3J0IGFyZWFzOlxuICogMSAtIEVhc3kgd3JhcHBlciBmb3IgZHluYW1pYyBzdHlsaW5nIHZpYSBDU1MgY2xhc3NlcyBhbmQgaW5saW5lIHN0eWxlcy5cbiAqIDIgLSBFYXN5IHdyYXBwZXIgZm9yIGludGVyY2VwdGlvbiBvZiB0cmFuc2l0aW9uL2FuaW1hdGlvbiBlbmQgZXZlbnRzLlxuICogMyAtIEVhc3kgd3JhcHBlciBmb3IgY29tcG9uZW50IGNyZWF0aW9uIGFuZCBpbmplY3Rpb24uXG4gKlxuICogRHluYW1pYyBjc3MgaXMgZG9uZSB2aWEgZGlyZWN0IGVsZW1lbnQgbWFuaXB1bGF0aW9uICh2aWEgcmVuZGVyZXIpLCBpdCBkb2VzIG5vdCB1c2UgY2hhbmdlIGRldGVjdGlvblxuICogb3IgYmluZGluZy4gVGhpcyBpcyB0byBhbGxvdyBiZXR0ZXIgY29udHJvbCBvdmVyIGFuaW1hdGlvbi5cbiAqXG4gKiBBbmltYXRpb24gc3VwcG9ydCBpcyBsaW1pdGVkLCBvbmx5IHRyYW5zaXRpb24va2V5ZnJhbWVzIEVORCBldmVuIGFyZSBub3RpZmllZC5cbiAqIFRoZSBhbmltYXRpb24gc3VwcG9ydCBpcyBuZWVkZWQgc2luY2UgY3VycmVudGx5IHRoZSBhbmd1bGFyIGFuaW1hdGlvbiBtb2R1bGUgaXMgbGltaXRlZCBhcyB3ZWxsIGFuZFxuICogZG9lcyBub3Qgc3VwcG9ydCBDU1MgYW5pbWF0aW9uIHRoYXQgYXJlIG5vdCBwcmUtcGFyc2VkIGFuZCBhcmUgbm90IGluIHRoZSBzdHlsZXMgbWV0YWRhdGEgb2YgYSBjb21wb25lbnQuXG4gKlxuICogQ2FwYWJpbGl0aWVzOiBBZGQvUmVtb3ZlIHN0eWxzLCBBZGQvUmVtb3ZlIGNsYXNzZXMsIGxpc3RlbiB0byBhbmltYXRpb24vdHJhbnNpdGlvbiBlbmQgZXZlbnQsXG4gKiBhZGQgY29tcG9uZW50c1xuICovXG5leHBvcnQgY2xhc3MgQmFzZUR5bmFtaWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBhbmltYXRpb25FbmQkOiBPYnNlcnZhYmxlPFRyYW5zaXRpb25FdmVudCB8IEFuaW1hdGlvbkV2ZW50PjtcblxuICBwcm90ZWN0ZWQgYW5pbWF0aW9uRW5kOiBTdWJqZWN0PFRyYW5zaXRpb25FdmVudCB8IEFuaW1hdGlvbkV2ZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gIH1cblxuICBhY3RpdmF0ZUFuaW1hdGlvbkxpc3RlbmVyKCkge1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbkVuZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFuaW1hdGlvbkVuZCA9IG5ldyBTdWJqZWN0PFRyYW5zaXRpb25FdmVudCB8IEFuaW1hdGlvbkV2ZW50PigpO1xuICAgIHRoaXMuYW5pbWF0aW9uRW5kJCA9IHRoaXMuYW5pbWF0aW9uRW5kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHJlZ2lzdGVyKCdUcmFuc2l0aW9uRW5kJywgdGhpcy5lbC5uYXRpdmVFbGVtZW50LCAoZTogVHJhbnNpdGlvbkV2ZW50KSA9PiB0aGlzLm9uRW5kKGUpKTtcbiAgICByZWdpc3RlcignQW5pbWF0aW9uRW5kJywgdGhpcy5lbC5uYXRpdmVFbGVtZW50LCAoZTogQW5pbWF0aW9uRXZlbnQpID0+IHRoaXMub25FbmQoZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIHNwZWNpZmljIGlubGluZSBzdHlsZSBvbiB0aGUgb3ZlcmxheSBob3N0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSBwcm9wIFRoZSBzdHlsZSBrZXlcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSwgdW5kZWZpbmVkIHRvIHJlbW92ZVxuICAgKi9cbiAgc2V0U3R5bGUocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHByb3AsIHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvcmNlUmVmbG93KCkge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIGFkZENsYXNzKGNzczogc3RyaW5nLCBmb3JjZVJlZmxvdzogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY3NzLnNwbGl0KCcgJylcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGMpKTtcbiAgICBpZiAoZm9yY2VSZWZsb3cpIHtcbiAgICAgIHRoaXMuZm9yY2VSZWZsb3coKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVDbGFzcyhjc3M6IHN0cmluZywgZm9yY2VSZWZsb3c6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGNzcy5zcGxpdCgnICcpXG4gICAgICAuZm9yRWFjaChjID0+IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCBjKSk7XG4gICAgaWYgKGZvcmNlUmVmbG93KSB7XG4gICAgICB0aGlzLmZvcmNlUmVmbG93KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uRW5kICYmICF0aGlzLmFuaW1hdGlvbkVuZC5jbG9zZWQpIHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uRW5kLmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgbXlBbmltYXRpb25FbmQkKCk6IE9ic2VydmFibGU8QW5pbWF0aW9uRXZlbnQgfCBUcmFuc2l0aW9uRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5hbmltYXRpb25FbmQkLnBpcGUoXG4gICAgICBmaWx0ZXIoZSA9PiBlLnRhcmdldCA9PT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY29tcG9uZW50LCBzdXBwbHkgYSB2aWV3IGNvbnRhaW5lciByZWYuXG4gICAqIE5vdGU6IFRoZSBjb21wb25lbnRzIHZjUmVmIHdpbGwgcmVzdWx0IGluIGEgc2libGluZy5cbiAgICovXG4gIHByb3RlY3RlZCBfYWRkQ29tcG9uZW50PFQ+KGluc3RydWN0aW9uczogQ3JlYXRlQ29tcG9uZW50QXJncyk6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgY29uc3QgY21wUmVmID0gY3JlYXRlQ29tcG9uZW50KGluc3RydWN0aW9ucyk7XG4gICAgY21wUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHJldHVybiBjbXBSZWY7XG4gIH1cblxuXG4gIHByaXZhdGUgb25FbmQoZXZlbnQ6IFRyYW5zaXRpb25FdmVudCB8IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG5cbiAgICBpZiAoIXRoaXMuYW5pbWF0aW9uRW5kLmNsb3NlZCkge1xuICAgICAgdGhpcy5hbmltYXRpb25FbmQubmV4dChldmVudCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==