UNPKG

ngx-modialog-7

Version:
184 lines 13.6 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1keW5hbWljLWNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb2RpYWxvZy03LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYmFzZS1keW5hbWljLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhDLE9BQU8sRUFBRSxlQUFlLEVBQXVCLE1BQU0sOEJBQThCLENBQUM7O01BRTlFLGNBQWMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7Ozs7Ozs7QUFFdkQsU0FBUyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3RDLGNBQWMsQ0FBQyxPQUFPOzs7O0lBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDekIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRixDQUFDLEVBQUMsQ0FBQztBQUNMLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CRCxNQUFNLE9BQU8sb0JBQW9COzs7OztJQUsvQixZQUFzQixFQUFjLEVBQ2QsUUFBbUI7UUFEbkIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7SUFDekMsQ0FBQzs7OztJQUVELHlCQUF5QjtRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBb0MsQ0FBQztRQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEQsUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWE7Ozs7UUFBRSxDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUN4RixRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYTs7OztRQUFFLENBQUMsQ0FBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO0lBQ3hGLENBQUM7Ozs7Ozs7OztJQU9ELFFBQVEsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNsQyxtQkFBQSxJQUFJLEVBQUEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLG1CQUFBLElBQUksRUFBQSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNELE9BQU8sbUJBQUEsSUFBSSxFQUFBLENBQUM7SUFDZCxDQUFDOzs7O0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUNwQyxDQUFDOzs7Ozs7SUFFRCxRQUFRLENBQUMsR0FBVyxFQUFFLGNBQXVCLEtBQUs7UUFDaEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDWCxPQUFPOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDO1FBQ2xFLElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7Ozs7O0lBRUQsV0FBVyxDQUFDLEdBQVcsRUFBRSxjQUF1QixLQUFLO1FBQ25ELEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1gsT0FBTzs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQztRQUNyRSxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUM5QjtJQUNILENBQUM7Ozs7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDNUIsTUFBTTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBQyxDQUNoRCxDQUFDO0lBQ0osQ0FBQzs7Ozs7Ozs7O0lBTVMsYUFBYSxDQUFJLFlBQWlDOztjQUNwRCxNQUFNLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUM1QyxNQUFNLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFekMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7Ozs7O0lBR08sS0FBSyxDQUFDLEtBQXVDO1FBRW5ELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7Q0FFRjs7O0lBL0VDLDZDQUE0RDs7Ozs7SUFFNUQsNENBQWtFOzs7OztJQUV0RCxrQ0FBd0I7Ozs7O0lBQ3hCLHdDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNyZWF0ZUNvbXBvbmVudCwgQ3JlYXRlQ29tcG9uZW50QXJncyB9IGZyb20gJy4uL2ZyYW1ld29yay9jcmVhdGVDb21wb25lbnQnO1xuXG5jb25zdCBCUk9XU0VSX1BSRUZJWCA9IFsnd2Via2l0JywgJ21veicsICdNUycsICdvJywgJyddO1xuXG5mdW5jdGlvbiByZWdpc3RlcihldmVudE5hbWUsIGVsZW1lbnQsIGNiKSB7XG4gIEJST1dTRVJfUFJFRklYLmZvckVhY2gocCA9PiB7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHAgPyBwICsgZXZlbnROYW1lIDogZXZlbnROYW1lLnRvTG93ZXJDYXNlKCksIGNiLCBmYWxzZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3Igc3VwcG9ydGluZyBkeW5hbWljIGNvbXBvbmVudHMuXG4gKiBUaGVyZSBhcmUgMyBtYWluIHN1cHBvcnQgYXJlYXM6XG4gKiAxIC0gRWFzeSB3cmFwcGVyIGZvciBkeW5hbWljIHN0eWxpbmcgdmlhIENTUyBjbGFzc2VzIGFuZCBpbmxpbmUgc3R5bGVzLlxuICogMiAtIEVhc3kgd3JhcHBlciBmb3IgaW50ZXJjZXB0aW9uIG9mIHRyYW5zaXRpb24vYW5pbWF0aW9uIGVuZCBldmVudHMuXG4gKiAzIC0gRWFzeSB3cmFwcGVyIGZvciBjb21wb25lbnQgY3JlYXRpb24gYW5kIGluamVjdGlvbi5cbiAqXG4gKiBEeW5hbWljIGNzcyBpcyBkb25lIHZpYSBkaXJlY3QgZWxlbWVudCBtYW5pcHVsYXRpb24gKHZpYSByZW5kZXJlciksIGl0IGRvZXMgbm90IHVzZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gKiBvciBiaW5kaW5nLiBUaGlzIGlzIHRvIGFsbG93IGJldHRlciBjb250cm9sIG92ZXIgYW5pbWF0aW9uLlxuICpcbiAqIEFuaW1hdGlvbiBzdXBwb3J0IGlzIGxpbWl0ZWQsIG9ubHkgdHJhbnNpdGlvbi9rZXlmcmFtZXMgRU5EIGV2ZW4gYXJlIG5vdGlmaWVkLlxuICogVGhlIGFuaW1hdGlvbiBzdXBwb3J0IGlzIG5lZWRlZCBzaW5jZSBjdXJyZW50bHkgdGhlIGFuZ3VsYXIgYW5pbWF0aW9uIG1vZHVsZSBpcyBsaW1pdGVkIGFzIHdlbGwgYW5kXG4gKiBkb2VzIG5vdCBzdXBwb3J0IENTUyBhbmltYXRpb24gdGhhdCBhcmUgbm90IHByZS1wYXJzZWQgYW5kIGFyZSBub3QgaW4gdGhlIHN0eWxlcyBtZXRhZGF0YSBvZiBhIGNvbXBvbmVudC5cbiAqXG4gKiBDYXBhYmlsaXRpZXM6IEFkZC9SZW1vdmUgc3R5bHMsIEFkZC9SZW1vdmUgY2xhc3NlcywgbGlzdGVuIHRvIGFuaW1hdGlvbi90cmFuc2l0aW9uIGVuZCBldmVudCxcbiAqIGFkZCBjb21wb25lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlRHluYW1pY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGFuaW1hdGlvbkVuZCQ6IE9ic2VydmFibGU8VHJhbnNpdGlvbkV2ZW50IHwgQW5pbWF0aW9uRXZlbnQ+O1xuXG4gIHByb3RlY3RlZCBhbmltYXRpb25FbmQ6IFN1YmplY3Q8VHJhbnNpdGlvbkV2ZW50IHwgQW5pbWF0aW9uRXZlbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbDogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgfVxuXG4gIGFjdGl2YXRlQW5pbWF0aW9uTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uRW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYW5pbWF0aW9uRW5kID0gbmV3IFN1YmplY3Q8VHJhbnNpdGlvbkV2ZW50IHwgQW5pbWF0aW9uRXZlbnQ+KCk7XG4gICAgdGhpcy5hbmltYXRpb25FbmQkID0gdGhpcy5hbmltYXRpb25FbmQuYXNPYnNlcnZhYmxlKCk7XG4gICAgcmVnaXN0ZXIoJ1RyYW5zaXRpb25FbmQnLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIChlOiBUcmFuc2l0aW9uRXZlbnQpID0+IHRoaXMub25FbmQoZSkpO1xuICAgIHJlZ2lzdGVyKCdBbmltYXRpb25FbmQnLCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIChlOiBBbmltYXRpb25FdmVudCkgPT4gdGhpcy5vbkVuZChlKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgc3BlY2lmaWMgaW5saW5lIHN0eWxlIG9uIHRoZSBvdmVybGF5IGhvc3QgZWxlbWVudC5cbiAgICogQHBhcmFtIHByb3AgVGhlIHN0eWxlIGtleVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlLCB1bmRlZmluZWQgdG8gcmVtb3ZlXG4gICAqL1xuICBzZXRTdHlsZShwcm9wOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgcHJvcCwgdmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZm9yY2VSZWZsb3coKSB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG5cbiAgYWRkQ2xhc3MoY3NzOiBzdHJpbmcsIGZvcmNlUmVmbG93OiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjc3Muc3BsaXQoJyAnKVxuICAgICAgLmZvckVhY2goYyA9PiB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgYykpO1xuICAgIGlmIChmb3JjZVJlZmxvdykge1xuICAgICAgdGhpcy5mb3JjZVJlZmxvdygpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUNsYXNzKGNzczogc3RyaW5nLCBmb3JjZVJlZmxvdzogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgY3NzLnNwbGl0KCcgJylcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGMpKTtcbiAgICBpZiAoZm9yY2VSZWZsb3cpIHtcbiAgICAgIHRoaXMuZm9yY2VSZWZsb3coKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmltYXRpb25FbmQgJiYgIXRoaXMuYW5pbWF0aW9uRW5kLmNsb3NlZCkge1xuICAgICAgdGhpcy5hbmltYXRpb25FbmQuY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBteUFuaW1hdGlvbkVuZCQoKTogT2JzZXJ2YWJsZTxBbmltYXRpb25FdmVudCB8IFRyYW5zaXRpb25FdmVudD4ge1xuICAgIHJldHVybiB0aGlzLmFuaW1hdGlvbkVuZCQucGlwZShcbiAgICAgIGZpbHRlcihlID0+IGUudGFyZ2V0ID09PSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjb21wb25lbnQsIHN1cHBseSBhIHZpZXcgY29udGFpbmVyIHJlZi5cbiAgICogTm90ZTogVGhlIGNvbXBvbmVudHMgdmNSZWYgd2lsbCByZXN1bHQgaW4gYSBzaWJsaW5nLlxuICAgKi9cbiAgcHJvdGVjdGVkIF9hZGRDb21wb25lbnQ8VD4oaW5zdHJ1Y3Rpb25zOiBDcmVhdGVDb21wb25lbnRBcmdzKTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgICBjb25zdCBjbXBSZWYgPSBjcmVhdGVDb21wb25lbnQoaW5zdHJ1Y3Rpb25zKTtcbiAgICBjbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgcmV0dXJuIGNtcFJlZjtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBvbkVuZChldmVudDogVHJhbnNpdGlvbkV2ZW50IHwgQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcblxuICAgIGlmICghdGhpcy5hbmltYXRpb25FbmQuY2xvc2VkKSB7XG4gICAgICB0aGlzLmFuaW1hdGlvbkVuZC5uZXh0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxufVxuIl19