UNPKG

ngx-popperjs

Version:

ngx-popperjs is an Angular wrapper for @popperjs

1 lines 62 kB
{"version":3,"file":"ngx-popperjs.mjs","sources":["../../../projects/ngx-popperjs/src/lib/models/ngx-popperjs-triggers.model.ts","../../../projects/ngx-popperjs/src/lib/components/ngx-popperjs-content/ngx-popperjs-content.component.ts","../../../projects/ngx-popperjs/src/lib/components/ngx-popperjs-content/ngx-popperjs-content.component.html","../../../projects/ngx-popperjs/src/lib/models/ngx-popperjs-defaults.model.ts","../../../projects/ngx-popperjs/src/lib/models/ngx-popperjs-utils.class.ts","../../../projects/ngx-popperjs/src/lib/directives/ngx-popperjs/ngx-popperjs.directive.ts","../../../projects/ngx-popperjs/src/lib/directives/ngx-popperjs/ngx-popperjs-loose.directive.ts","../../../projects/ngx-popperjs/src/lib/models/ngx-popperjs-placements.model.ts","../../../projects/ngx-popperjs/src/lib/ngx-popperjs.module.ts","../../../projects/ngx-popperjs/src/public-api.ts","../../../projects/ngx-popperjs/src/ngx-popperjs.ts"],"sourcesContent":["export enum NgxPopperjsTriggers {\r\n click = \"click\",\r\n hover = \"hover\",\r\n mousedown = \"mousedown\",\r\n none = \"none\"\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n OnDestroy,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {NgStyle, NgClass, NgIf} from \"@angular/common\";\r\n//\r\nimport {NgxPopperjsOptions} from \"../../models/ngx-popperjs-options.model\";\r\nimport {NgxPopperjsTriggers} from \"../../models/ngx-popperjs-triggers.model\";\r\n//\r\nimport {\r\n computePosition,\r\n autoUpdate,\r\n flip,\r\n arrow,\r\n limitShift,\r\n shift,\r\n offset,\r\n autoPlacement, ComputePositionConfig,\r\n} from \"@floating-ui/dom\";\r\nimport {fromEvent, Subject, takeUntil} from \"rxjs\";\r\n\r\n@Component({\r\n // tslint:disable-next-line:component-selector\r\n selector: \"popper-content\",\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: \"./ngx-popperjs-content.component.html\",\r\n styleUrls: [\"./ngx-popperjs-content.component.scss\"],\r\n exportAs: \"ngxPopperjsContent\",\r\n standalone: true,\r\n imports: [NgStyle, NgClass, NgIf]\r\n})\r\nexport class NgxPopperjsContentComponent implements OnDestroy {\r\n\r\n static nextId: number = 0;\r\n\r\n ariaHidden: string;\r\n arrowColor: string | null = null;\r\n displayType: string;\r\n id: string = `ngx_poppperjs_${++NgxPopperjsContentComponent.nextId}`;\r\n isMouseOver: boolean = !1;\r\n onHidden = new EventEmitter();\r\n onUpdate: () => any;\r\n opacity: number;\r\n popperInstance: () => void;\r\n popperOptions: NgxPopperjsOptions = {\r\n disableAnimation: false,\r\n disableDefaultStyling: false,\r\n boundariesElement: \"\",\r\n trigger: NgxPopperjsTriggers.hover,\r\n positionFixed: false,\r\n appendToBody: false,\r\n popperModifiers: []\r\n } as NgxPopperjsOptions;\r\n @ViewChild(\"popperViewRef\", {static: !0})\r\n popperViewRef: ElementRef;\r\n referenceObject: HTMLElement;\r\n state: boolean;\r\n text: string;\r\n\r\n protected _destroy$: Subject<void> = new Subject<void>();\r\n protected _resizeCtrl$: Subject<void> = new Subject<void>();\r\n protected _styleId = `${this.id}_style`;\r\n\r\n constructor(public elRef: ElementRef,\r\n protected _viewRef: ViewContainerRef,\r\n protected _changeDetectorRef: ChangeDetectorRef) {\r\n this._toggleVisibility(!1);\r\n }\r\n\r\n clean() {\r\n this.toggleVisibility(false);\r\n if (!this.popperInstance) {\r\n return;\r\n }\r\n this.popperInstance();\r\n }\r\n\r\n extractAppliedClassListExpr(classList: string | string[] = []): object {\r\n const klassList = Array.isArray(classList) ? classList : typeof classList === typeof \"\" ? classList.replace(/ /, \"\").split(\",\") : [];\r\n\r\n return klassList.reduce((acc, klass) => {\r\n acc[klass] = !0;\r\n\r\n return acc;\r\n }, {});\r\n }\r\n\r\n hide(): void {\r\n if (this.popperInstance) {\r\n this.popperInstance();\r\n }\r\n this.toggleVisibility(!1);\r\n this.onHidden.emit();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._destroy$.next();\r\n this.clean();\r\n if (this.popperOptions.appendTo && this.elRef && this.elRef.nativeElement && this.elRef.nativeElement.parentNode) {\r\n this._viewRef.detach();\r\n this.elRef.nativeElement.parentNode.removeChild(this.elRef.nativeElement);\r\n }\r\n }\r\n\r\n onDocumentResize() {\r\n this.update();\r\n }\r\n\r\n @HostListener(\"mouseover\")\r\n onMouseOver() {\r\n this.isMouseOver = true;\r\n }\r\n\r\n show(): void {\r\n if (!this.referenceObject) {\r\n return;\r\n }\r\n this._resizeCtrl$.next();\r\n this._determineArrowColor();\r\n this.popperInstance = autoUpdate(\r\n this.referenceObject,\r\n this.popperViewRef.nativeElement,\r\n () => {\r\n this._computePosition();\r\n }\r\n );\r\n fromEvent(document, \"resize\")\r\n .pipe(\r\n takeUntil(this._resizeCtrl$),\r\n takeUntil(this._destroy$),\r\n )\r\n .subscribe({\r\n next: () => this.onDocumentResize()\r\n });\r\n }\r\n\r\n @HostListener(\"mouseleave\")\r\n showOnLeave() {\r\n this.isMouseOver = false;\r\n if (this.popperOptions.trigger !== NgxPopperjsTriggers.hover && !this.popperOptions.hideOnMouseLeave) {\r\n return;\r\n }\r\n this.hide();\r\n }\r\n\r\n // Toggle visibility and detect changes - Run only after ngOnInit!\r\n toggleVisibility(state: boolean): void {\r\n this._toggleVisibility(state);\r\n // tslint:disable-next-line:no-string-literal\r\n if (!this._changeDetectorRef[\"destroyed\"]) {\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n update(): void {\r\n this._computePosition();\r\n }\r\n\r\n protected _computePosition(): void {\r\n const appendToParent = this.popperOptions.appendTo && document.querySelector(this.popperOptions.appendTo);\r\n if (appendToParent && this.elRef.nativeElement.parentNode !== appendToParent) {\r\n this.elRef.nativeElement.parentNode && this.elRef.nativeElement.parentNode.removeChild(this.elRef.nativeElement);\r\n appendToParent.appendChild(this.elRef.nativeElement);\r\n }\r\n\r\n const arrowElement = this.elRef.nativeElement.querySelector(\".ngxp__arrow\");\r\n const arrowLen = arrowElement.offsetWidth;\r\n // Get half the arrow box's hypotenuse length\r\n const floatingOffset = Math.sqrt(2 * arrowLen ** 2) / 2;\r\n const boundaryMiddleware = [];\r\n if (this.popperOptions.flip) {\r\n boundaryMiddleware.push(flip());\r\n }\r\n if (this.popperOptions.preventOverflow) {\r\n boundaryMiddleware.push(shift({limiter: limitShift()}));\r\n }\r\n const popperOptions: Partial<ComputePositionConfig> = {\r\n placement: this.popperOptions.placement,\r\n strategy: this.popperOptions.positionFixed ? \"fixed\" : \"absolute\",\r\n middleware: [\r\n offset(floatingOffset),\r\n ...boundaryMiddleware,\r\n arrow({\r\n element: arrowElement,\r\n padding: 4\r\n })\r\n ],\r\n };\r\n if (!this.popperOptions.preventOverflow && !popperOptions.placement) {\r\n const boundariesElement = this.popperOptions.boundariesElement && document.querySelector(this.popperOptions.boundariesElement);\r\n popperOptions.middleware.push(\r\n autoPlacement({\r\n boundary: boundariesElement\r\n })\r\n );\r\n }\r\n computePosition(this.referenceObject, this.popperViewRef.nativeElement, popperOptions)\r\n .then(({middlewareData, x, y, placement}) => {\r\n const side = placement.split(\"-\")[0];\r\n this.popperViewRef.nativeElement.setAttribute(\"data-popper-placement\", side);\r\n if (middlewareData.arrow) {\r\n const staticSide = {\r\n top: \"bottom\",\r\n right: \"left\",\r\n bottom: \"top\",\r\n left: \"right\"\r\n }[side];\r\n Object.assign(arrowElement.style, {\r\n left: middlewareData.arrow.x != null ? `${middlewareData.arrow.x}px` : \"\",\r\n top: middlewareData.arrow.y != null ? `${middlewareData.arrow.y}px` : \"\",\r\n [staticSide]: `${-arrowLen / 2}px`\r\n });\r\n }\r\n Object.assign(this.popperViewRef.nativeElement.style, {\r\n left: `${x}px`,\r\n top: `${y}px`,\r\n });\r\n this.toggleVisibility(!0);\r\n this.onUpdate?.();\r\n });\r\n }\r\n\r\n protected _createArrowSelector(): string {\r\n return `div#${this.id}.ngxp__container > .ngxp__arrow.ngxp__force-arrow`;\r\n }\r\n\r\n protected _determineArrowColor() {\r\n if (!this.popperOptions.styles || this.arrowColor) {\r\n\r\n return !1;\r\n }\r\n const ruleValue = this.popperOptions.styles[\"background-color\"] || this.popperOptions.styles.backgroundColor;\r\n if (this.arrowColor === ruleValue) {\r\n return !1;\r\n }\r\n this.arrowColor = ruleValue;\r\n let $style = document.querySelector(`#${this._styleId}`) as HTMLStyleElement;\r\n const styleContent = this.arrowColor ?\r\n `${this._createArrowSelector()}:before { background-color: ${this.arrowColor}; }` : \"\";\r\n if (!$style) {\r\n $style = document.createElement(\"style\") as HTMLStyleElement;\r\n $style.id = this._styleId;\r\n $style.setAttribute(\"type\", \"text/css\");\r\n document.head.appendChild($style);\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if ($style[\"styleSheet\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n $style[\"styleSheet\"].cssText = styleContent;\r\n // This is required for IE8 and below.\r\n }\r\n else {\r\n $style.innerHTML = styleContent;\r\n }\r\n }\r\n\r\n protected _toggleVisibility(state): void {\r\n this.displayType = [\"none\", \"block\"][+state];\r\n this.opacity = +state;\r\n this.ariaHidden = `${!state}`;\r\n this.state = state;\r\n }\r\n}\r\n","<div #popperViewRef\r\n [attr.id]=\"id\"\r\n [class.ngxp__container]=\"!popperOptions.disableDefaultStyling\"\r\n [class.ngxp__animation]=\"!popperOptions.disableAnimation\"\r\n [style.display]=\"displayType\"\r\n [style.opacity]=\"opacity\"\r\n [ngStyle]=\"popperOptions.styles\"\r\n [ngClass]=\"extractAppliedClassListExpr(popperOptions.applyClass)\"\r\n attr.aria-hidden=\"{{ariaHidden}}\"\r\n [attr.aria-describedby]=\"popperOptions.ariaDescribe || null\"\r\n attr.role=\"{{popperOptions.ariaRole}}\">\r\n <div *ngIf=\"text\"\r\n class=\"ngxp__inner\"\r\n [innerHTML]=\"text\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"!text\"\r\n class=\"ngxp__inner\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ngxp__arrow\"\r\n [class.ngxp__force-arrow]=\"arrowColor\"\r\n [ngClass]=\"extractAppliedClassListExpr(popperOptions.applyArrowClass)\"></div>\r\n\r\n</div>\r\n","import {InjectionToken} from \"@angular/core\";\r\n//\r\nimport {NgxPopperjsOptions} from \"./ngx-popperjs-options.model\";\r\n\r\nexport const NGX_POPPERJS_DEFAULTS = new InjectionToken<NgxPopperjsOptions>(\"NGX_POPPERJS_DEFAULTS\");\r\n","/**\r\n * @private\r\n */\r\nexport class NgxPopperjsUtils {\r\n\r\n /** Coerces a data-bound value (typically a string) to a boolean. */\r\n static coerceBooleanProperty(value: any): boolean {\r\n return value != null && `${value}` !== \"false\";\r\n }\r\n}\r\n","// tslint:disable:no-input-rename\r\nimport {\r\n ChangeDetectorRef,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {NgxPopperjsContentComponent} from \"../../components/ngx-popperjs-content/ngx-popperjs-content.component\";\r\nimport {NgxPopperjsOptions} from \"../../models/ngx-popperjs-options.model\";\r\nimport {NgxPopperjsPlacements} from \"../../models/ngx-popperjs-placements.model\";\r\nimport {NgxPopperjsTriggers} from \"../../models/ngx-popperjs-triggers.model\";\r\nimport {NGX_POPPERJS_DEFAULTS} from \"../../models/ngx-popperjs-defaults.model\";\r\nimport {NgxPopperjsUtils} from \"../../models/ngx-popperjs-utils.class\";\r\n//\r\nimport {fromEvent, Subject, takeUntil, timer} from \"rxjs\";\r\n\r\n@Directive({\r\n // tslint:disable-next-line:directive-selector\r\n selector: \"[popper]\",\r\n exportAs: \"popper\",\r\n standalone: true\r\n})\r\nexport class NgxPopperjsDirective implements OnInit, OnDestroy {\r\n\r\n static baseOptions: NgxPopperjsOptions = {\r\n showDelay: 0,\r\n hideOnClickOutside: true,\r\n hideOnMouseLeave: false,\r\n hideOnScroll: false,\r\n appendTo: undefined,\r\n ariaRole: \"popper\",\r\n ariaDescribe: \"\",\r\n styles: {},\r\n trigger: NgxPopperjsTriggers.click\r\n };\r\n\r\n @Input(\"popperApplyClass\")\r\n set applyClass(newValue: string) {\r\n if (newValue === this._applyClass) {\r\n return;\r\n }\r\n this._applyClass = newValue;\r\n this._checkExisting(\"applyClass\", newValue);\r\n }\r\n\r\n get applyClass(): string {\r\n return this._applyClass;\r\n }\r\n\r\n @Input(\"popperHideOnClickOutside\")\r\n set hideOnClickOutside(newValue: boolean | string) {\r\n this._hideOnClickOutside = NgxPopperjsUtils.coerceBooleanProperty(newValue);\r\n }\r\n\r\n get hideOnClickOutside(): boolean {\r\n return this._hideOnClickOutside;\r\n }\r\n\r\n @Input(\"popper\")\r\n set content(newValue: string | NgxPopperjsContentComponent) {\r\n if (newValue === this._content) {\r\n\r\n return;\r\n }\r\n this._content = newValue;\r\n if (this._popperContent) {\r\n if (typeof newValue === \"string\") {\r\n this._popperContent.text = newValue;\r\n }\r\n else {\r\n this._popperContent = newValue;\r\n }\r\n }\r\n }\r\n\r\n get content(): string | NgxPopperjsContentComponent {\r\n return this._content;\r\n }\r\n\r\n @Input(\"popperFlip\")\r\n set flip(newValue: boolean) {\r\n this._flip = NgxPopperjsUtils.coerceBooleanProperty(newValue);\r\n this._checkExisting(\"preventOverflow\", this._preventOverflow);\r\n }\r\n\r\n get flip(): boolean {\r\n return this._flip;\r\n }\r\n\r\n\r\n @Input(\"popperPlacement\")\r\n set placement(newValue: NgxPopperjsPlacements) {\r\n this._placement = newValue;\r\n this._checkExisting(\"placement\", newValue);\r\n }\r\n\r\n get placement(): NgxPopperjsPlacements {\r\n\r\n return this._placement;\r\n }\r\n\r\n\r\n @Input(\"popperPreventOverflow\")\r\n set preventOverflow(newValue: boolean) {\r\n this._preventOverflow = NgxPopperjsUtils.coerceBooleanProperty(newValue);\r\n this._checkExisting(\"preventOverflow\", this._preventOverflow);\r\n }\r\n\r\n get preventOverflow(): boolean {\r\n return this._preventOverflow;\r\n }\r\n\r\n @Input()\r\n set popperApplyArrowClass(newValue: string) {\r\n if (newValue === this._applyArrowClass) {\r\n return;\r\n }\r\n this._applyArrowClass = newValue;\r\n if (this._popperContent) {\r\n this._popperContent.popperOptions.applyArrowClass = newValue;\r\n if (!this._shown) {\r\n return;\r\n }\r\n this._popperContent.update();\r\n }\r\n }\r\n\r\n get popperApplyArrowClass(): string {\r\n return this._applyArrowClass;\r\n }\r\n\r\n @Input(\"popperDisabled\")\r\n set disabled(newValue: boolean) {\r\n if (newValue === this._disabled) {\r\n return;\r\n }\r\n this._disabled = !!newValue;\r\n if (this._shown) {\r\n this.hide();\r\n }\r\n }\r\n\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input(\"popperAriaDescribeBy\")\r\n ariaDescribe: string | void;\r\n\r\n @Input(\"popperAriaRole\")\r\n ariaRole: string | void;\r\n\r\n @Input(\"popperBoundaries\")\r\n boundariesElement: string;\r\n\r\n @Input(\"popperDisableAnimation\")\r\n disableAnimation: boolean;\r\n\r\n @Input(\"popperDisableStyle\")\r\n disableStyle: boolean;\r\n\r\n @Input(\"popperHideOnMouseLeave\")\r\n hideOnMouseLeave: boolean | void;\r\n\r\n @Input(\"popperHideOnScroll\")\r\n hideOnScroll: boolean | void;\r\n\r\n @Input(\"popperTimeout\")\r\n hideTimeout: number = 0;\r\n\r\n @Input()\r\n popperAppendTo: string;\r\n\r\n @Output()\r\n popperOnHidden: EventEmitter<NgxPopperjsDirective> = new EventEmitter<NgxPopperjsDirective>();\r\n\r\n @Output()\r\n popperOnShown: EventEmitter<NgxPopperjsDirective> = new EventEmitter<NgxPopperjsDirective>();\r\n\r\n @Output()\r\n popperOnUpdate: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Input(\"popperPositionFixed\")\r\n positionFixed: boolean;\r\n\r\n @Input(\"popperDelay\")\r\n showDelay: number | undefined;\r\n\r\n @Input(\"popperShowOnStart\")\r\n showOnStart: boolean;\r\n\r\n @Input(\"popperTrigger\")\r\n showTrigger: NgxPopperjsTriggers | undefined;\r\n\r\n @Input(\"popperStyles\")\r\n styles: object;\r\n\r\n @Input(\"popperTarget\")\r\n targetElement: HTMLElement;\r\n\r\n @Input(\"popperTimeoutAfterShow\")\r\n timeoutAfterShow: number = 0;\r\n\r\n protected _applyArrowClass: string;\r\n protected _applyClass: string;\r\n protected _content: string | NgxPopperjsContentComponent;\r\n protected _destroy$: Subject<void> = new Subject<void>();\r\n protected _disabled: boolean;\r\n protected _flip: boolean = !0;\r\n protected _globalEventListenersCtrl$: Subject<void> = new Subject<void>();\r\n protected _hideOnClickOutside: boolean = true;\r\n protected _placement: NgxPopperjsPlacements;\r\n protected _popperContent: NgxPopperjsContentComponent;\r\n protected _popperContentClass = NgxPopperjsContentComponent;\r\n protected _popperContentRef: ComponentRef<NgxPopperjsContentComponent>;\r\n protected _preventOverflow: boolean = !0;\r\n protected _scheduledHideTimeoutCtrl$: Subject<void> = new Subject<void>();\r\n protected _scheduledShowTimeoutCtrl$: Subject<void> = new Subject<void>();\r\n protected _shown: boolean = false;\r\n\r\n constructor(protected _changeDetectorRef: ChangeDetectorRef,\r\n protected _elementRef: ElementRef,\r\n protected _vcr: ViewContainerRef,\r\n @Inject(NGX_POPPERJS_DEFAULTS) protected _popperDefaults: NgxPopperjsOptions = {}) {\r\n NgxPopperjsDirective.baseOptions = {...NgxPopperjsDirective.baseOptions, ...this._popperDefaults};\r\n }\r\n\r\n static assignDefined(target: any, ...sources: any[]) {\r\n for (const source of sources) {\r\n for (const key of Object.keys(source)) {\r\n const val = source[key];\r\n if (val !== undefined) {\r\n target[key] = val;\r\n }\r\n }\r\n }\r\n\r\n return target;\r\n }\r\n\r\n applyTriggerListeners() {\r\n switch (this.showTrigger) {\r\n case NgxPopperjsTriggers.click:\r\n this._addListener(\"click\", this.toggle.bind(this));\r\n break;\r\n case NgxPopperjsTriggers.mousedown:\r\n this._addListener(\"mousedown\", this.toggle.bind(this));\r\n break;\r\n case NgxPopperjsTriggers.hover:\r\n this._addListener(\"mouseenter\", this.scheduledShow.bind(this, this.showDelay));\r\n [\"touchend\", \"touchcancel\", \"mouseleave\"].forEach((eventName) => {\r\n this._addListener(eventName, this.scheduledHide.bind(this, null, this.hideTimeout));\r\n });\r\n break;\r\n }\r\n if (this.showTrigger !== NgxPopperjsTriggers.hover && this.hideOnMouseLeave) {\r\n [\"touchend\", \"touchcancel\", \"mouseleave\"].forEach((eventName) => {\r\n this._addListener(eventName, this.scheduledHide.bind(this, null, this.hideTimeout));\r\n });\r\n }\r\n }\r\n\r\n getRefElement() {\r\n return this.targetElement || this._elementRef.nativeElement;\r\n }\r\n\r\n hide() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n if (!this._shown) {\r\n this._scheduledShowTimeoutCtrl$.next();\r\n\r\n return;\r\n }\r\n\r\n this._shown = false;\r\n if (this._popperContentRef) {\r\n this._popperContentRef.instance.hide();\r\n }\r\n else {\r\n this._popperContent.hide();\r\n }\r\n this.popperOnHidden.emit(this);\r\n this._globalEventListenersCtrl$.next();\r\n }\r\n\r\n hideOnClickOutsideHandler($event: MouseEvent): void {\r\n if (this.disabled || !this.hideOnClickOutside || $event.target === this._popperContent.elRef.nativeElement ||\r\n this._popperContent.elRef.nativeElement.contains($event.target)) {\r\n return;\r\n }\r\n this.scheduledHide($event, this.hideTimeout);\r\n }\r\n\r\n hideOnScrollHandler($event: MouseEvent): void {\r\n if (this.disabled || !this.hideOnScroll) {\r\n return;\r\n }\r\n this.scheduledHide($event, this.hideTimeout);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n this._popperContent && this._popperContent.clean();\r\n }\r\n\r\n ngOnInit() {\r\n if (typeof this.content === \"string\") {\r\n this._popperContent = this._constructContent();\r\n this._popperContent.text = this.content;\r\n }\r\n else if (typeof this.content === typeof void 0) {\r\n this._popperContent = this._constructContent();\r\n this._popperContent.text = \"\";\r\n }\r\n else {\r\n this._popperContent = this.content;\r\n }\r\n const popperRef = this._popperContent;\r\n popperRef.referenceObject = this.getRefElement();\r\n this._setContentProperties(popperRef);\r\n this._setDefaults();\r\n this.applyTriggerListeners();\r\n if (this.showOnStart) {\r\n this.scheduledShow();\r\n }\r\n }\r\n\r\n scheduledHide($event: any = null, delay: number = this.hideTimeout) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this._scheduledShowTimeoutCtrl$.next();\r\n timer(delay)\r\n .pipe(takeUntil(this._scheduledHideTimeoutCtrl$), takeUntil(this._destroy$))\r\n .subscribe({\r\n next: () => {\r\n // TODO: check\r\n const toElement = $event ? $event.toElement : null;\r\n const popperContentView = this._popperContent.popperViewRef ? this._popperContent.popperViewRef.nativeElement : false;\r\n if (!popperContentView ||\r\n popperContentView === toElement ||\r\n popperContentView.contains(toElement) ||\r\n (this.content && (this.content as NgxPopperjsContentComponent).isMouseOver)) {\r\n\r\n return;\r\n }\r\n this.hide();\r\n this._applyChanges();\r\n }\r\n });\r\n }\r\n\r\n scheduledShow(delay: number = this.showDelay) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this._scheduledHideTimeoutCtrl$.next();\r\n timer(delay)\r\n .pipe(takeUntil(this._scheduledShowTimeoutCtrl$), takeUntil(this._destroy$))\r\n .subscribe({\r\n next: () => {\r\n this.show();\r\n this._applyChanges();\r\n }\r\n });\r\n }\r\n\r\n show() {\r\n if (this._shown) {\r\n this._scheduledHideTimeoutCtrl$.next();\r\n\r\n return;\r\n }\r\n\r\n this._shown = true;\r\n const popperRef = this._popperContent;\r\n const element = this.getRefElement();\r\n if (popperRef.referenceObject !== element) {\r\n popperRef.referenceObject = element;\r\n }\r\n this._setContentProperties(popperRef);\r\n popperRef.show();\r\n this.popperOnShown.emit(this);\r\n if (this.timeoutAfterShow > 0) {\r\n this.scheduledHide(null, this.timeoutAfterShow);\r\n }\r\n fromEvent(document, \"click\")\r\n .pipe(takeUntil(this._globalEventListenersCtrl$), takeUntil(this._destroy$))\r\n .subscribe({\r\n next: (e: MouseEvent) => this.hideOnClickOutsideHandler(e)\r\n });\r\n fromEvent(this._getScrollParent(this.getRefElement()), \"scroll\")\r\n .pipe(takeUntil(this._globalEventListenersCtrl$), takeUntil(this._destroy$))\r\n .subscribe({\r\n next: (e: MouseEvent) => {\r\n this.hideOnScrollHandler(e);\r\n }\r\n });\r\n }\r\n\r\n toggle() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this._shown ? this.scheduledHide(null, this.hideTimeout) : this.scheduledShow();\r\n }\r\n\r\n protected _addListener(eventName: string, cb: () => void): void {\r\n fromEvent(this._elementRef.nativeElement, eventName)\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe({\r\n next: cb\r\n });\r\n }\r\n\r\n protected _applyChanges() {\r\n this._changeDetectorRef.markForCheck();\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n\r\n protected _checkExisting(key: string, newValue: string | number | boolean | NgxPopperjsPlacements): void {\r\n if (this._popperContent) {\r\n this._popperContent.popperOptions[key] = newValue;\r\n if (!this._shown) {\r\n return;\r\n }\r\n this._popperContent.update();\r\n }\r\n }\r\n\r\n protected _constructContent(): NgxPopperjsContentComponent {\r\n this._popperContentRef = this._vcr.createComponent(this._popperContentClass);\r\n\r\n return this._popperContentRef.instance as NgxPopperjsContentComponent;\r\n }\r\n\r\n protected _getScrollParent(node) {\r\n const isElement = node instanceof HTMLElement;\r\n const overflowY = isElement && window.getComputedStyle(node).overflowY;\r\n const isScrollable = overflowY !== \"visible\" && overflowY !== \"hidden\";\r\n\r\n if (!node) {\r\n return null;\r\n }\r\n else if (isScrollable && node.scrollHeight > node.clientHeight) {\r\n return node;\r\n }\r\n\r\n return this._getScrollParent(node.parentNode) || document;\r\n }\r\n\r\n protected _onPopperUpdate(event) {\r\n this.popperOnUpdate.emit(event);\r\n }\r\n\r\n protected _setContentProperties(popperRef: NgxPopperjsContentComponent) {\r\n popperRef.popperOptions = NgxPopperjsDirective.assignDefined(popperRef.popperOptions, NgxPopperjsDirective.baseOptions, {\r\n showDelay: this.showDelay,\r\n disableAnimation: this.disableAnimation,\r\n disableDefaultStyling: this.disableStyle,\r\n placement: this.placement,\r\n boundariesElement: this.boundariesElement,\r\n trigger: this.showTrigger,\r\n positionFixed: this.positionFixed,\r\n ariaDescribe: this.ariaDescribe,\r\n ariaRole: this.ariaRole,\r\n applyClass: this.applyClass,\r\n applyArrowClass: this.popperApplyArrowClass,\r\n hideOnMouseLeave: this.hideOnMouseLeave,\r\n styles: this.styles,\r\n appendTo: this.popperAppendTo,\r\n preventOverflow: this.preventOverflow,\r\n });\r\n popperRef.onUpdate = this._onPopperUpdate.bind(this);\r\n popperRef.onHidden\r\n .pipe(takeUntil(this._destroy$))\r\n .subscribe(this.hide.bind(this));\r\n }\r\n\r\n protected _setDefaults() {\r\n [\"showDelay\", \"hideOnScroll\", \"hideOnMouseLeave\", \"hideOnClickOutside\", \"ariaRole\", \"ariaDescribe\"].forEach((key) => {\r\n this[key] = this[key] === void 0 ? NgxPopperjsDirective.baseOptions[key] : this[key];\r\n });\r\n this.showTrigger = this.showTrigger || NgxPopperjsDirective.baseOptions.trigger;\r\n this.styles = this.styles === void 0 ? {...NgxPopperjsDirective.baseOptions.styles} : this.styles;\r\n }\r\n\r\n}\r\n","// tslint:disable:no-input-rename\r\nimport {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\n//\r\nimport {NgxPopperjsOptions} from \"../../models/ngx-popperjs-options.model\";\r\nimport {NgxPopperjsPlacements} from \"../../models/ngx-popperjs-placements.model\";\r\nimport {NGX_POPPERJS_DEFAULTS} from \"../../models/ngx-popperjs-defaults.model\";\r\nimport {NgxPopperjsDirective} from \"./ngx-popperjs.directive\";\r\nimport {NgxPopperjsContentComponent} from \"../../components/ngx-popperjs-content/ngx-popperjs-content.component\";\r\nimport {NgxPopperjsTriggers} from \"../../models/ngx-popperjs-triggers.model\";\r\n\r\n@Directive({\r\n selector: \"[popperLoose]\",\r\n exportAs: \"popperLoose\",\r\n standalone: true\r\n})\r\nexport class NgxPopperjsLooseDirective extends NgxPopperjsDirective {\r\n\r\n @Input()\r\n set popperLoose(newValue: string | NgxPopperjsContentComponent) {\r\n this.content = newValue;\r\n }\r\n\r\n @Input()\r\n set popperLoosePlacement(newValue: `${NgxPopperjsPlacements}`) {\r\n this.placement = newValue as NgxPopperjsPlacements;\r\n }\r\n\r\n @Input()\r\n set popperLooseTrigger(newValue: `${NgxPopperjsTriggers}`) {\r\n this.showTrigger = newValue as NgxPopperjsTriggers;\r\n }\r\n\r\n constructor(changeDetectorRef: ChangeDetectorRef,\r\n elementRef: ElementRef,\r\n vcr: ViewContainerRef,\r\n @Inject(NGX_POPPERJS_DEFAULTS) popperDefaults: NgxPopperjsOptions = {}) {\r\n super(changeDetectorRef, elementRef, vcr, popperDefaults);\r\n }\r\n\r\n}\r\n","\r\nexport enum NgxPopperjsPlacements {\r\n TOP = \"top\",\r\n BOTTOM = \"bottom\",\r\n LEFT = \"left\",\r\n RIGHT = \"right\",\r\n TOPSTART = \"top-start\",\r\n BOTTOMSTART = \"bottom-start\",\r\n LEFTSTART = \"left-start\",\r\n RIGHTSTART = \"right-start\",\r\n TOPEND = \"top-end\",\r\n BOTTOMEND = \"bottom-end\",\r\n LEFTEND = \"left-end\",\r\n RIGHTEND = \"right-end\"\r\n}\r\n","import {ModuleWithProviders, NgModule, Provider} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\n//\r\nimport {NgxPopperjsDirective} from \"./directives/ngx-popperjs/ngx-popperjs.directive\";\r\nimport {NgxPopperjsLooseDirective} from \"./directives/ngx-popperjs/ngx-popperjs-loose.directive\";\r\nimport {NgxPopperjsContentComponent} from \"./components/ngx-popperjs-content/ngx-popperjs-content.component\";\r\nimport {NgxPopperjsOptions} from \"./models/ngx-popperjs-options.model\";\r\nimport {NGX_POPPERJS_DEFAULTS} from \"./models/ngx-popperjs-defaults.model\";\r\n\r\nexport function provideNgxPopperjsOptions(config: NgxPopperjsOptions = {}): Provider[] {\r\n return [\r\n {provide: NGX_POPPERJS_DEFAULTS, useValue: config},\r\n ];\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgxPopperjsContentComponent,\r\n NgxPopperjsDirective,\r\n NgxPopperjsLooseDirective\r\n ],\r\n exports: [\r\n NgxPopperjsContentComponent,\r\n NgxPopperjsDirective,\r\n NgxPopperjsLooseDirective\r\n ],\r\n providers: [\r\n provideNgxPopperjsOptions()\r\n ]\r\n})\r\nexport class NgxPopperjsModule {\r\n\r\n public static forRoot(popperBaseOptions?: NgxPopperjsOptions): ModuleWithProviders<NgxPopperjsModule> {\r\n return {\r\n ngModule: NgxPopperjsModule,\r\n providers: [\r\n provideNgxPopperjsOptions(popperBaseOptions)\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-popperjs\r\n */\r\n\r\n// Components\r\nexport * from \"./lib/components/ngx-popperjs-content/ngx-popperjs-content.component\";\r\n// Directives\r\nexport * from \"./lib/directives/ngx-popperjs/ngx-popperjs.directive\";\r\nexport * from \"./lib/directives/ngx-popperjs/ngx-popperjs-loose.directive\";\r\n// Models\r\nexport * from \"./lib/models/ngx-popperjs-options.model\";\r\nexport * from \"./lib/models/ngx-popperjs-placements.model\";\r\nexport * from \"./lib/models/ngx-popperjs-triggers.model\";\r\n// Module\r\nexport * from \"./lib/ngx-popperjs.module\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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