@agorapulse/ui-components 22.2.7 → 22.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/agorapulse-ui-components-22.2.9.tgz +0 -0
  2. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +1 -1
  3. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -1
  4. package/fesm2022/agorapulse-ui-components-avatar-group.mjs +1 -1
  5. package/fesm2022/agorapulse-ui-components-avatar-group.mjs.map +1 -1
  6. package/fesm2022/agorapulse-ui-components-datepicker.mjs +1 -1
  7. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
  8. package/fesm2022/agorapulse-ui-components-filter-chips-list.mjs +2 -2
  9. package/fesm2022/agorapulse-ui-components-filter-chips-list.mjs.map +1 -1
  10. package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs +1 -1
  11. package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs.map +1 -1
  12. package/fesm2022/agorapulse-ui-components-labels.mjs +1 -1
  13. package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -1
  14. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +4 -4
  15. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
  16. package/fesm2022/agorapulse-ui-components-radio-button-card.mjs +1 -1
  17. package/fesm2022/agorapulse-ui-components-radio-button-card.mjs.map +1 -1
  18. package/fesm2022/agorapulse-ui-components-select.mjs +5 -5
  19. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  20. package/fesm2022/agorapulse-ui-components-selection-dropdown.mjs +1 -1
  21. package/fesm2022/agorapulse-ui-components-selection-dropdown.mjs.map +1 -1
  22. package/fesm2022/agorapulse-ui-components-tooltip.mjs +179 -371
  23. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
  24. package/package.json +2 -2
  25. package/types/agorapulse-ui-components-tooltip.d.ts +38 -33
  26. package/agorapulse-ui-components-22.2.7.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"agorapulse-ui-components-tooltip.mjs","sources":["../../../libs/ui-components/tooltip/src/tooltip-external-trigger.directive.ts","../../../libs/ui-components/tooltip/src/tooltip.component.ts","../../../libs/ui-components/tooltip/src/tooltip.component.html","../../../libs/ui-components/tooltip/src/tooltip.service.ts","../../../libs/ui-components/tooltip/src/tooltip.directive.ts","../../../libs/ui-components/tooltip/src/agorapulse-ui-components-tooltip.ts"],"sourcesContent":["import {\n AfterViewInit,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { TooltipDirective } from './tooltip.directive';\n\n/**\n * Directive that triggers a tooltip to show/hide\n *\n * ```html\n * <div #myTooltip=\"apTooltip\" apTooltip>Content</div>\n * <div [apTooltipExternalTrigger]=\"myTooltip\">Click me</div>\n * ```\n */\n@Directive({\n selector: '[apTooltipExternalTrigger]',\n standalone: true,\n exportAs: 'apTooltipExternalTrigger',\n})\nexport class TooltipExternalTriggerDirective implements AfterViewInit, OnDestroy {\n private readonly elementRef: ElementRef = inject(ElementRef);\n private readonly zone: NgZone = inject(NgZone);\n\n // Accept a TooltipDirective reference for sibling usage\n apTooltipExternalTrigger = input<TooltipDirective>();\n\n private clickListener: (() => void) | undefined = undefined;\n\n private get targetTooltip(): TooltipDirective | null {\n // Prefer explicit reference, fall back to parent\n return this.apTooltipExternalTrigger() ?? null;\n }\n\n ngAfterViewInit(): void {\n if (!this.targetTooltip) {\n return;\n }\n\n this.setupEventListeners();\n }\n\n private setupEventListeners(): void {\n this.cleanupEventListeners();\n\n this.zone.runOutsideAngular(() => {\n const nativeElement = this.elementRef.nativeElement;\n\n this.clickListener = this.onClick.bind(this);\n nativeElement.addEventListener('click', this.clickListener, true);\n });\n }\n\n private cleanupEventListeners(): void {\n const nativeElement = this.elementRef.nativeElement;\n\n if (this.clickListener) {\n nativeElement.removeEventListener('click', this.clickListener, true);\n this.clickListener = undefined;\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupEventListeners();\n }\n\n private onClick(): void {\n this.zone.run(() => {\n const tooltip = this.targetTooltip;\n if (!tooltip) return;\n\n if (tooltip.container) {\n tooltip.deactivate();\n } else {\n tooltip.externallyTriggerred = true;\n tooltip.activate();\n }\n });\n }\n}\n","import { AvatarComponent, AvatarItem } from '@agorapulse/ui-components/avatar';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nexport const CustomTooltipType = {\n DEFAULT: 'DEFAULT', // default type\n PRESENTATION: 'PRESENTATION',\n LIST: 'LIST',\n};\nexport type CustomTooltipType = (typeof CustomTooltipType)[keyof typeof CustomTooltipType];\n\nexport type CustomTooltipPresentationItem = {\n title: string;\n description: string;\n};\n\nexport type CustomTooltipAvatarItem = AvatarItem & {\n caption?: string;\n};\n\n/**\n * A tooltip component that is used for predefined templates: Presentation and List.\n * Not to be used directly, use TooltipDirective instead.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [AvatarComponent],\n providers: [],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TooltipComponent {\n protected readonly CUSTOM_TOOLTIP_TYPE = CustomTooltipType;\n\n type = input<CustomTooltipType>(CustomTooltipType.DEFAULT);\n presentationContext = input<CustomTooltipPresentationItem>();\n\n tooltipListItems = input<CustomTooltipAvatarItem[]>([]);\n showCaption = input(true);\n}\n","<div class=\"custom-tooltip-container\">\n @switch (type()) {\n @case (CUSTOM_TOOLTIP_TYPE.PRESENTATION) {\n @let presentation = presentationContext();\n @if (presentation) {\n <div class=\"tooltip-presentation-title\">{{ presentation.title }}</div>\n <div class=\"tooltip-presentation-caption\">{{ presentation.description }}</div>\n }\n }\n @case (CUSTOM_TOOLTIP_TYPE.LIST) {\n <div class=\"tooltip-list-container\">\n @for (avatar of tooltipListItems(); track avatar) {\n <div class=\"tooltip-item\">\n <ap-avatar\n [profilePicture]=\"avatar.profilePicture\"\n [alt]=\"avatar.alt ?? ''\"\n [network]=\"avatar.network\"\n [size]=\"showCaption() && avatar.caption ? 32 : 24\"\n [username]=\"avatar.username\"\n [showInitials]=\"avatar.showInitials\"\n [bigNetwork]=\"avatar.bigNetwork ?? false\"\n [anonymous]=\"avatar.anonymous ?? false\"\n [online]=\"avatar.online ?? false\"\n [rounded]=\"avatar.rounded ?? true\" />\n\n <div class=\"tooltip-item-info\">\n <div class=\"tooltip-item-title\">\n {{ avatar.username }}\n </div>\n @if (showCaption() && avatar.caption) {\n <div class=\"tooltip-item-caption\">\n {{ avatar.caption }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n @default {\n\n }\n }\n\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TooltipService {\n static readonly defaultOffset = 12;\n\n static getOuterWidth(el: HTMLElement): number {\n return el.offsetWidth;\n }\n\n static getOuterHeight(el: HTMLElement): number {\n return el.offsetHeight;\n }\n\n static getViewport(): any {\n const win = window,\n d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n w = win.innerWidth || e.clientWidth || g.clientWidth,\n h = win.innerHeight || e.clientHeight || g.clientHeight;\n\n return { width: w, height: h };\n }\n\n static getWindowScrollLeft(): number {\n const doc = document.documentElement;\n return (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n }\n\n static getWindowScrollTop(): number {\n const doc = document.documentElement;\n return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n }\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n AfterViewInit,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport DOMPurify from 'dompurify';\nimport { CustomTooltipAvatarItem, CustomTooltipPresentationItem, CustomTooltipType, TooltipComponent } from './tooltip.component';\nimport { TooltipService } from './tooltip.service';\n\n@Directive({ selector: '[apTooltip]', standalone: true, exportAs: 'apTooltip' })\nexport class TooltipDirective implements AfterViewInit, OnDestroy, OnInit {\n private readonly elementRef: ElementRef = inject(ElementRef);\n private readonly zone: NgZone = inject(NgZone);\n private readonly viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n private readonly destroyRef = inject(DestroyRef);\n\n private documentClickListener?: (e: MouseEvent) => void;\n private documentScrollListener?: (e: Event) => void;\n\n apTooltip = input.required<string | TemplateRef<HTMLElement> | undefined | null>();\n apTooltipPosition = input<'right' | 'left' | 'top' | 'bottom' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'>('top');\n apTooltipShowDelay = input<number>(80);\n apTooltipHideDelay = input<number>(0);\n apTooltipDuration = input<number>(0);\n apTooltipDisabled = input<boolean>(false);\n apTooltipTruncatedTextOnly = input<boolean>(false);\n apTooltipTemplateContext = input<any>();\n apTooltipVirtualScrollElement = input<CdkVirtualScrollViewport>();\n apTooltipTrigger = input<'hover' | 'click'>('hover');\n\n // Predefined template variables\n apTooltipType = input<CustomTooltipType>(CustomTooltipType.DEFAULT);\n apTooltipPresentationContext = input<CustomTooltipPresentationItem>();\n apTooltipListItems = input<CustomTooltipAvatarItem[]>([]);\n apTooltipShowAvatarCaption = input(true);\n\n isDefaultTooltipType = computed(() => !this.apTooltipType() || this.apTooltipType() === CustomTooltipType.DEFAULT);\n isValidPredefinedTooltip = computed(\n () =>\n (this.apTooltipType() === CustomTooltipType.PRESENTATION &&\n this.apTooltipPresentationContext()?.title &&\n this.apTooltipPresentationContext()?.description) ||\n (this.apTooltipType() === CustomTooltipType.LIST && this.apTooltipListItems().length > 0)\n );\n triggeredByClick = computed(() => this.apTooltipTrigger() === 'click' || this.externallyTriggerred);\n\n clickListener: (() => void) | undefined = undefined;\n\n container: HTMLElement | undefined = undefined;\n\n hideTimeout: number | undefined;\n\n mouseEnterListener: (() => void) | undefined = undefined;\n\n mouseLeaveListener: (() => void) | undefined = undefined;\n\n nativeElement: HTMLElement = this.elementRef.nativeElement;\n\n showTimeout: number | undefined;\n\n tooltipText: HTMLElement | undefined;\n\n _externallyTriggerred: boolean = false;\n\n ngOnInit(): void {\n const apTooltipVirtualScrollElement = this.apTooltipVirtualScrollElement();\n if (apTooltipVirtualScrollElement) {\n apTooltipVirtualScrollElement.renderedRangeStream.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(range => {\n if (range.start === 0 && range.end === 0) {\n this.deactivate();\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.setupEventListeners(this.apTooltipTrigger());\n }\n\n private setupEventListeners(trigger: 'hover' | 'click'): void {\n // Close any open tooltip when switching modes\n if (this.container) {\n this.remove();\n }\n\n this.cleanupEventListeners();\n\n this.zone.runOutsideAngular(() => {\n this.clickListener = this.onInputClick.bind(this);\n this.nativeElement.addEventListener('click', this.clickListener, true);\n if (trigger === 'hover') {\n this.mouseEnterListener = this.onMouseEnter.bind(this);\n this.mouseLeaveListener = this.onMouseLeave.bind(this);\n this.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n this.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n }\n });\n }\n\n private cleanupEventListeners(): void {\n if (this.mouseEnterListener) {\n this.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n this.mouseEnterListener = undefined;\n }\n if (this.clickListener) {\n this.nativeElement.removeEventListener('click', this.clickListener, true);\n this.clickListener = undefined;\n }\n if (this.mouseLeaveListener) {\n this.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n this.mouseLeaveListener = undefined;\n }\n }\n\n ngOnDestroy(): void {\n if (this.container) {\n this.deactivate();\n }\n this.cleanupEventListeners();\n }\n\n onMouseEnter(): void {\n if (!this.container) {\n this.activate();\n }\n }\n\n onMouseLeave(): void {\n if (!this._externallyTriggerred) {\n this.deactivate();\n }\n }\n\n onInputClick(): void {\n this.zone.run(() => {\n const trigger = this.apTooltipTrigger();\n\n if (trigger === 'click') {\n if (this.container) {\n this.deactivate();\n } else {\n this.activate();\n }\n } else {\n this.deactivate();\n }\n });\n }\n\n activate(): void {\n this.clearHideTimeout();\n\n if (this.triggeredByClick()) {\n this.addDocumentClickListener();\n }\n\n if (this.apTooltipShowDelay()) {\n this.showTimeout = window.setTimeout(() => {\n this.show();\n }, this.apTooltipShowDelay());\n } else {\n this.show();\n }\n\n if (this.apTooltipDuration()) {\n const duration = this.apTooltipShowDelay() ? this.apTooltipDuration() + this.apTooltipShowDelay() : this.apTooltipDuration();\n this.hideTimeout = window.setTimeout(() => {\n this.remove();\n }, duration);\n }\n }\n\n deactivate(): void {\n this.clearShowTimeout();\n this.removeDocumentClickListener();\n if (this.apTooltipHideDelay()) {\n this.clearHideTimeout();\n this.hideTimeout = window.setTimeout(() => {\n this.remove();\n }, this.apTooltipHideDelay());\n } else {\n this.remove();\n }\n }\n\n show(): void {\n if (this.apTooltipTruncatedTextOnly() && this.elementRef.nativeElement.scrollWidth === this.elementRef.nativeElement.clientWidth) {\n return;\n }\n if (\n (this.isDefaultTooltipType() && !this.apTooltip()) ||\n (!this.isDefaultTooltipType() && !this.isValidPredefinedTooltip()) ||\n this.apTooltipDisabled()\n ) {\n return;\n }\n\n // Prevent tooltip from showing if the host element is not connected to the DOM\n const hostRect = this.nativeElement.getBoundingClientRect();\n if (!this.nativeElement.isConnected || (hostRect.width === 0 && hostRect.height === 0)) {\n return;\n }\n\n this.create();\n\n // For predefined tooltips, alignment is deferred after component rendering\n if (this.isDefaultTooltipType()) {\n this.align();\n }\n }\n\n create(): void {\n if (this.container) {\n this.clearHideTimeout();\n this.remove();\n }\n if (this.isDefaultTooltipType()) {\n this.createDefaultTooltip();\n } else {\n this.createPredefinedTooltip();\n }\n }\n\n createDefaultTooltip(): void {\n this.container = document.createElement('div');\n this.container.setAttribute('role', 'tooltip');\n\n this.tooltipText = document.createElement('div');\n this.tooltipText.className = 'ap-tooltip-text';\n this.updateText();\n\n const contentContainer = document.createElement('div');\n contentContainer.classList.add('ap-content-container');\n\n contentContainer.appendChild(this.tooltipText);\n contentContainer.appendChild(this.createSvgElement());\n this.container.appendChild(contentContainer);\n\n document.body.appendChild(this.container);\n this.container.classList.add('ap-tooltip');\n\n if (this.apTooltip() instanceof TemplateRef) {\n this.container.classList.add('ap-tooltip-custom-template');\n }\n this.setCssVariables();\n }\n\n createPredefinedTooltip(): void {\n const componentRef = this.viewContainerRef.createComponent(TooltipComponent);\n\n // Set inputs\n componentRef.setInput('type', this.apTooltipType());\n componentRef.setInput('presentationContext', this.apTooltipPresentationContext());\n componentRef.setInput('tooltipListItems', this.apTooltipListItems());\n componentRef.setInput('showCaption', this.apTooltipShowAvatarCaption());\n\n // Force change detection to render the component immediately\n componentRef.changeDetectorRef.detectChanges();\n\n this.container = document.createElement('div');\n this.container.setAttribute('role', 'tooltip');\n\n const contentContainer = document.createElement('div');\n contentContainer.classList.add('ap-content-container', 'ap-content-predefined-container');\n\n contentContainer.appendChild(componentRef.location.nativeElement);\n contentContainer.appendChild(this.createSvgElement());\n this.container.appendChild(contentContainer);\n\n document.body.appendChild(this.container);\n\n this.container.classList.add('ap-tooltip', 'ap-predefined-tooltip');\n if (this.triggeredByClick()) {\n this.container.classList.add('ap-tooltip-click-trigger');\n }\n\n // Has to wait for the TooltipComponent to be rendered in order to align and then set the CSS variable --ap-tooltip-height\n requestAnimationFrame(() => {\n this.align();\n this.setCssVariables();\n });\n }\n\n createSvgElement(): SVGElement {\n const svgNamespace = 'http://www.w3.org/2000/svg';\n const arrowSvg = document.createElementNS(svgNamespace, 'svg');\n arrowSvg.classList.add('ap-tooltip-arrow');\n arrowSvg.setAttribute('xmlns', svgNamespace);\n arrowSvg.setAttribute('viewBox', '0 0 16 8');\n arrowSvg.setAttribute('fill', 'none');\n const path = document.createElementNS(svgNamespace, 'path');\n path.setAttribute('d', 'M6.68299 1.15238C7.43705 0.492586 8.56296 0.492588 9.31701 1.15238L16 7L0 7L6.68299 1.15238Z');\n arrowSvg.appendChild(path);\n\n return arrowSvg;\n }\n\n align(): void {\n switch (this.apTooltipPosition()) {\n case 'top-left':\n this.alignTopLeft();\n if (this.isOutOfBounds()) {\n this.alignBottom();\n if (this.isOutOfBounds()) {\n this.alignRight();\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n case 'top-right':\n this.alignTopRight();\n if (this.isOutOfBounds()) {\n this.alignBottom();\n if (this.isOutOfBounds()) {\n this.alignRight();\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n case 'top':\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignBottom();\n if (this.isOutOfBounds()) {\n this.alignRight();\n\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n\n case 'bottom':\n this.alignBottom();\n if (this.isOutOfBounds()) {\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignRight();\n\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n\n case 'bottom-left':\n this.alignBottomLeft();\n if (this.isOutOfBounds()) {\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignRight();\n\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n\n case 'bottom-right':\n this.alignBottomRight();\n if (this.isOutOfBounds()) {\n this.alignTop();\n if (this.isOutOfBounds()) {\n this.alignRight();\n\n if (this.isOutOfBounds()) {\n this.alignLeft();\n }\n }\n }\n break;\n\n case 'left':\n this.alignLeft();\n if (this.isOutOfBounds()) {\n this.alignRight();\n\n if (this.isOutOfBounds()) {\n this.alignTop();\n\n if (this.isOutOfBounds()) {\n this.alignBottom();\n }\n }\n }\n break;\n\n case 'right':\n this.alignRight();\n if (this.isOutOfBounds()) {\n this.alignLeft();\n\n if (this.isOutOfBounds()) {\n this.alignTop();\n\n if (this.isOutOfBounds()) {\n this.alignBottom();\n }\n }\n }\n break;\n }\n }\n\n alignRight(): void {\n this.preAlign('right');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left = hostOffset.left + TooltipService.getOuterWidth(this.nativeElement) + TooltipService.defaultOffset;\n const top =\n hostOffset.top + (TooltipService.getOuterHeight(this.nativeElement) - TooltipService.getOuterHeight(this.container)) / 2;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n alignLeft(): void {\n this.preAlign('left');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left = hostOffset.left - TooltipService.getOuterWidth(this.container) - TooltipService.defaultOffset;\n const top =\n hostOffset.top + (TooltipService.getOuterHeight(this.nativeElement) - TooltipService.getOuterHeight(this.container)) / 2;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n alignTop(): void {\n this.preAlign('top');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left =\n hostOffset.left + (TooltipService.getOuterWidth(this.nativeElement) - TooltipService.getOuterWidth(this.container)) / 2;\n const top = hostOffset.top - TooltipService.getOuterHeight(this.container) - TooltipService.defaultOffset;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n alignTopLeft(): void {\n this.preAlign('top-left');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left = hostOffset.left;\n const top = hostOffset.top - TooltipService.getOuterHeight(this.container) - TooltipService.defaultOffset;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n alignTopRight(): void {\n this.preAlign('top-right');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left = hostOffset.left + TooltipService.getOuterWidth(this.nativeElement) - TooltipService.getOuterWidth(this.container);\n const top = hostOffset.top - TooltipService.getOuterHeight(this.container) - TooltipService.defaultOffset;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n alignBottom(): void {\n this.preAlign('bottom');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left =\n hostOffset.left + (TooltipService.getOuterWidth(this.nativeElement) - TooltipService.getOuterWidth(this.container)) / 2;\n const top = hostOffset.top + TooltipService.getOuterHeight(this.nativeElement) + TooltipService.defaultOffset;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n alignBottomLeft(): void {\n this.preAlign('bottom-left');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left = hostOffset.left;\n const top = hostOffset.top + TooltipService.getOuterHeight(this.nativeElement) + TooltipService.defaultOffset;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n alignBottomRight(): void {\n this.preAlign('bottom-right');\n if (this.container) {\n const hostOffset = this.getHostOffset();\n const left =\n hostOffset.left + (TooltipService.getOuterWidth(this.nativeElement) - TooltipService.getOuterWidth(this.container));\n const top = hostOffset.top + TooltipService.getOuterHeight(this.nativeElement) + TooltipService.defaultOffset;\n this.container.style.left = left + 'px';\n this.container.style.top = top + 'px';\n }\n }\n\n preAlign(position: string) {\n this.removePreviousAlignHtmlClasses();\n if (this.container) {\n this.container.style.left = -999 + 'px';\n this.container.style.top = -999 + 'px';\n\n const defaultClassName = 'ap-tooltip-' + position;\n this.container.classList.add(defaultClassName);\n }\n }\n\n getHostOffset() {\n const offset = this.nativeElement.getBoundingClientRect();\n\n return { left: offset.left, top: offset.top };\n }\n\n isOutOfBounds(): boolean {\n if (this.container) {\n const offset = this.container.getBoundingClientRect();\n const targetTop = offset.top;\n const targetLeft = offset.left;\n const width = TooltipService.getOuterWidth(this.container);\n const height = TooltipService.getOuterHeight(this.container);\n const viewport = TooltipService.getViewport();\n\n return targetLeft + width > viewport.width || targetLeft < 0 || targetTop < 0 || targetTop + height > viewport.height;\n } else {\n return false;\n }\n }\n\n remove(): void {\n if (this.container && this.container.parentElement) {\n document.body.removeChild(this.container);\n }\n\n this.clearTimeouts();\n this._externallyTriggerred = false;\n this.container = undefined;\n }\n\n clearShowTimeout() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n }\n\n clearHideTimeout() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n clearTimeouts() {\n this.clearShowTimeout();\n this.clearHideTimeout();\n }\n\n updateText() {\n const apTooltip = this.apTooltip();\n if (apTooltip instanceof TemplateRef) {\n const embeddedViewRef = this.viewContainerRef.createEmbeddedView(apTooltip);\n embeddedViewRef.context = this.apTooltipTemplateContext();\n embeddedViewRef.detectChanges();\n embeddedViewRef.rootNodes.forEach(node => this.tooltipText?.appendChild(node));\n } else if (this.tooltipText) {\n this.tooltipText.innerHTML = apTooltip ? DOMPurify.sanitize(apTooltip) : '';\n }\n }\n\n setCssVariables(): void {\n if (this.container) {\n this.container.style.setProperty('--ap-tooltip-height', this.container.offsetHeight + 'px');\n }\n }\n\n private removePreviousAlignHtmlClasses() {\n if (this.container) {\n this.container.classList.remove(\n 'ap-tooltip-top',\n 'ap-tooltip-top-left',\n 'ap-tooltip-top-right',\n 'ap-tooltip-bottom',\n 'ap-tooltip-bottom-left',\n 'ap-tooltip-bottom-right',\n 'ap-tooltip-left',\n 'ap-tooltip-right'\n );\n }\n }\n\n private addDocumentClickListener() {\n if (this.documentClickListener) return;\n this.zone.runOutsideAngular(() => {\n this.documentClickListener = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (this.container && !this.container.contains(target) && !this.nativeElement.contains(target)) {\n this.deactivate();\n }\n };\n\n this.documentScrollListener = (event: Event) => {\n const target = event.target;\n if (this.container && !(target instanceof Node && this.container.contains(target))) {\n this.deactivate();\n }\n };\n\n document.addEventListener('click', this.documentClickListener);\n document.addEventListener('scroll', this.documentScrollListener, { capture: true, passive: true });\n });\n }\n\n private removeDocumentClickListener() {\n if (!this.documentClickListener) return;\n\n document.removeEventListener('click', this.documentClickListener);\n this.documentClickListener = undefined;\n if (this.documentScrollListener) {\n document.removeEventListener('scroll', this.documentScrollListener, { capture: true });\n this.documentScrollListener = undefined;\n }\n }\n\n get externallyTriggerred(): boolean {\n return this._externallyTriggerred;\n }\n\n set externallyTriggerred(value: boolean) {\n this._externallyTriggerred = value;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agorapulse-ui-components-tooltip.mjs","sources":["../../../libs/ui-components/tooltip/src/tooltip-external-trigger.directive.ts","../../../libs/ui-components/tooltip/src/tooltip.component.ts","../../../libs/ui-components/tooltip/src/tooltip.component.html","../../../libs/ui-components/tooltip/src/tooltip-panel/tooltip-panel.component.ts","../../../libs/ui-components/tooltip/src/tooltip-panel/tooltip-panel.component.html","../../../libs/ui-components/tooltip/src/tooltip.directive.ts","../../../libs/ui-components/tooltip/src/agorapulse-ui-components-tooltip.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, inject, input, NgZone, OnDestroy } from '@angular/core';\nimport { TooltipDirective } from './tooltip.directive';\n\n/**\n * Directive that triggers a tooltip to show/hide\n *\n * ```html\n * <div #myTooltip=\"apTooltip\" apTooltip>Content</div>\n * <div [apTooltipExternalTrigger]=\"myTooltip\">Click me</div>\n * ```\n */\n@Directive({\n selector: '[apTooltipExternalTrigger]',\n standalone: true,\n exportAs: 'apTooltipExternalTrigger',\n})\nexport class TooltipExternalTriggerDirective implements AfterViewInit, OnDestroy {\n private readonly elementRef: ElementRef = inject(ElementRef);\n private readonly zone: NgZone = inject(NgZone);\n\n // Accept a TooltipDirective reference for sibling usage\n apTooltipExternalTrigger = input<TooltipDirective>();\n\n private clickListener: (() => void) | undefined = undefined;\n\n private get targetTooltip(): TooltipDirective | null {\n // Prefer explicit reference, fall back to parent\n return this.apTooltipExternalTrigger() ?? null;\n }\n\n ngAfterViewInit(): void {\n const tooltip = this.targetTooltip;\n if (!tooltip) {\n return;\n }\n\n // Otherwise the CDK's outside-click dispatcher, which runs first in capture, closes and this toggle reopens.\n tooltip.registerExternalTrigger(this.elementRef.nativeElement);\n\n this.setupEventListeners();\n }\n\n private setupEventListeners(): void {\n this.cleanupEventListeners();\n\n this.zone.runOutsideAngular(() => {\n const nativeElement = this.elementRef.nativeElement;\n\n this.clickListener = this.onClick.bind(this);\n nativeElement.addEventListener('click', this.clickListener, true);\n });\n }\n\n private cleanupEventListeners(): void {\n const nativeElement = this.elementRef.nativeElement;\n\n if (this.clickListener) {\n nativeElement.removeEventListener('click', this.clickListener, true);\n this.clickListener = undefined;\n }\n }\n\n ngOnDestroy(): void {\n this.targetTooltip?.unregisterExternalTrigger(this.elementRef.nativeElement);\n this.cleanupEventListeners();\n }\n\n private onClick(): void {\n this.zone.run(() => {\n const tooltip = this.targetTooltip;\n if (!tooltip) return;\n\n if (tooltip.container) {\n tooltip.deactivate();\n } else {\n tooltip.externallyTriggerred = true;\n tooltip.activate();\n }\n });\n }\n}\n","import { AvatarComponent, AvatarItem } from '@agorapulse/ui-components/avatar';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nexport const CustomTooltipType = {\n DEFAULT: 'DEFAULT', // default type\n PRESENTATION: 'PRESENTATION',\n LIST: 'LIST',\n};\nexport type CustomTooltipType = (typeof CustomTooltipType)[keyof typeof CustomTooltipType];\n\nexport type CustomTooltipPresentationItem = {\n title: string;\n description: string;\n};\n\nexport type CustomTooltipAvatarItem = AvatarItem & {\n caption?: string;\n};\n\n/**\n * A tooltip component that is used for predefined templates: Presentation and List.\n * Not to be used directly, use TooltipDirective instead.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [AvatarComponent],\n providers: [],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TooltipComponent {\n protected readonly CUSTOM_TOOLTIP_TYPE = CustomTooltipType;\n\n type = input<CustomTooltipType>(CustomTooltipType.DEFAULT);\n presentationContext = input<CustomTooltipPresentationItem>();\n\n tooltipListItems = input<CustomTooltipAvatarItem[]>([]);\n showCaption = input(true);\n}\n","<div class=\"custom-tooltip-container\">\n @switch (type()) {\n @case (CUSTOM_TOOLTIP_TYPE.PRESENTATION) {\n @let presentation = presentationContext();\n @if (presentation) {\n <div class=\"tooltip-presentation-title\">{{ presentation.title }}</div>\n <div class=\"tooltip-presentation-caption\">{{ presentation.description }}</div>\n }\n }\n @case (CUSTOM_TOOLTIP_TYPE.LIST) {\n <div class=\"tooltip-list-container\">\n @for (avatar of tooltipListItems(); track avatar) {\n <div class=\"tooltip-item\">\n <ap-avatar\n [profilePicture]=\"avatar.profilePicture\"\n [alt]=\"avatar.alt ?? ''\"\n [network]=\"avatar.network\"\n [size]=\"showCaption() && avatar.caption ? 32 : 24\"\n [username]=\"avatar.username\"\n [showInitials]=\"avatar.showInitials\"\n [bigNetwork]=\"avatar.bigNetwork ?? false\"\n [anonymous]=\"avatar.anonymous ?? false\"\n [online]=\"avatar.online ?? false\"\n [rounded]=\"avatar.rounded ?? true\" />\n\n <div class=\"tooltip-item-info\">\n <div class=\"tooltip-item-title\">\n {{ avatar.username }}\n </div>\n @if (showCaption() && avatar.caption) {\n <div class=\"tooltip-item-caption\">\n {{ avatar.caption }}\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n @default {\n\n }\n }\n\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport DOMPurify from 'dompurify';\nimport { CustomTooltipAvatarItem, CustomTooltipPresentationItem, CustomTooltipType, TooltipComponent } from '../tooltip.component';\n\n/**\n * A tooltip's floating surface, internal to the directive: `role=\"tooltip\"`, no focus handling — taking focus is `ap-popover`'s job.\n * `ViewEncapsulation.None` and the `ap-tooltip*` class names stay: the styles are global, and the product overrides them by name.\n * The host carries `ap-tooltip` because the engine reads the arrow's colour from the pane's first element child.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-tooltip-panel',\n imports: [NgTemplateOutlet, TooltipComponent],\n templateUrl: 'tooltip-panel.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n role: 'tooltip',\n class: 'ap-tooltip',\n '[class.ap-predefined-tooltip]': '!isDefaultType()',\n '[class.ap-tooltip-custom-template]': 'hasTemplate()',\n '[class.ap-tooltip-click-trigger]': '!isDefaultType() && clickTriggered()',\n },\n})\nexport class TooltipPanelComponent {\n /** Plain-string content. Sanitised before it reaches the template. */\n readonly text = input<string>();\n\n /** Consumer template, which takes precedence over `text`. */\n readonly template = input<TemplateRef<HTMLElement>>();\n\n /** The consumer template's `ngTemplateOutletContext`, read through its `let-` bindings. */\n readonly templateContext = input<object>();\n\n readonly type = input<CustomTooltipType>(CustomTooltipType.DEFAULT);\n readonly presentationContext = input<CustomTooltipPresentationItem>();\n readonly listItems = input<CustomTooltipAvatarItem[]>([]);\n readonly showCaption = input(true);\n\n /** Only mirrored onto the host, for the class the product may hook onto. */\n readonly clickTriggered = input(false);\n\n protected readonly isDefaultType = computed(() => !this.type() || this.type() === CustomTooltipType.DEFAULT);\n\n protected readonly hasTemplate = computed(() => this.template() !== undefined);\n\n /** DOMPurify strips more than the `[innerHTML]` sanitiser that runs after it; neither pass adds anything. */\n protected readonly sanitizedText = computed(() => {\n const text = this.text();\n return text ? DOMPurify.sanitize(text) : '';\n });\n}\n","<div\n class=\"ap-content-container\"\n [class.ap-content-predefined-container]=\"!isDefaultType()\">\n <!-- No arrow here: the engine draws it as the pane's `::before`, out of the accessibility tree. -->\n @if (isDefaultType()) {\n @if (template(); as content) {\n <div class=\"ap-tooltip-text\">\n <ng-container\n [ngTemplateOutlet]=\"content\"\n [ngTemplateOutletContext]=\"templateContext() ?? null\" />\n </div>\n } @else {\n <div\n class=\"ap-tooltip-text\"\n [innerHTML]=\"sanitizedText()\"></div>\n }\n } @else {\n <ap-tooltip\n [type]=\"type()\"\n [presentationContext]=\"presentationContext()\"\n [tooltipListItems]=\"listItems()\"\n [showCaption]=\"showCaption()\" />\n }\n</div>\n","import { createFloatingOverlay, FloatingPlacement } from '@agorapulse/ui-components/floating';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n AfterViewInit,\n ComponentRef,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TooltipPanelComponent } from './tooltip-panel/tooltip-panel.component';\nimport { CustomTooltipAvatarItem, CustomTooltipPresentationItem, CustomTooltipType } from './tooltip.component';\n\n@Directive({ selector: '[apTooltip]', standalone: true, exportAs: 'apTooltip' })\nexport class TooltipDirective implements AfterViewInit, OnDestroy, OnInit {\n private readonly elementRef: ElementRef = inject(ElementRef);\n private readonly zone: NgZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Decides where the tooltip goes — flip, shift, scroll following, arrow; this directive only decides when. */\n private readonly overlay = createFloatingOverlay();\n\n apTooltip = input.required<string | TemplateRef<HTMLElement> | undefined | null>();\n\n /** Where the panel opens, in the engine's vocabulary. */\n apTooltipPosition = input<FloatingPlacement>('top');\n apTooltipShowDelay = input<number>(80);\n apTooltipHideDelay = input<number>(0);\n apTooltipDuration = input<number>(0);\n apTooltipDisabled = input<boolean>(false);\n apTooltipTruncatedTextOnly = input<boolean>(false);\n apTooltipTemplateContext = input<object>();\n apTooltipVirtualScrollElement = input<CdkVirtualScrollViewport>();\n apTooltipTrigger = input<'hover' | 'click'>('hover');\n\n /** Shows the arrow aimed at the trigger. */\n apTooltipArrow = input<boolean>(true);\n\n // Predefined template variables\n apTooltipType = input<CustomTooltipType>(CustomTooltipType.DEFAULT);\n apTooltipPresentationContext = input<CustomTooltipPresentationItem>();\n apTooltipListItems = input<CustomTooltipAvatarItem[]>([]);\n apTooltipShowAvatarCaption = input(true);\n\n isDefaultTooltipType = computed(() => !this.apTooltipType() || this.apTooltipType() === CustomTooltipType.DEFAULT);\n isValidPredefinedTooltip = computed(\n () =>\n (this.apTooltipType() === CustomTooltipType.PRESENTATION &&\n this.apTooltipPresentationContext()?.title &&\n this.apTooltipPresentationContext()?.description) ||\n (this.apTooltipType() === CustomTooltipType.LIST && this.apTooltipListItems().length > 0)\n );\n triggeredByClick = computed(() => this.apTooltipTrigger() === 'click' || this.externallyTriggerred);\n\n /** True while the panel is attached — not yet during the show delay. */\n readonly isOpen = this.overlay.isOpen;\n\n clickListener: (() => void) | undefined = undefined;\n\n hideTimeout: number | undefined;\n\n mouseEnterListener: (() => void) | undefined = undefined;\n\n mouseLeaveListener: (() => void) | undefined = undefined;\n\n nativeElement: HTMLElement = this.elementRef.nativeElement;\n\n showTimeout: number | undefined;\n\n _externallyTriggerred: boolean = false;\n\n private panelRef: ComponentRef<unknown> | null = null;\n\n /** Where the opening click landed, in viewport coordinates; `null` after a keyboard click. */\n private clickPoint: { x: number; y: number } | null = null;\n\n /** The pointer while a click-opened tooltip is shown; `null` while unknown. */\n private pointer: { x: number; y: number } | null = null;\n\n private stopScrollDismissal: (() => void) | null = null;\n\n /** `apTooltipExternalTrigger` elements: they carry their own toggle, so the engine must not count them as the outside. */\n private readonly externalTriggers = new Set<HTMLElement>();\n\n /** @internal Called by `apTooltipExternalTrigger`. */\n registerExternalTrigger(element: HTMLElement): void {\n this.externalTriggers.add(element);\n }\n\n /** @internal Called by `apTooltipExternalTrigger`. */\n unregisterExternalTrigger(element: HTMLElement): void {\n this.externalTriggers.delete(element);\n }\n\n /**\n * The `.ap-tooltip` surface while one is shown.\n * @deprecated Use {@link isOpen} to know whether a tooltip is shown.\n */\n get container(): HTMLElement | undefined {\n return this.panelRef?.location.nativeElement;\n }\n\n ngOnInit(): void {\n const apTooltipVirtualScrollElement = this.apTooltipVirtualScrollElement();\n if (apTooltipVirtualScrollElement) {\n apTooltipVirtualScrollElement.renderedRangeStream.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(range => {\n if (range.start === 0 && range.end === 0) {\n this.deactivate();\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.setupEventListeners(this.apTooltipTrigger());\n }\n\n private setupEventListeners(trigger: 'hover' | 'click'): void {\n // Close any open tooltip when switching modes\n if (this.isOpen()) {\n this.remove();\n }\n\n this.cleanupEventListeners();\n\n this.zone.runOutsideAngular(() => {\n this.clickListener = this.onInputClick.bind(this);\n this.nativeElement.addEventListener('click', this.clickListener, true);\n if (trigger === 'hover') {\n this.mouseEnterListener = this.onMouseEnter.bind(this);\n this.mouseLeaveListener = this.onMouseLeave.bind(this);\n this.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n this.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n }\n });\n }\n\n private cleanupEventListeners(): void {\n if (this.mouseEnterListener) {\n this.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n this.mouseEnterListener = undefined;\n }\n if (this.clickListener) {\n this.nativeElement.removeEventListener('click', this.clickListener, true);\n this.clickListener = undefined;\n }\n if (this.mouseLeaveListener) {\n this.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n this.mouseLeaveListener = undefined;\n }\n }\n\n ngOnDestroy(): void {\n if (this.isOpen()) {\n this.deactivate();\n }\n this.cleanupEventListeners();\n }\n\n onMouseEnter(): void {\n if (!this.isOpen()) {\n this.activate();\n }\n }\n\n onMouseLeave(): void {\n if (!this._externallyTriggerred) {\n this.deactivate();\n }\n }\n\n onInputClick(event?: MouseEvent): void {\n this.zone.run(() => {\n const trigger = this.apTooltipTrigger();\n\n if (trigger === 'click') {\n if (this.isOpen()) {\n this.deactivate();\n } else {\n // A click synthesised from the keyboard has `detail: 0` and sits at `(0, 0)`.\n this.clickPoint = event && event.detail > 0 ? { x: event.clientX, y: event.clientY } : null;\n this.activate();\n }\n } else {\n this.deactivate();\n }\n });\n }\n\n activate(): void {\n this.clearHideTimeout();\n\n if (this.apTooltipShowDelay()) {\n this.showTimeout = window.setTimeout(() => {\n this.show();\n }, this.apTooltipShowDelay());\n } else {\n this.show();\n }\n\n if (this.apTooltipDuration()) {\n const duration = this.apTooltipShowDelay() ? this.apTooltipDuration() + this.apTooltipShowDelay() : this.apTooltipDuration();\n this.hideTimeout = window.setTimeout(() => {\n this.remove();\n }, duration);\n }\n }\n\n deactivate(): void {\n this.clearShowTimeout();\n if (this.apTooltipHideDelay()) {\n this.clearHideTimeout();\n this.hideTimeout = window.setTimeout(() => {\n this.remove();\n }, this.apTooltipHideDelay());\n } else {\n this.remove();\n }\n }\n\n show(): void {\n if (this.apTooltipTruncatedTextOnly() && this.elementRef.nativeElement.scrollWidth === this.elementRef.nativeElement.clientWidth) {\n return;\n }\n if (\n (this.isDefaultTooltipType() && !this.apTooltip()) ||\n (!this.isDefaultTooltipType() && !this.isValidPredefinedTooltip()) ||\n this.apTooltipDisabled()\n ) {\n return;\n }\n\n // Prevent tooltip from showing if the host element is not connected to the DOM\n const hostRect = this.nativeElement.getBoundingClientRect();\n if (!this.nativeElement.isConnected || (hostRect.width === 0 && hostRect.height === 0)) {\n return;\n }\n\n this.create();\n }\n\n remove(): void {\n this.stopScrollDismissal?.();\n this.overlay.close();\n this.panelRef = null;\n\n this.clearTimeouts();\n this._externallyTriggerred = false;\n }\n\n private create(): void {\n if (this.isOpen()) {\n this.clearHideTimeout();\n this.remove();\n }\n\n // Entered on purpose: hover is listened for outside the zone, where the panel's inputs would never render.\n this.zone.run(() => {\n const content = this.apTooltip();\n const isTemplate = this.isDefaultTooltipType() && content instanceof TemplateRef;\n\n this.panelRef = this.overlay.open(TooltipPanelComponent, this.nativeElement, {\n placement: this.apTooltipPosition(),\n arrow: this.apTooltipArrow(),\n panelClass: this.paneClasses(isTemplate),\n // Explicit dismissals skip the hide delay, which only exists to cross the gap to the panel.\n onClose: () => this.zone.run(() => this.remove()),\n additionalTriggers: () => [...this.externalTriggers],\n });\n if (!this.panelRef) {\n return;\n }\n\n this.panelRef.setInput('text', content instanceof TemplateRef ? undefined : (content ?? undefined));\n this.panelRef.setInput('template', isTemplate ? content : undefined);\n this.panelRef.setInput('templateContext', this.apTooltipTemplateContext());\n this.panelRef.setInput('type', this.apTooltipType());\n this.panelRef.setInput('presentationContext', this.apTooltipPresentationContext());\n this.panelRef.setInput('listItems', this.apTooltipListItems());\n this.panelRef.setInput('showCaption', this.apTooltipShowAvatarCaption());\n this.panelRef.setInput('clickTriggered', this.triggeredByClick());\n\n // Render synchronously, then re-place: `attach()` measured an empty box, and background tabs stall timers and rAF.\n this.panelRef.changeDetectorRef.detectChanges();\n this.overlay.updatePosition();\n\n this.listenForScrollDismissal();\n });\n }\n\n /**\n * A click-opened tooltip closes on scroll once the pointer is off its trigger; an unknown pointer counts as off.\n * A scroll inside the panel never closes it. The trigger's box is measured, since browsers freeze `:hover` while scrolling.\n */\n private listenForScrollDismissal(): void {\n // Not `triggeredByClick()`: that `computed` reads the non-signal `externallyTriggerred` and can go stale.\n if (this.apTooltipTrigger() !== 'click' && !this._externallyTriggerred) {\n return;\n }\n const pane = this.overlay.overlayRef?.overlayElement;\n this.pointer = this.clickPoint;\n this.clickPoint = null;\n\n const onPointer = (event: MouseEvent): void => {\n this.pointer = { x: event.clientX, y: event.clientY };\n };\n const onScroll = (event: Event): void => {\n const target = event.target;\n if (pane && target instanceof Node && pane.contains(target)) {\n return;\n }\n if (!this.isPointerOnTrigger()) {\n this.zone.run(() => this.remove());\n }\n };\n\n this.zone.runOutsideAngular(() => {\n document.addEventListener('pointermove', onPointer, { capture: true, passive: true });\n document.addEventListener('pointerdown', onPointer, { capture: true, passive: true });\n document.addEventListener('scroll', onScroll, { capture: true, passive: true });\n });\n this.stopScrollDismissal = () => {\n document.removeEventListener('pointermove', onPointer, { capture: true });\n document.removeEventListener('pointerdown', onPointer, { capture: true });\n document.removeEventListener('scroll', onScroll, { capture: true });\n this.stopScrollDismissal = null;\n this.pointer = null;\n };\n }\n\n private isPointerOnTrigger(): boolean {\n const pointer = this.pointer;\n if (!pointer) {\n return false;\n }\n return [this.nativeElement, ...this.externalTriggers].some(element => {\n const box = element.getBoundingClientRect();\n return pointer.x >= box.left && pointer.x <= box.right && pointer.y >= box.top && pointer.y <= box.bottom;\n });\n }\n\n /** Pane classes: each of the three surfaces gives panel and tip a different shadow. */\n private paneClasses(isTemplate: boolean): string[] {\n if (!this.isDefaultTooltipType()) {\n return ['ap-tooltip-pane', 'predefined'];\n }\n return isTemplate ? ['ap-tooltip-pane', 'custom-template'] : ['ap-tooltip-pane'];\n }\n\n clearShowTimeout() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n }\n\n clearHideTimeout() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n clearTimeouts() {\n this.clearShowTimeout();\n this.clearHideTimeout();\n }\n\n get externallyTriggerred(): boolean {\n return this._externallyTriggerred;\n }\n\n set externallyTriggerred(value: boolean) {\n this._externallyTriggerred = value;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agorapulse/ui-components",
3
3
  "description": "Agorapulse UI Components Library",
4
- "version": "22.2.7",
4
+ "version": "22.2.9",
5
5
  "author": "Benoit Hediard",
6
6
  "repository": {
7
7
  "type": "git",
@@ -13,7 +13,7 @@
13
13
  "homepage": "https://github.com/agorapulse/design",
14
14
  "peerDependencies": {
15
15
  "@agorapulse/ui-symbol": "^22.0.0",
16
- "@agorapulse/ui-theme": "^22.0.0",
16
+ "@agorapulse/ui-theme": "^22.0.16",
17
17
  "@agorapulse/ui-animations": "^22.0.0",
18
18
  "@angular/cdk": "^22.0.0",
19
19
  "@angular/common": "^22.0.0",
@@ -1,5 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { AfterViewInit, OnDestroy, OnInit, TemplateRef } from '@angular/core';
3
+ import * as _floating_ui_utils from '@floating-ui/utils';
3
4
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
4
5
  import { AvatarItem } from '@agorapulse/ui-components/avatar';
5
6
 
@@ -20,20 +21,22 @@ type CustomTooltipAvatarItem = AvatarItem & {
20
21
  declare class TooltipDirective implements AfterViewInit, OnDestroy, OnInit {
21
22
  private readonly elementRef;
22
23
  private readonly zone;
23
- private readonly viewContainerRef;
24
24
  private readonly destroyRef;
25
- private documentClickListener?;
26
- private documentScrollListener?;
25
+ /** Decides where the tooltip goes — flip, shift, scroll following, arrow; this directive only decides when. */
26
+ private readonly overlay;
27
27
  apTooltip: _angular_core.InputSignal<string | TemplateRef<HTMLElement> | null | undefined>;
28
- apTooltipPosition: _angular_core.InputSignal<"left" | "right" | "top" | "bottom" | "bottom-left" | "bottom-right" | "top-left" | "top-right">;
28
+ /** Where the panel opens, in the engine's vocabulary. */
29
+ apTooltipPosition: _angular_core.InputSignal<_floating_ui_utils.Placement>;
29
30
  apTooltipShowDelay: _angular_core.InputSignal<number>;
30
31
  apTooltipHideDelay: _angular_core.InputSignal<number>;
31
32
  apTooltipDuration: _angular_core.InputSignal<number>;
32
33
  apTooltipDisabled: _angular_core.InputSignal<boolean>;
33
34
  apTooltipTruncatedTextOnly: _angular_core.InputSignal<boolean>;
34
- apTooltipTemplateContext: _angular_core.InputSignal<any>;
35
+ apTooltipTemplateContext: _angular_core.InputSignal<object | undefined>;
35
36
  apTooltipVirtualScrollElement: _angular_core.InputSignal<CdkVirtualScrollViewport | undefined>;
36
37
  apTooltipTrigger: _angular_core.InputSignal<"click" | "hover">;
38
+ /** Shows the arrow aimed at the trigger. */
39
+ apTooltipArrow: _angular_core.InputSignal<boolean>;
37
40
  apTooltipType: _angular_core.InputSignal<string>;
38
41
  apTooltipPresentationContext: _angular_core.InputSignal<CustomTooltipPresentationItem | undefined>;
39
42
  apTooltipListItems: _angular_core.InputSignal<CustomTooltipAvatarItem[]>;
@@ -41,15 +44,32 @@ declare class TooltipDirective implements AfterViewInit, OnDestroy, OnInit {
41
44
  isDefaultTooltipType: _angular_core.Signal<boolean>;
42
45
  isValidPredefinedTooltip: _angular_core.Signal<string | boolean>;
43
46
  triggeredByClick: _angular_core.Signal<boolean>;
47
+ /** True while the panel is attached — not yet during the show delay. */
48
+ readonly isOpen: _angular_core.Signal<boolean>;
44
49
  clickListener: (() => void) | undefined;
45
- container: HTMLElement | undefined;
46
50
  hideTimeout: number | undefined;
47
51
  mouseEnterListener: (() => void) | undefined;
48
52
  mouseLeaveListener: (() => void) | undefined;
49
53
  nativeElement: HTMLElement;
50
54
  showTimeout: number | undefined;
51
- tooltipText: HTMLElement | undefined;
52
55
  _externallyTriggerred: boolean;
56
+ private panelRef;
57
+ /** Where the opening click landed, in viewport coordinates; `null` after a keyboard click. */
58
+ private clickPoint;
59
+ /** The pointer while a click-opened tooltip is shown; `null` while unknown. */
60
+ private pointer;
61
+ private stopScrollDismissal;
62
+ /** `apTooltipExternalTrigger` elements: they carry their own toggle, so the engine must not count them as the outside. */
63
+ private readonly externalTriggers;
64
+ /** @internal Called by `apTooltipExternalTrigger`. */
65
+ registerExternalTrigger(element: HTMLElement): void;
66
+ /** @internal Called by `apTooltipExternalTrigger`. */
67
+ unregisterExternalTrigger(element: HTMLElement): void;
68
+ /**
69
+ * The `.ap-tooltip` surface while one is shown.
70
+ * @deprecated Use {@link isOpen} to know whether a tooltip is shown.
71
+ */
72
+ get container(): HTMLElement | undefined;
53
73
  ngOnInit(): void;
54
74
  ngAfterViewInit(): void;
55
75
  private setupEventListeners;
@@ -57,42 +77,27 @@ declare class TooltipDirective implements AfterViewInit, OnDestroy, OnInit {
57
77
  ngOnDestroy(): void;
58
78
  onMouseEnter(): void;
59
79
  onMouseLeave(): void;
60
- onInputClick(): void;
80
+ onInputClick(event?: MouseEvent): void;
61
81
  activate(): void;
62
82
  deactivate(): void;
63
83
  show(): void;
64
- create(): void;
65
- createDefaultTooltip(): void;
66
- createPredefinedTooltip(): void;
67
- createSvgElement(): SVGElement;
68
- align(): void;
69
- alignRight(): void;
70
- alignLeft(): void;
71
- alignTop(): void;
72
- alignTopLeft(): void;
73
- alignTopRight(): void;
74
- alignBottom(): void;
75
- alignBottomLeft(): void;
76
- alignBottomRight(): void;
77
- preAlign(position: string): void;
78
- getHostOffset(): {
79
- left: number;
80
- top: number;
81
- };
82
- isOutOfBounds(): boolean;
83
84
  remove(): void;
85
+ private create;
86
+ /**
87
+ * A click-opened tooltip closes on scroll once the pointer is off its trigger; an unknown pointer counts as off.
88
+ * A scroll inside the panel never closes it. The trigger's box is measured, since browsers freeze `:hover` while scrolling.
89
+ */
90
+ private listenForScrollDismissal;
91
+ private isPointerOnTrigger;
92
+ /** Pane classes: each of the three surfaces gives panel and tip a different shadow. */
93
+ private paneClasses;
84
94
  clearShowTimeout(): void;
85
95
  clearHideTimeout(): void;
86
96
  clearTimeouts(): void;
87
- updateText(): void;
88
- setCssVariables(): void;
89
- private removePreviousAlignHtmlClasses;
90
- private addDocumentClickListener;
91
- private removeDocumentClickListener;
92
97
  get externallyTriggerred(): boolean;
93
98
  set externallyTriggerred(value: boolean);
94
99
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
95
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[apTooltip]", ["apTooltip"], { "apTooltip": { "alias": "apTooltip"; "required": true; "isSignal": true; }; "apTooltipPosition": { "alias": "apTooltipPosition"; "required": false; "isSignal": true; }; "apTooltipShowDelay": { "alias": "apTooltipShowDelay"; "required": false; "isSignal": true; }; "apTooltipHideDelay": { "alias": "apTooltipHideDelay"; "required": false; "isSignal": true; }; "apTooltipDuration": { "alias": "apTooltipDuration"; "required": false; "isSignal": true; }; "apTooltipDisabled": { "alias": "apTooltipDisabled"; "required": false; "isSignal": true; }; "apTooltipTruncatedTextOnly": { "alias": "apTooltipTruncatedTextOnly"; "required": false; "isSignal": true; }; "apTooltipTemplateContext": { "alias": "apTooltipTemplateContext"; "required": false; "isSignal": true; }; "apTooltipVirtualScrollElement": { "alias": "apTooltipVirtualScrollElement"; "required": false; "isSignal": true; }; "apTooltipTrigger": { "alias": "apTooltipTrigger"; "required": false; "isSignal": true; }; "apTooltipType": { "alias": "apTooltipType"; "required": false; "isSignal": true; }; "apTooltipPresentationContext": { "alias": "apTooltipPresentationContext"; "required": false; "isSignal": true; }; "apTooltipListItems": { "alias": "apTooltipListItems"; "required": false; "isSignal": true; }; "apTooltipShowAvatarCaption": { "alias": "apTooltipShowAvatarCaption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
100
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[apTooltip]", ["apTooltip"], { "apTooltip": { "alias": "apTooltip"; "required": true; "isSignal": true; }; "apTooltipPosition": { "alias": "apTooltipPosition"; "required": false; "isSignal": true; }; "apTooltipShowDelay": { "alias": "apTooltipShowDelay"; "required": false; "isSignal": true; }; "apTooltipHideDelay": { "alias": "apTooltipHideDelay"; "required": false; "isSignal": true; }; "apTooltipDuration": { "alias": "apTooltipDuration"; "required": false; "isSignal": true; }; "apTooltipDisabled": { "alias": "apTooltipDisabled"; "required": false; "isSignal": true; }; "apTooltipTruncatedTextOnly": { "alias": "apTooltipTruncatedTextOnly"; "required": false; "isSignal": true; }; "apTooltipTemplateContext": { "alias": "apTooltipTemplateContext"; "required": false; "isSignal": true; }; "apTooltipVirtualScrollElement": { "alias": "apTooltipVirtualScrollElement"; "required": false; "isSignal": true; }; "apTooltipTrigger": { "alias": "apTooltipTrigger"; "required": false; "isSignal": true; }; "apTooltipArrow": { "alias": "apTooltipArrow"; "required": false; "isSignal": true; }; "apTooltipType": { "alias": "apTooltipType"; "required": false; "isSignal": true; }; "apTooltipPresentationContext": { "alias": "apTooltipPresentationContext"; "required": false; "isSignal": true; }; "apTooltipListItems": { "alias": "apTooltipListItems"; "required": false; "isSignal": true; }; "apTooltipShowAvatarCaption": { "alias": "apTooltipShowAvatarCaption"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
96
101
  }
97
102
 
98
103
  /**
Binary file