ng-devui
Version:
DevUI components based on Angular
53 lines • 7.46 kB
JavaScript
import { DOCUMENT } from '@angular/common';
import { Directive, ElementRef, Inject, Input } from '@angular/core';
import * as i0 from "@angular/core";
export class IframeEventPropagateDirective {
constructor(el, doc) {
this.doc = doc;
this.event = 'click';
this.AddIframeContentDocumentClickListener = () => {
const iframe = this.element.querySelector('iframe');
if (iframe !== null) {
if (iframe.contentDocument !== null) {
iframe.contentDocument.addEventListener(this.event, this.dispatchClickEvent);
}
else {
const loadHandler = () => {
iframe.contentDocument.addEventListener(this.event, this.dispatchClickEvent);
iframe.removeEventListener('load', loadHandler);
};
iframe.addEventListener('load', loadHandler);
}
this.element.removeEventListener('DOMSubtreeModified', this.AddIframeContentDocumentClickListener);
}
};
this.dispatchClickEvent = ($event) => {
const event = this.document.createEvent('MouseEvents');
event.initEvent(this.event, true, true);
event.originEvent = $event;
this.element.dispatchEvent(event);
};
this.element = el.nativeElement;
this.document = this.doc;
}
ngAfterViewInit() {
this.element.addEventListener('DOMSubtreeModified', this.AddIframeContentDocumentClickListener);
if (this.element.querySelector('iframe') !== null) {
this.AddIframeContentDocumentClickListener();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IframeEventPropagateDirective, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: IframeEventPropagateDirective, selector: "[dIframeEventPropagate]", inputs: { event: "event" }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IframeEventPropagateDirective, decorators: [{
type: Directive,
args: [{
selector: '[dIframeEventPropagate]',
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }], propDecorators: { event: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZyYW1lLWV2ZW50LXByb3BhZ2F0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS9jb21tb24vaWZyYW1lLWV2ZW50LXByb3BhZ2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUlwRixNQUFNLE9BQU8sNkJBQTZCO0lBSXhDLFlBQVksRUFBYyxFQUE0QixHQUFRO1FBQVIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUhyRCxVQUFLLEdBQUcsT0FBTyxDQUFDO1FBY3pCLDBDQUFxQyxHQUFHLEdBQUcsRUFBRTtZQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwRCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxNQUFNLENBQUMsZUFBZSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNwQyxNQUFNLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQy9FLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7d0JBQ3ZCLE1BQU0sQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDN0UsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDbEQsQ0FBQyxDQUFDO29CQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQy9DLENBQUM7Z0JBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztZQUNyRyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsdUJBQWtCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM5QixNQUFNLEtBQUssR0FBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM1RCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hDLEtBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQztRQWpDQSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDOytHQWRVLDZCQUE2Qiw0Q0FJSixRQUFRO21HQUpqQyw2QkFBNkI7OzRGQUE3Qiw2QkFBNkI7a0JBSHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtpQkFDcEM7OzBCQUs4QixNQUFNOzJCQUFDLFFBQVE7eUNBSG5DLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2RJZnJhbWVFdmVudFByb3BhZ2F0ZV0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSWZyYW1lRXZlbnRQcm9wYWdhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBldmVudCA9ICdjbGljayc7XHJcbiAgZWxlbWVudDogSFRNTFNlbGVjdEVsZW1lbnQ7XHJcbiAgZG9jdW1lbnQ6IERvY3VtZW50O1xyXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogYW55KSB7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSBlbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5kb2N1bWVudCA9IHRoaXMuZG9jO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTVN1YnRyZWVNb2RpZmllZCcsIHRoaXMuQWRkSWZyYW1lQ29udGVudERvY3VtZW50Q2xpY2tMaXN0ZW5lcik7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuQWRkSWZyYW1lQ29udGVudERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBBZGRJZnJhbWVDb250ZW50RG9jdW1lbnRDbGlja0xpc3RlbmVyID0gKCkgPT4ge1xyXG4gICAgY29uc3QgaWZyYW1lID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpO1xyXG5cclxuICAgIGlmIChpZnJhbWUgIT09IG51bGwpIHtcclxuICAgICAgaWYgKGlmcmFtZS5jb250ZW50RG9jdW1lbnQgIT09IG51bGwpIHtcclxuICAgICAgICBpZnJhbWUuY29udGVudERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5ldmVudCwgdGhpcy5kaXNwYXRjaENsaWNrRXZlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGxvYWRIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMuZXZlbnQsIHRoaXMuZGlzcGF0Y2hDbGlja0V2ZW50KTtcclxuICAgICAgICAgIGlmcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZEhhbmRsZXIpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBsb2FkSGFuZGxlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCB0aGlzLkFkZElmcmFtZUNvbnRlbnREb2N1bWVudENsaWNrTGlzdGVuZXIpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGRpc3BhdGNoQ2xpY2tFdmVudCA9ICgkZXZlbnQpID0+IHtcclxuICAgIGNvbnN0IGV2ZW50OiBhbnkgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50cycpO1xyXG4gICAgZXZlbnQuaW5pdEV2ZW50KHRoaXMuZXZlbnQsIHRydWUsIHRydWUpO1xyXG4gICAgZXZlbnQub3JpZ2luRXZlbnQgPSAkZXZlbnQ7XHJcbiAgICB0aGlzLmVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgfTtcclxufVxyXG4iXX0=