ngx-modialog-10
Version:
Modal / Dialog for Angular
184 lines • 13.8 kB
JavaScript
/**
* @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==