primeng-shadowdom-directives
Version:
Directives that make PrimeNG plays nicely with ShadowDOM
55 lines • 7.48 kB
JavaScript
import { isPlatformBrowser } from '@angular/common';
import { Directive, Host, Inject, Optional, PLATFORM_ID, Self, } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "primeng/slidemenu";
export class psdSlideMenuDirective {
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 (hostEl.popup) {
if (isOutsideContainer && isOutsideTarget) {
hostEl.onMenuBlur();
hostEl.hide();
}
}
else {
if (isOutsideContainer && isOutsideTarget && hostEl.focused) {
hostEl.onMenuBlur();
}
}
});
}
}
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: psdSlideMenuDirective, deps: [{ token: i1.SlideMenu, 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: psdSlideMenuDirective, selector: "[psdSlideMenu]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: psdSlideMenuDirective, decorators: [{
type: Directive,
args: [{
selector: '[psdSlideMenu]',
}]
}], ctorParameters: () => [{ type: i1.SlideMenu, decorators: [{
type: Host
}, {
type: Self
}, {
type: Optional
}] }, { type: undefined, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbWVuZy1zaGFkb3dkb20tZGlyZWN0aXZlcy9zcmMvZGlyZWN0aXZlcy9zbGlkZW1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLFNBQVMsRUFDVCxJQUFJLEVBQ0osTUFBTSxFQUNOLFFBQVEsRUFDUixXQUFXLEVBQ1gsSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDOzs7QUFNdkIsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUMrQyxNQUFpQixFQUNqQyxVQUFlO1FBREMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUFLO1FBRTVDLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLEVBQUU7WUFDckMsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ2pDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FDbEQsUUFBUSxFQUNSLE9BQU8sRUFDUCxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUNSLE1BQU0sSUFBSSxHQUNSLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO3dCQUM3RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO3dCQUVoRSxNQUFNLGtCQUFrQixHQUN0QixNQUFNLENBQUMsa0JBQWtCOzRCQUN6QixDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUM1RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSzs0QkFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FDQyxNQUFNLENBQUMsTUFBTTtnQ0FDYixDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzdEOzRCQUNILENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBRVQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQ2pCLElBQUksa0JBQWtCLElBQUksZUFBZSxFQUFFLENBQUM7Z0NBQzFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQ0FDcEIsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDOzRCQUNoQixDQUFDO3dCQUNILENBQUM7NkJBQU0sQ0FBQzs0QkFDTixJQUFJLGtCQUFrQixJQUFJLGVBQWUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQzVELE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQzs0QkFDdEIsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUMsQ0FDRixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0F6Q1UscUJBQXFCLG1GQUd0QixXQUFXO21HQUhWLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjs7MEJBR0ksSUFBSTs7MEJBQUksSUFBSTs7MEJBQUksUUFBUTs7MEJBQ3hCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSG9zdCxcbiAgSW5qZWN0LFxuICBPcHRpb25hbCxcbiAgUExBVEZPUk1fSUQsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2xpZGVNZW51IH0gZnJvbSAncHJpbWVuZy9zbGlkZW1lbnUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcHNkU2xpZGVNZW51XScsXG59KVxuZXhwb3J0IGNsYXNzIHBzZFNsaWRlTWVudURpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBIb3N0KCkgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGhvc3RFbDogU2xpZGVNZW51LFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55XG4gICkge1xuICAgIGhvc3RFbC5iaW5kT3V0c2lkZUNsaWNrTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkpIHtcbiAgICAgICAgaWYgKCFob3N0RWwub3V0c2lkZUNsaWNrTGlzdGVuZXIpIHtcbiAgICAgICAgICBob3N0RWwub3V0c2lkZUNsaWNrTGlzdGVuZXIgPSBob3N0RWwucmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgICAgZG9jdW1lbnQsXG4gICAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGggPVxuICAgICAgICAgICAgICAgIGV2ZW50LnBhdGggfHwgKGV2ZW50LmNvbXBvc2VkUGF0aCAmJiBldmVudC5jb21wb3NlZFBhdGgoKSk7XG4gICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldC5zaGFkb3dSb290ID8gcGF0aFswXSA6IGV2ZW50LnRhcmdldDtcblxuICAgICAgICAgICAgICBjb25zdCBpc091dHNpZGVDb250YWluZXIgPVxuICAgICAgICAgICAgICAgIGhvc3RFbC5jb250YWluZXJWaWV3Q2hpbGQgJiZcbiAgICAgICAgICAgICAgICAhaG9zdEVsLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZVRhcmdldCA9IGhvc3RFbC5wb3B1cFxuICAgICAgICAgICAgICAgID8gIShcbiAgICAgICAgICAgICAgICAgICAgaG9zdEVsLnRhcmdldCAmJlxuICAgICAgICAgICAgICAgICAgICAoaG9zdEVsLnRhcmdldCA9PT0gdGFyZ2V0IHx8IGhvc3RFbC50YXJnZXQuY29udGFpbnModGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHRydWU7XG5cbiAgICAgICAgICAgICAgaWYgKGhvc3RFbC5wb3B1cCkge1xuICAgICAgICAgICAgICAgIGlmIChpc091dHNpZGVDb250YWluZXIgJiYgaXNPdXRzaWRlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICBob3N0RWwub25NZW51Qmx1cigpO1xuICAgICAgICAgICAgICAgICAgaG9zdEVsLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT3V0c2lkZUNvbnRhaW5lciAmJiBpc091dHNpZGVUYXJnZXQgJiYgaG9zdEVsLmZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgIGhvc3RFbC5vbk1lbnVCbHVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbiJdfQ==