{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/navigation/popover/src/popover.props.ts","../../../../../projects/components/widgets/navigation/popover/src/popover.component.ts","../../../../../projects/components/widgets/navigation/popover/src/popover.component.html","../../../../../projects/components/widgets/navigation/popover/src/index.ts"],"sourcesContent":["import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-popover',\n        new Map(\n            [\n                ['autoclose', {value: 'outsideClick', ...PROP_STRING}],\n                ['badgevalue', PROP_STRING],\n                ['caption', {value: 'Link', ...PROP_STRING}],\n                ['class', PROP_STRING],\n                ['conditionalclass', PROP_ANY],\n                ['content', PROP_STRING],\n                ['contentanimation', PROP_STRING],\n                ['contentsource', {value: 'partial', ...PROP_STRING}],\n                ['encodeurl', PROP_BOOLEAN],\n                ['hint', PROP_STRING],\n                ['arialabel', PROP_STRING],\n                ['hyperlink', {value: 'javascript:void(0)', PROP_STRING}],\n                ['iconclass', PROP_STRING],\n                ['iconheight', PROP_STRING],\n                ['iconmargin', PROP_STRING],\n                ['iconposition', PROP_STRING],\n                ['iconurl', PROP_STRING],\n                ['iconwidth', PROP_STRING],\n                ['interaction', {value: 'click', ...PROP_STRING}],\n                ['name', PROP_STRING],\n                ['popoverarrow', {value: true, ...PROP_BOOLEAN}],\n                ['popoverheight', PROP_STRING],\n                ['popoverplacement', {value: 'bottom', ... PROP_STRING}],\n                ['popoverwidth', PROP_STRING],\n                ['shortcutkey', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['tabindex', {value: 0, ...PROP_NUMBER}],\n                ['title', PROP_STRING],\n                ['adaptiveposition', {value: true, ...PROP_BOOLEAN}]\n\n            ]\n        )\n    );\n};\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    Inject,\n    Injector,\n    OnDestroy,\n    OnInit,\n    Optional,\n    TemplateRef,\n    ViewChild\n} from '@angular/core';\n\nimport {PopoverDirective, PopoverModule} from 'ngx-bootstrap/popover';\n\nimport {\n    addClass,\n    adjustContainerPosition,\n    adjustContainerRightEdges,\n    App,\n    findRootContainer,\n    setCSSFromObj\n} from '@wm/core';\nimport {\n    AUTOCLOSE_TYPE,\n    getContainerTargetClass,\n    IWidgetConfig,\n    provideAsWidgetRef,\n    StylableComponent,\n    styler\n} from '@wm/components/base';\nimport { AnchorComponent } from '@wm/components/basic/anchor';\n\nimport {registerProps} from './popover.props';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-popover-wrapper';\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-popover',\n    hostClass: DEFAULT_CLS\n};\n\nconst eventsMap = {\n    click: 'click',\n    hover: 'mouseenter:click',\n    default: 'click mouseenter'\n};\n\nlet activePopover: PopoverComponent;\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, PopoverModule, AnchorComponent],\n    selector: 'wm-popover',\n    templateUrl: './popover.component.html',\n    providers: [\n        provideAsWidgetRef(PopoverComponent)\n    ]\n})\n\nexport class PopoverComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n    static initializeProps = registerProps();\n\n    public event: string;\n    public isOpen = false;\n    private closePopoverTimeout;\n    public readonly popoverContainerCls;\n    public canPopoverOpen = true;\n    private Widgets;\n    private Variables;\n    private Actions;\n\n    public interaction: string;\n    public popoverarrow: boolean;\n    public popoverwidth: string;\n    public popoverheight: string;\n    public contentanimation: string;\n    public contentsource: string;\n    public content: string;\n    public popoverplacement: string;\n    public outsideclick: boolean;\n    public autoclose: string;\n\n    public class: string;\n    public title: string;\n    public tabindex: any;\n    public name: string;\n    public adaptiveposition:boolean;\n    public containerTarget: string;\n    public hint: string;\n    public arialabel: string;\n    public caption: string;\n    public badgevalue: string;\n    \n    // Anchor display properties\n    public iconurl: string;\n    public iconwidth: string;\n    public iconheight: string;\n    public iconmargin: string;\n    public iconclass: string;\n    public iconposition: string;\n    private documentClickHandler: (e: MouseEvent) => void;\n    private isClosingProgrammatically = false;\n    private static activePopovers: PopoverComponent[] = [];\n    private isHandlingClick = false;\n    private preventFocusShift: boolean = false;\n    private partialLoadedSubscription: any;\n    private arrowPositionSubscription: any;\n    isPrism: boolean;\n\n    @ViewChild(PopoverDirective) private bsPopoverDirective;\n    @ViewChild('anchor', { static: true }) anchorRef: ElementRef;\n    @ContentChild(TemplateRef) popoverTemplate;\n    @ContentChild('partial') partialRef;\n\n    constructor(inj: Injector, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any, private cdr: ChangeDetectorRef) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n        this.popoverContainerCls = `app-popover-${this.widgetId}`;\n        this.isPrism = this.app.isPrism;\n    }\n\n    private setupDocumentClickHandler() {\n        if (this.documentClickHandler) {\n            document.removeEventListener('click', this.documentClickHandler, true);\n        }\n\n        this.documentClickHandler = (event: MouseEvent) => {\n            if (!this.isOpen) return;\n\n            const target = event.target as HTMLElement;\n\n            // Set flag to prevent open() from running during click handling\n            this.isHandlingClick = true;\n\n            try {\n                // Check for special containers as before\n                const isInsideSpecialContainer = !!(\n                    target.closest('.bs-datepicker-container') ||\n                    target.closest(\".dropdown-menu\")\n                );\n\n                if (isInsideSpecialContainer) {\n                    return;\n                }\n\n                const clickedPopoverIndex = PopoverComponent.activePopovers.findIndex(popover => {\n                    const popoverContainer = document.querySelector(`.${popover.popoverContainerCls}`);\n                    return popoverContainer?.contains(target);\n                });\n\n                // For anchor clicks, just close and prevent further handling\n                if (this.anchorRef?.nativeElement?.contains(target)) {\n                    event.preventDefault();\n                    event.stopPropagation();\n                    this.isOpen ? this.close() : this.open()\n                    return;\n                }\n\n                if (clickedPopoverIndex === -1) {\n                    if (this.outsideclick) {\n                        this.closeAllPopovers();\n                    }\n                } else {\n                    this.closeInnerPopovers(clickedPopoverIndex);\n                }\n            } finally {\n                // Always reset the flag when click handling is done\n                setTimeout(() => {\n                    this.isHandlingClick = false;\n                }, 0);\n            }\n        };\n\n        document.addEventListener('click', this.documentClickHandler, true);\n    }\n\n    private closeAllPopovers() {\n        PopoverComponent.activePopovers.forEach(popover => {\n            if (popover.outsideclick) {\n                popover.isClosingProgrammatically = true;\n                popover.close();\n            }\n        });\n    }\n\n    private closeInnerPopovers(clickedIndex: number) {\n        for (let i = clickedIndex + 1; i < PopoverComponent.activePopovers.length; i++) {\n            const popover = PopoverComponent.activePopovers[i];\n            if (popover.outsideclick) {\n                popover.isClosingProgrammatically = true;\n                popover.close();\n            }\n        }\n    }\n\n    private isChildPopover(): boolean {\n        return !!$(this.nativeElement).closest('.popover').length;\n    }\n    /**\n     * Opens the popover, similar to the showPopover method.\n     * @param preventFocusShift Optional parameter (default: false). When false, focus shifts to the popover upon opening. If set to true, focus remains on the triggering element.\n     */\n    public open(preventFocusShift?:boolean) {\n        this.preventFocusShift = preventFocusShift ?? false;\n        if (this.isHandlingClick) return;\n        this.showPopover();\n        if (!PopoverComponent.activePopovers.includes(this)) {\n            PopoverComponent.activePopovers.push(this);\n        }\n        this.cdr.detectChanges();\n    }\n\n    // This mehtod is used to hide/close the popover.\n    public close() {\n        if (this.isOpen) {\n            this.isClosingProgrammatically = true;\n            this.isOpen = false;\n            if (this.bsPopoverDirective) {\n                this.bsPopoverDirective.hide();\n            }\n            const index = PopoverComponent.activePopovers.indexOf(this);\n            if (index > -1) {\n                PopoverComponent.activePopovers.splice(index, 1);\n            }\n            this.cdr.detectChanges();\n        }\n    }\n\n    // Trigger on hiding popover\n    public onHidden() {\n        if (!this.isChildPopover() || this.isClosingProgrammatically) {\n            this.invokeEventCallback('hide', {$event: {type: 'hide'}});\n            this.isOpen = false;\n            if (activePopover === this) {\n                activePopover = null;\n            }\n        }\n        this.isClosingProgrammatically = false;\n    }\n\n    private setFocusToPopoverLink() {\n        setTimeout(() => this.anchorRef.nativeElement.focus(), 10);\n    }\n\n    private adjustPopoverArrowPosition(popoverElem, popoverLeftShift) {\n        // Clean up any existing subscription before creating a new one\n        if (this.arrowPositionSubscription) {\n            this.arrowPositionSubscription.unsubscribe();\n            this.arrowPositionSubscription = null;\n        }\n        \n        this.arrowPositionSubscription = this.bsPopoverDirective._popover._ngZone.onStable.subscribe(() => {\n            popoverElem.find('.popover-arrow').css('left', popoverLeftShift + 'px');\n        });\n    }\n\n    private calculatePopoverPostion(element) {\n\n        const popoverElem = $(element);\n        let popoverLeft =  popoverElem.offset().left;\n        const popoverWidth = popoverElem[0].offsetWidth;\n        const viewPortWidth = $(window).width();\n        const parentDimesion = this.anchorRef.nativeElement.getBoundingClientRect();\n        // Adjusting popover position, if it is not visible at left side\n        if (popoverLeft < 0) {\n            adjustContainerPosition(popoverElem, this.nativeElement, this.bsPopoverDirective._popover);\n            const popoverLeftShift = 4;\n            const arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeftShift;\n            this.adjustPopoverArrowPosition(popoverElem, arrowLeftShift);\n        }\n        // Adjusting popover position, if it is not visible at right side\n        if (popoverLeft + popoverWidth > viewPortWidth) {\n            adjustContainerRightEdges(popoverElem, this.nativeElement, this.bsPopoverDirective._popover);\n            setTimeout(() => {\n                popoverLeft = popoverElem.offset().left;\n                const popoverLeftAdjust = (popoverLeft + popoverWidth) - viewPortWidth;\n                const popoverLeftShift =  popoverLeft - popoverLeftAdjust;\n                let arrowLeftShift ;\n                if(popoverLeft<=100){\n                    arrowLeftShift =  (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeft;\n                }else{\n                    arrowLeftShift = (parentDimesion.left + (parentDimesion.width / 2)) - popoverLeftShift;\n                }\n                if(viewPortWidth > 500){\n                    arrowLeftShift += 30;\n                }\n               this.adjustPopoverArrowPosition(popoverElem, arrowLeftShift);\n            });\n        }\n    }\n\n    // Trigger on showing popover\n    public onShown() {\n        const root = findRootContainer(this.$element);\n        // if page styles have to be applied to popover then popover has to be child of page element.\n        if (root) {\n            $('body > popover-container').wrap('<' + root + '/>');\n        }\n        // Fix for [WMS-25125]: Not closing the existing opened popovers when the autoclose property is DISABLED\n        if (!this.isChildPopover()) {\n            if (activePopover && activePopover !== this &&\n                activePopover.autoclose !== AUTOCLOSE_TYPE.DISABLED) {\n                activePopover.isClosingProgrammatically = true;\n                activePopover.close();\n            }\n            activePopover = this;\n        }\n\n        this.isOpen = true;\n        if (!PopoverComponent.activePopovers.includes(this)) {\n            PopoverComponent.activePopovers.push(this);\n        }\n        const popoverContainer  = document.querySelector(`.${this.popoverContainerCls}`) as HTMLElement;\n        if (popoverContainer) {\n            popoverContainer.setAttribute('data-popover-id', this.widgetId);\n\n            // Add click event listener to stop propagation\n            popoverContainer.addEventListener('click', (event: Event) => {\n                event.stopPropagation();\n            });\n            if (this.isPrism) this.applyVariantClass(popoverContainer);\n        }\n        setCSSFromObj(popoverContainer, {\n            height: this.popoverheight,\n            minWidth: this.popoverwidth,\n            width: this.popoverwidth\n        });\n        if (!this.popoverarrow) {\n            addClass(popoverContainer.querySelector('.arrow') as HTMLElement, 'hidden');\n        }\n        if (this.interaction === 'hover' || this.interaction === 'default') {\n\n            // do not use addEventListener here\n            // attaching the event this way will override the existing event handlers\n            popoverContainer.onmouseenter = () => clearTimeout(this.closePopoverTimeout);\n            popoverContainer.onmouseleave = () => this.hidePopover();\n            this.anchorRef.nativeElement.onmouseenter = () => clearTimeout(this.closePopoverTimeout);\n            this.anchorRef.nativeElement.onmouseleave = () => this.hidePopover();\n        }\n        if (this.outsideclick) {\n            this.setupDocumentClickHandler();\n        }\n        setTimeout(() => {\n            if (this.anchorRef?.nativeElement) {\n                this.anchorRef.nativeElement.removeAttribute('aria-describedby');\n            }\n        });\n        const deRegister = this.eventManager.addEventListener(popoverContainer, 'keydown.esc', () => {\n            this.isOpen = false;\n            this.setFocusToPopoverLink();\n            deRegister();\n        });\n        const popoverStartBtn: HTMLElement = popoverContainer.querySelector('.popover-start');\n        const popoverEndBtn: HTMLElement = popoverContainer.querySelector('.popover-end');\n        popoverStartBtn.onkeydown = (event) => {\n            // Check for Shift+Tab key\n            if (event.shiftKey && event.key === 'Tab') {\n                this.bsPopoverDirective.hide();\n                event.preventDefault();\n                this.setFocusToPopoverLink();\n                this.isOpen = false;            }\n        };\n        popoverEndBtn.onkeydown = (event) => {\n            // Check for Tab key\n            if (!event.shiftKey && event.key === 'Tab') {\n                this.bsPopoverDirective.hide();\n                event.preventDefault();\n                this.setFocusToPopoverLink();\n                this.isOpen = false;            }\n        };\n\n        //Whenever autoclose property is set to 'always', adding the onclick listener to the popover container to close the popover.\n        if (this.autoclose === AUTOCLOSE_TYPE.ALWAYS) {\n            popoverContainer.onclick = () => this.close();\n        }\n        // Fix for [WMS-27656]: Added 'preventFocusShift' parameter (default: false).\n        // By default, focus moves to the popover when it appears.\n        // If 'preventFocusShift' is set to true, focus remains on the triggering element.\n        if (this.preventFocusShift) {\n            const activeElement = document.activeElement as HTMLElement; // Capture current focused element\n            setTimeout(() => activeElement?.focus(), 0);\n        } else {\n            setTimeout(() => popoverStartBtn.focus(), 50);\n        }\n\n        // Adjusting popover position if the popover placement is top or bottom\n        setTimeout( () => {\n            if (!this.adaptiveposition ) {\n                this.calculatePopoverPostion(popoverContainer);\n            }\n            // triggering onload and onshow events after popover content has rendered\n            this.triggerPopoverEvents();\n        });\n    }\n\n    triggerPopoverEvents() {\n        if (this.contentsource === 'partial') {\n            this.partialLoadedSubscription = this.app.subscribe('partialLoaded', () => {\n                // Always clean up subscription first\n                if (this.partialLoadedSubscription) {\n                    this.partialLoadedSubscription();\n                    this.partialLoadedSubscription = null;\n                }\n                \n                // Check if component is still alive and partialRef exists\n                if (!this.partialRef || !this.partialRef.nativeElement) {\n                    return;\n                }\n                \n                const parEle = this.partialRef.nativeElement;\n                let partialScope;\n\n                if (parEle) {\n                    partialScope  = parEle.widget;\n                    this.Widgets   = partialScope.Widgets;\n                    this.Variables = partialScope.Variables;\n                    this.Actions   = partialScope.Actions;\n                    this.invokeEventCallback('load');\n                    this.invokeEventCallback('show', {$event: {type: 'show'}});\n                }\n            });\n        } else {\n            this.Widgets   = this.viewParent.Widgets;\n            this.Variables = this.viewParent.Variables;\n            this.Actions   = this.viewParent.Actions;\n            this.invokeEventCallback('show', {$event: {type: 'show'}});\n        }\n    }\n\n    private hidePopover() {\n        this.isClosingProgrammatically = true;\n        this.closePopoverTimeout = setTimeout(() => this.isOpen = false, 500);\n    }\n\n    private showPopover() {\n        this.bsPopoverDirective.show();\n    }\n\n    onPopoverAnchorKeydown($event) {\n        // if there is no content available, the popover should not open through enter key. So checking whether the canPopoverOpen flag is true or not.\n        if (!this.canPopoverOpen) {\n           return;\n        }\n        if ($event.key === 'Enter') {\n            $event.stopPropagation();\n            $event.preventDefault();\n            this.showPopover();\n        }\n    }\n\n    onPropertyChange(key: string, nv: any, ov?: any) {\n        if (key === 'class' || key === 'tabindex') {\n            return;\n        }\n        if (key === 'contentsource') {\n            // if there is no partial content available, the popover should not open\n            if (this.contentsource === 'partial' && !this.content) {\n                this.canPopoverOpen = false;\n            }\n        }\n        if (key === 'content' && nv) {\n            this.canPopoverOpen = true;\n        }\n        if (key === 'autoclose') {\n            this.outsideclick = (nv === AUTOCLOSE_TYPE.OUTSIDECLICK || nv === AUTOCLOSE_TYPE.ALWAYS) ? true : false;\n        }\n        super.onPropertyChange(key, nv, ov);\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.event = eventsMap[this.interaction];\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        styler(this.anchorRef.nativeElement, this);\n        this.containerTarget = getContainerTargetClass(this.nativeElement);\n        // let parentElemPopover = $(this.nativeElement).parents();\n        // if (parentElemPopover.closest('[wmTable]').length ||\n        //     parentElemPopover.closest('[wmtabs]').length ||\n        //     parentElemPopover.closest('modal-container').length) {\n        //     this.adaptiveposition = false;\n        // }\n    }\n\n    ngOnDetach() {\n        // Hide the popover container while attaching the next component as part of page reuse strategy.\n        this.bsPopoverDirective.hide();\n    }\n\n    ngOnDestroy() {\n        // Unsubscribe from partialLoaded event\n        if (this.partialLoadedSubscription) {\n            this.partialLoadedSubscription();\n            this.partialLoadedSubscription = null;\n        }\n        \n        // Unsubscribe from arrow position adjustment\n        if (this.arrowPositionSubscription) {\n            this.arrowPositionSubscription.unsubscribe();\n            this.arrowPositionSubscription = null;\n        }\n        \n        // Close popover if open\n        if (this.isOpen && this.bsPopoverDirective) {\n            this.bsPopoverDirective.hide();\n        }\n        \n        // Clear timeout\n        if (this.closePopoverTimeout) {\n            clearTimeout(this.closePopoverTimeout);\n            this.closePopoverTimeout = null;\n        }\n        \n        // Remove document click handler\n        if (this.documentClickHandler) {\n            document.removeEventListener('click', this.documentClickHandler, true);\n            this.documentClickHandler = null;\n        }\n        \n        // Remove from active popovers array\n        const index = PopoverComponent.activePopovers.indexOf(this);\n        if (index > -1) {\n            PopoverComponent.activePopovers.splice(index, 1);\n        }\n        \n        // Clear anchor event handlers\n        if (this.anchorRef?.nativeElement) {\n            this.anchorRef.nativeElement.onmouseenter = null;\n            this.anchorRef.nativeElement.onmouseleave = null;\n        }\n\n        // MEMORY LEAK FIX: Clear all ViewChild and ContentChild references\n        // These retain the entire component tree including parent contexts (colDef, etc.)\n        this.bsPopoverDirective = null;\n        this.anchorRef = null;\n        this.popoverTemplate = null;\n        this.partialRef = null;\n        \n        // Call parent cleanup\n        super.ngOnDestroy();\n    }\n\n    // Applying all variant classes that start with \"popover-\" from the popover.\n    // Ensures the popover container also receives the variant styling.\n    applyVariantClass(popoverContainer: HTMLElement) {\n        if (!popoverContainer) return;\n\n        const classes = (this.class || '').split(/\\s+/);\n        const popoverVariants = classes.filter(c => c.startsWith('popover-'));\n        popoverVariants.forEach(v => popoverContainer.classList.add(v));\n    }\n\n}\n","<a [popover]=\"popoverTemplate\"\n    [popoverContext]=\"context\"\n    [popoverTitle]=\"title\"\n    [placement]=\"popoverplacement\"\n    [outsideClick]=\"outsideclick\"\n    [triggers]=\"event\"\n    (onShown)=\"onShown()\"\n    (onHidden)=\"onHidden()\"\n    containerClass=\"app-popover animated {{contentanimation}} {{popoverContainerCls}}\"\n    [container]=\"containerTarget || '.wm-app'\"\n    [isOpen]=\"isOpen\"\n    [tabindex]=\"tabindex\"\n    [name]=\"name\"\n    [class]=\"class\"\n    [ngClass]=\"{'disable-popover': !canPopoverOpen}\"\n    [adaptivePosition]=\"adaptiveposition\"\n    boundariesElement=\"window\"\n    [attr.aria-label]=\"arialabel || (badgevalue ? caption + ' ' + badgevalue : caption) || 'Popover menu'\"\n    [attr.aria-expanded]=\"isOpen\"\n    role=\"button\"\n    #anchor\n    name.bind=\"name\"\n    wmAnchor\n    animation.bind=\"animation\"\n    badgevalue.bind=\"badgevalue\"\n    caption.bind=\"caption\"\n    encodeurl.bind=\"encodeurl\"\n    hint.bind=\"hint\"\n    hyperlink.bind=\"hyperlink\"\n    iconurl.bind=\"iconurl\"\n    iconwidth.bind=\"iconwidth\"\n    iconheight.bind=\"iconheight\"\n    iconmargin.bind=\"iconmargin\"\n    iconclass.bind=\"iconclass\"\n    iconposition.bind=\"iconposition\"\n    shortcutkey.bind=\"shortcutkey\"\n    tabindex.bind=\"tabindex\"\n    (keydown)=\"onPopoverAnchorKeydown($event)\">\n</a>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}