primeng-shadowdom-directives
Version:
Directives that make PrimeNG plays nicely with ShadowDOM
47 lines • 6.51 kB
JavaScript
import { Directive, Host, Inject, Optional, PLATFORM_ID, Self, } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import * as i0 from "@angular/core";
import * as i1 from "primeng/tieredmenu";
export class psdTieredMenuDirective {
constructor(hostEl, platformId) {
this.hostEl = hostEl;
this.platformId = platformId;
hostEl.bindOutsideClickListener = () => {
if (isPlatformBrowser(platformId)) {
if (!hostEl.outsideClickListener) {
hostEl.outsideClickListener = hostEl.renderer.listen(document, 'click', (event) => {
const path = event.path || (event.composedPath && event.composedPath());
const target = event.target.shadowRoot ? path[0] : event.target;
const isOutsideContainer = hostEl.containerViewChild &&
!hostEl.containerViewChild.nativeElement.contains(target);
const isOutsideTarget = hostEl.popup
? !(hostEl.target &&
(hostEl.target === target || hostEl.target.contains(target)))
: true;
if (isOutsideContainer && isOutsideTarget) {
hostEl.hide();
}
});
}
}
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: psdTieredMenuDirective, deps: [{ token: i1.TieredMenu, host: true, optional: true, self: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: psdTieredMenuDirective, selector: "[psdTieredMenu]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: psdTieredMenuDirective, decorators: [{
type: Directive,
args: [{
selector: '[psdTieredMenu]',
}]
}], ctorParameters: () => [{ type: i1.TieredMenu, decorators: [{
type: Host
}, {
type: Self
}, {
type: Optional
}] }, { type: undefined, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllcmVkbWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW1lbmctc2hhZG93ZG9tLWRpcmVjdGl2ZXMvc3JjL2RpcmVjdGl2ZXMvdGllcmVkbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULElBQUksRUFDSixNQUFNLEVBQ04sUUFBUSxFQUNSLFdBQVcsRUFDWCxJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUtwRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQytDLE1BQWtCLEVBQ2xDLFVBQWU7UUFEQyxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQUs7UUFFNUMsTUFBTSxDQUFDLHdCQUF3QixHQUFHLEdBQUcsRUFBRTtZQUNyQyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNsRCxRQUFRLEVBQ1IsT0FBTyxFQUNQLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ1IsTUFBTSxJQUFJLEdBQ1IsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7d0JBQzdELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7d0JBRWhFLE1BQU0sa0JBQWtCLEdBQ3RCLE1BQU0sQ0FBQyxrQkFBa0I7NEJBQ3pCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLOzRCQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUNDLE1BQU0sQ0FBQyxNQUFNO2dDQUNiLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDN0Q7NEJBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDVCxJQUFJLGtCQUFrQixJQUFJLGVBQWUsRUFBRSxDQUFDOzRCQUMxQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2hCLENBQUM7b0JBQ0gsQ0FBQyxDQUNGLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDOytHQWpDVSxzQkFBc0Isb0ZBR3ZCLFdBQVc7bUdBSFYsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUhsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCOzswQkFHSSxJQUFJOzswQkFBSSxJQUFJOzswQkFBSSxRQUFROzswQkFDeEIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0LFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRCxcbiAgU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaWVyZWRNZW51IH0gZnJvbSAncHJpbWVuZy90aWVyZWRtZW51JztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3BzZFRpZXJlZE1lbnVdJyxcbn0pXG5leHBvcnQgY2xhc3MgcHNkVGllcmVkTWVudURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGhvc3RFbDogVGllcmVkTWVudSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxuICApIHtcbiAgICBob3N0RWwuYmluZE91dHNpZGVDbGlja0xpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG4gICAgICAgIGlmICghaG9zdEVsLm91dHNpZGVDbGlja0xpc3RlbmVyKSB7XG4gICAgICAgICAgaG9zdEVsLm91dHNpZGVDbGlja0xpc3RlbmVyID0gaG9zdEVsLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICAgIGRvY3VtZW50LFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwYXRoID1cbiAgICAgICAgICAgICAgICBldmVudC5wYXRoIHx8IChldmVudC5jb21wb3NlZFBhdGggJiYgZXZlbnQuY29tcG9zZWRQYXRoKCkpO1xuICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQuc2hhZG93Um9vdCA/IHBhdGhbMF0gOiBldmVudC50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgY29uc3QgaXNPdXRzaWRlQ29udGFpbmVyID1cbiAgICAgICAgICAgICAgICBob3N0RWwuY29udGFpbmVyVmlld0NoaWxkICYmXG4gICAgICAgICAgICAgICAgIWhvc3RFbC5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpO1xuICAgICAgICAgICAgICBjb25zdCBpc091dHNpZGVUYXJnZXQgPSBob3N0RWwucG9wdXBcbiAgICAgICAgICAgICAgICA/ICEoXG4gICAgICAgICAgICAgICAgICAgIGhvc3RFbC50YXJnZXQgJiZcbiAgICAgICAgICAgICAgICAgICAgKGhvc3RFbC50YXJnZXQgPT09IHRhcmdldCB8fCBob3N0RWwudGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICAgICAgICBpZiAoaXNPdXRzaWRlQ29udGFpbmVyICYmIGlzT3V0c2lkZVRhcmdldCkge1xuICAgICAgICAgICAgICAgIGhvc3RFbC5oaWRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIl19