@agorapulse/ui-components 22.0.32 → 22.1.0
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.
- package/agorapulse-ui-components-22.1.0.tgz +0 -0
- package/fesm2022/agorapulse-ui-components-autocomplete.mjs +5 -3
- package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-datepicker.mjs +3 -2
- package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-directives.mjs +140 -2
- package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs +7 -2
- package/fesm2022/agorapulse-ui-components-filter-dropdown.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-input-search.mjs +4 -3
- package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +3 -3
- package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-popmenu.mjs +3 -2
- package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-popover.mjs +200 -0
- package/fesm2022/agorapulse-ui-components-popover.mjs.map +1 -0
- package/fesm2022/agorapulse-ui-components-radio-button-card.mjs +3 -2
- package/fesm2022/agorapulse-ui-components-radio-button-card.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components-select.mjs +5 -4
- package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
- package/fesm2022/agorapulse-ui-components.mjs +1 -0
- package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
- package/package.json +5 -1
- package/types/agorapulse-ui-components-directives.d.ts +63 -1
- package/types/agorapulse-ui-components-popover.d.ts +92 -0
- package/types/agorapulse-ui-components.d.ts +2 -0
- package/agorapulse-ui-components-22.0.32.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agorapulse-ui-components-popmenu.mjs","sources":["../../../libs/ui-components/popmenu/src/popmenu.component.ts","../../../libs/ui-components/popmenu/src/popmenu.component.html","../../../libs/ui-components/popmenu/src/options.ts","../../../libs/ui-components/popmenu/src/popmenu-options.service.ts","../../../libs/ui-components/popmenu/src/popmenu.directive.ts","../../../libs/ui-components/popmenu/src/popmenu.module.ts","../../../libs/ui-components/popmenu/src/agorapulse-ui-components-popmenu.ts"],"sourcesContent":["import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { merge } from 'rxjs';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-popmenu',\n templateUrl: './popmenu.component.html',\n styleUrls: ['./popmenu.component.scss'],\n imports: [ButtonComponent, MatMenuModule, NgStyle, NgTemplateOutlet],\n})\nexport class PopmenuComponent implements AfterViewInit {\n @Input() data: any;\n events = new EventEmitter();\n arrowTopPosition: string | undefined = '50%';\n arrowBottomPosition: string | undefined = '50%';\n arrowLeftPosition: string | undefined = undefined;\n arrowRightPosition: string | undefined = undefined;\n arrowClass: string | undefined = undefined;\n below = false;\n before = false;\n @Output() menuClosed: EventEmitter<any> = new EventEmitter<any>();\n @Output() menuOpened: EventEmitter<any> = new EventEmitter<any>();\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n @HostBinding('style.top') hostStyleTop = '';\n @HostBinding('style.border-radius') hostStyleBorderRadius = '';\n @HostBinding('style.left') hostStyleLeft = '';\n @HostBinding('style.z-index') hostStyleZIndex = 0;\n @HostBinding('style.transition') hostStyleTransition = '';\n @HostBinding('style.width') hostStyleWidth = '';\n @HostBinding('style.max-width') hostStyleMaxWidth = '';\n @HostBinding('style.pointer-events') hostStylePointerEvents = '';\n @HostBinding('class.tooltip-show') hostClassShow = false;\n @HostBinding('class.tooltip-shadow') hostClassShadow = false;\n @HostBinding('class.tooltip-light') hostClassLight = false;\n viewInit = false;\n\n _show = false;\n\n get show(): boolean {\n return this._show;\n }\n\n @Input() set show(value: boolean) {\n if (value) {\n this.setPosition();\n }\n this._show = value;\n }\n\n @Input() set close(value: boolean) {\n if (value) {\n setTimeout(() => {\n this.trigger.closeMenu();\n }, 100);\n }\n }\n\n menuOpen = false;\n\n get arrow() {\n return this.data.options.arrow && this.border;\n }\n\n get arrowOffset() {\n return this.data.options.arrowOffset;\n }\n\n get arrowPosition() {\n return this.data.options.arrowPosition;\n }\n\n get autoPlacement() {\n return this.data.options.autoPlacement;\n }\n\n get background() {\n return this.data.options.apPopmenuBackground;\n }\n\n get border() {\n return this.data.options.apPopmenuBorder;\n }\n\n get element() {\n return this.data.element;\n }\n\n get elementPosition() {\n return this.data.elementPosition;\n }\n\n get hasBackdrop() {\n return this.data.options.hasBackdrop;\n }\n\n get backdropClass() {\n return this.data.options.backdropClass;\n }\n\n get isThemeLight() {\n return this.options['theme'] === 'light';\n }\n\n get options() {\n return this.data.options;\n }\n\n get panelClass() {\n return this.data.options.panelClass;\n }\n\n get placement() {\n return this.data.options.placement;\n }\n\n get rounded() {\n return this.data.options.rounded;\n }\n\n get shadow() {\n return this.data.options.shadow;\n }\n\n get tooltipOffset(): number {\n return Number(this.data.options.offset);\n }\n\n get offsetSkidding(): number {\n return Number(this.data.options.offsets.skidding) || 0;\n }\n\n get offsetDistance(): number {\n return Number(this.data.options.offsets.distance || 0);\n }\n\n get value() {\n return this.data.value;\n }\n\n constructor(\n public renderer: Renderer2,\n public elementRef: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit() {\n this.viewInit = true;\n merge(this.trigger.menuOpened, this.trigger.menuClosed).subscribe(() => {\n this.menuOpen = this.trigger.menuOpen;\n });\n }\n\n onMenuClosed() {\n // we set a timeout to wait for the menu to be really closed\n setTimeout(() => this.menuClosed.emit(), 200);\n }\n\n onMenuOpened() {\n // we set a timeout to wait for the menu to be really opened\n setTimeout(() => this.menuOpened.emit(), 100);\n }\n\n setHostStyle(placement: string): boolean {\n const tooltip = this.elementRef.nativeElement;\n const isCustomPosition = !this.elementPosition.x;\n\n let elementHeight = !this.element.offsetHeight ? this.element.getBoundingClientRect().height : this.element.offsetHeight;\n let elementWidth = !this.element.offsetWidth ? this.element.getBoundingClientRect().width : this.element.offsetWidth;\n const tooltipHeight = tooltip.clientHeight;\n const tooltipWidth = tooltip.clientWidth;\n const scrollY = window.pageYOffset;\n\n let topStyle;\n let leftStyle;\n\n if (isCustomPosition) {\n if (placement && placement.split(' ')[0] === 'top') {\n this.below = false;\n }\n if (placement && placement.split(' ')[0] === 'bottom') {\n this.below = true;\n }\n elementHeight = 0;\n elementWidth = 0;\n topStyle = this.elementPosition.top;\n leftStyle = this.elementPosition.left;\n if (this.arrow && this.arrowPosition) {\n this.arrowClass = 'arrow-' + this.arrowPosition;\n switch (this.arrowPosition) {\n case 'left':\n case 'right':\n this.arrowLeftPosition = undefined;\n this.arrowRightPosition = undefined;\n this.arrowBottomPosition = 'auto';\n this.arrowTopPosition = this.arrowOffset + '%';\n break;\n case 'top':\n case 'bottom':\n this.arrowLeftPosition = this.arrowOffset + '%';\n this.arrowRightPosition = 'auto';\n this.arrowBottomPosition = undefined;\n this.arrowTopPosition = undefined;\n break;\n }\n }\n } else {\n if (placement.split(' ')[0] === 'top') {\n this.below = false;\n topStyle = this.elementPosition.top - this.tooltipOffset - this.offsetDistance;\n topStyle += 8;\n }\n\n if (placement.split(' ')[0] === 'bottom') {\n this.below = true;\n topStyle = this.elementPosition.bottom + this.tooltipOffset + this.offsetDistance;\n // We remove 8px due to the margin-top we put to display the arrow.\n topStyle -= 8;\n }\n\n if (placement.split(' ')[0] === 'left') {\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset - this.offsetDistance;\n }\n\n if (placement.split(' ')[0] === 'right') {\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset + this.offsetDistance;\n }\n\n if (placement.split(' ')[0] === 'left' || placement.split(' ')[0] === 'right') {\n topStyle = this.elementPosition.top + scrollY + elementHeight / 2 - tooltip.clientHeight / 2;\n }\n\n if (placement === 'right bottom') {\n this.below = true;\n this.before = false;\n this.arrowClass = 'arrow-left';\n topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;\n this.arrowRightPosition = undefined;\n this.arrowLeftPosition = undefined;\n this.arrowBottomPosition = 'auto';\n this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';\n }\n\n if (placement === 'left bottom') {\n this.below = true;\n this.before = true;\n this.arrowClass = 'arrow-right';\n topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;\n this.arrowLeftPosition = undefined;\n this.arrowRightPosition = undefined;\n this.arrowBottomPosition = 'auto';\n this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';\n }\n\n if (placement === 'right top') {\n this.below = false;\n this.before = false;\n this.arrowClass = 'arrow-left';\n topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;\n this.arrowLeftPosition = undefined;\n this.arrowRightPosition = undefined;\n this.arrowTopPosition = 'auto';\n this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';\n }\n\n if (placement === 'left top') {\n this.below = false;\n this.before = true;\n this.arrowClass = 'arrow-right';\n topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;\n this.arrowRightPosition = undefined;\n this.arrowLeftPosition = undefined;\n this.arrowTopPosition = 'auto';\n this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';\n }\n\n if (placement === 'bottom right') {\n this.before = false;\n this.below = true;\n this.arrowClass = 'arrow-top';\n leftStyle = this.elementPosition.left + this.offsetSkidding;\n this.arrowTopPosition = undefined;\n this.arrowRightPosition = 'auto';\n this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';\n }\n\n if (placement === 'bottom left') {\n this.before = true;\n this.below = true;\n this.arrowClass = 'arrow-top';\n leftStyle = this.elementPosition.right + this.offsetSkidding;\n this.arrowTopPosition = undefined;\n this.arrowLeftPosition = 'auto';\n this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';\n }\n\n if (placement === 'top right') {\n this.before = false;\n this.below = false;\n this.arrowClass = 'arrow-bottom';\n leftStyle = this.elementPosition.left + this.offsetSkidding;\n this.arrowBottomPosition = undefined;\n this.arrowTopPosition = undefined;\n this.arrowRightPosition = 'auto';\n this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';\n }\n\n if (placement === 'top left') {\n this.before = true;\n this.below = false;\n this.arrowClass = 'arrow-bottom';\n leftStyle = this.elementPosition.right + this.offsetSkidding;\n this.arrowBottomPosition = undefined;\n this.arrowTopPosition = undefined;\n this.arrowLeftPosition = 'auto';\n this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';\n }\n }\n\n // This line is PURE MAGIC and super important. It allows to force mat-menu\n // to reposition the menu with the new xPosition / yPosition.\n this.changeDetectorRef.detectChanges();\n\n const topEdge = topStyle;\n const bottomEdge = topStyle + tooltipHeight;\n const leftEdge = leftStyle;\n const rightEdge = leftStyle + tooltipWidth;\n\n if (\n (topEdge < 0 || bottomEdge > document.body.clientHeight || leftEdge < 0 || rightEdge > document.body.clientWidth) &&\n this.autoPlacement\n ) {\n return false;\n }\n\n this.hostStyleTop = topStyle + 'px';\n this.hostStyleLeft = leftStyle + 'px';\n return true;\n }\n\n setPlacementClass(placement?: string): void {\n this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + (placement ? placement.split(' ')[0] : placement));\n this.renderer.addClass(\n this.elementRef.nativeElement,\n 'yPosition-' + (placement && placement.split(' ').length === 2 ? placement.split(' ')[1] : 'center')\n );\n\n if (this.elementRef.nativeElement.children && this.elementRef.nativeElement.children.length > 1) {\n const tooltipArrow = Array.from(this.elementRef.nativeElement.children).filter(\n (child: Element) => child.getAttribute('id') === 'tooltipArrow'\n );\n if (tooltipArrow && tooltipArrow.length === 1) {\n if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'bottom') {\n this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowTopPosition);\n } else if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'top') {\n this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowBottomPosition);\n }\n }\n }\n }\n\n setPosition(): void {\n if (this.setHostStyle(this.placement)) {\n this.setPlacementClass(this.placement);\n if (this.viewInit) {\n // We did this in order to reset overlayRef (multi web component needed with matmenu and cdk overlay)\n if (this.trigger['_overlayRef']) {\n this.trigger['_overlayRef'].dispose();\n this.trigger['_overlayRef'] = null;\n }\n this.trigger.openMenu();\n }\n return;\n } else {\n const placements = ['top', 'right', 'bottom', 'left'];\n\n for (const placement of placements) {\n if (this.setHostStyle(placement)) {\n this.setPlacementClass(placement);\n if (this.viewInit) {\n this.trigger.openMenu();\n }\n return;\n }\n }\n }\n }\n}\n","<button\n id=\"menuTrigger\"\n class=\"button-trigger\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (menuClosed)=\"onMenuClosed()\"\n (menuOpened)=\"onMenuOpened()\"></button>\n<mat-menu\n #menu=\"matMenu\"\n [yPosition]=\"!below ? 'above' : 'below'\"\n [xPosition]=\"!before ? 'after' : 'before'\"\n [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{ arrow ? 'arrow-before ' + arrowClass : '' }} {{ shadow ? 'shadow' : '' }} {{\n border ? '' : shadow ? 'shadow-no-border' : ''\n }} {{ rounded ? 'rounded-component' : '' }} {{ background ? '' : 'no-background' }} {{ panelClass }}\">\n @if (arrow) {\n <div\n class=\"{{ arrow ? 'arrow-before ' + arrowClass : '' }}\"\n [ngStyle]=\"{ left: arrowLeftPosition, right: arrowRightPosition, top: arrowTopPosition, bottom: arrowBottomPosition }\"></div>\n }\n <div\n class=\"{{ rounded ? 'rounded-component' : '' }} outline-none\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"{{ border ? 'popover-content ' : '' }} {{ rounded ? 'rounded-component' : '' }}\">\n <ng-container *ngTemplateOutlet=\"value; context: { menu: this }\" />\n </div>\n </div>\n</mat-menu>\n","export const defaultOptions = {\n apPopmenuBorder: true,\n apPopmenuDisabled: false,\n apPopmenuBackground: true,\n hasBackdrop: true,\n placement: 'top',\n rounded: true,\n showDelay: 0,\n hideDelay: 10,\n hideDelayMobile: 0,\n shadow: true,\n theme: 'dark',\n offset: 8,\n offsets: {},\n maxWidth: '600',\n};\n","import { InjectionToken } from '@angular/core';\nimport { PopmenuOptions } from './popmenu-options.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionToken used to import the config (initOptions) object, provided from the outside\n */\nexport const PopmenuOptionsService = new InjectionToken<PopmenuOptions>('PopmenuOptions');\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n createComponent,\n} from '@angular/core';\nimport { defaultOptions } from './options';\nimport { PopmenuOptions } from './popmenu-options.interface';\nimport { PopmenuOptionsService } from './popmenu-options.service';\nimport { PopmenuComponent } from './popmenu.component';\n\nexport interface AdComponent {\n data: any;\n show: boolean;\n close: boolean;\n menuClosed: any;\n menuOpened: any;\n menuOpen: boolean;\n}\n\nexport type PopmenuPlacement =\n | 'bottom'\n | 'top'\n | 'left'\n | 'right'\n | 'bottom right'\n | 'bottom left'\n | 'right bottom'\n | 'left bottom'\n | 'top right'\n | 'top left'\n | 'right top'\n | 'left top';\n\nexport type PopmenuArrowPosition = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * @deprecated This directive is deprecated and will be removed in future versions.\n * Use `ActionDropdownComponent` instead.\n */\n@Directive({\n selector: '[apPopmenu]',\n standalone: true,\n})\nexport class PopmenuDirective implements OnChanges, OnInit {\n @Input() apPopmenuBorder = false;\n @Input() apPopmenuDisabled = false;\n @Input() apPopmenuBackground = true;\n @Input() arrow = false;\n @Input() arrowOffset: number | undefined;\n @Input() arrowPosition: PopmenuArrowPosition | string | undefined;\n @Input() close = false;\n @Input() hasBackdrop: boolean = true;\n @Input() backdropClass = '';\n @Input() panelClass: string | undefined;\n @Input() offset: number | undefined;\n @Input() offsets: { distance?: number; skidding?: number } | undefined;\n @Input() placement: PopmenuPlacement | string = 'bottom';\n\n @Input() pointer = true;\n @Input('apPopmenu') popMenuValue!: TemplateRef<any>;\n @Input() position: { top: number; left: number } | undefined;\n @Input() rounded = false;\n @Input() shadow = false;\n @Output() menuClosed: EventEmitter<void> = new EventEmitter<void>();\n @Output() menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n componentElement!: HTMLElement;\n hideTimeoutId: number | undefined;\n destroyTimeoutId: number | undefined;\n createTimeoutId: number | undefined;\n showTimeoutId: number | undefined;\n componentRef!: ComponentRef<any>;\n elementPosition: any;\n componentSubscribe: any;\n _defaultOptions: any;\n\n _options: PopmenuOptions = {};\n\n get options() {\n return this._options;\n }\n\n @Input() set options(value: PopmenuOptions) {\n if (value && defaultOptions) {\n this._options = value;\n }\n }\n\n get destroyDelay() {\n return Number(this.getHideDelay()) + Number(this.options['animationDuration']);\n }\n\n get isDisplayOnHover(): boolean {\n if (this.options['display'] === false) {\n return false;\n }\n\n if (this.options['displayTouchscreen'] === false) {\n return false;\n }\n\n if (this.options['trigger'] !== 'hover') {\n return false;\n }\n\n return true;\n }\n\n get isTooltipDestroyed() {\n return this.componentRef && this.componentRef.hostView.destroyed;\n }\n\n get tooltipPosition() {\n if (this.options['position']) {\n return this.options['position'];\n } else {\n return this.elementPosition;\n }\n }\n\n constructor(\n @Optional() @Inject(PopmenuOptionsService) private initOptions: PopmenuOptions,\n public renderer: Renderer2,\n private elementRef: ElementRef,\n private appRef: ApplicationRef,\n private injector: Injector,\n private environmentInjector: EnvironmentInjector\n ) {}\n\n appendComponentToBody(component: any): void {\n this.componentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: this.injector,\n });\n\n (<AdComponent>this.componentRef.instance).data = {\n value: this.popMenuValue,\n element: this.elementRef.nativeElement,\n elementPosition: this.tooltipPosition,\n options: this.options,\n };\n this.appRef.attachView(this.componentRef.hostView);\n this.componentElement = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(this.componentElement);\n this.componentSubscribe = (<AdComponent>this.componentRef.instance).menuClosed.subscribe(() => {\n this.handleClose();\n this.menuOpen = (<AdComponent>this.componentRef.instance).menuOpen;\n });\n this.componentSubscribe = (<AdComponent>this.componentRef.instance).menuOpened.subscribe(() => {\n this.handleOpen();\n this.menuOpen = (<AdComponent>this.componentRef.instance).menuOpen;\n });\n }\n\n @Output()\n menuOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n #menuOpen = false;\n\n @Input()\n get menuOpen() {\n return this.#menuOpen;\n }\n\n set menuOpen(menuOpen: boolean) {\n this.menuOpenChange.emit(menuOpen);\n this.#menuOpen = menuOpen;\n if (this.#menuOpen) {\n this.elementRef.nativeElement.classList.add('popmenu-open');\n this.elementRef.nativeElement.classList.remove('popmenu-close');\n } else {\n this.elementRef.nativeElement.classList.remove('popmenu-open');\n this.elementRef.nativeElement.classList.add('popmenu-close');\n }\n }\n\n handleClose() {\n this.menuClosed.emit();\n }\n\n handleOpen() {\n this.menuOpened.emit();\n }\n\n applyOptionsDefault(defaultOptions: PopmenuOptions, options: PopmenuOptions): void {\n this.options = Object.assign({}, defaultOptions, this.initOptions || {}, options);\n }\n\n clearTimeouts(): void {\n if (this.createTimeoutId) {\n clearTimeout(this.createTimeoutId);\n }\n\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n }\n\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n }\n\n if (this.destroyTimeoutId) {\n clearTimeout(this.destroyTimeoutId);\n }\n }\n\n createPopMenu(): void {\n this.clearTimeouts();\n\n this.createTimeoutId = window.setTimeout(() => {\n this.appendComponentToBody(PopmenuComponent);\n }, this.getShowDelay());\n\n this.showTimeoutId = window.setTimeout(() => {\n this.showTooltipElem();\n }, this.getShowDelay());\n }\n\n getElementPosition(): void {\n this.elementPosition = this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n getHideDelay() {\n return this.options['hideDelay'];\n }\n\n getProperties(changes: SimpleChanges) {\n let properties: any = {};\n\n for (const prop in changes) {\n if (prop !== 'options' && prop !== 'tooltipValue') {\n properties[prop] = changes[prop].currentValue;\n }\n if (prop === 'options') {\n properties = changes[prop].currentValue;\n }\n }\n return properties;\n }\n\n getShowDelay() {\n return this.options['showDelay'];\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.pointer) {\n if (!this.pointer) {\n this.renderer.removeStyle(this.elementRef.nativeElement, 'cursor');\n } else {\n this.renderer.setStyle(this.elementRef.nativeElement, 'cursor', 'pointer');\n }\n }\n if (changes.close && changes.close.currentValue) {\n this.hideTooltipElem();\n }\n const changedOptions = this.getProperties(changes);\n this.applyOptionsDefault(this.options && Object.keys(this.options).length > 0 ? this.options : defaultOptions, changedOptions);\n }\n\n ngOnInit(): void {\n if (this.pointer) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'cursor', 'pointer');\n }\n this.menuOpen = false;\n }\n\n @HostListener('click')\n onClick() {\n if (this.apPopmenuDisabled) {\n return;\n }\n this.show();\n this.close = false;\n }\n\n public show() {\n this.getElementPosition();\n if (!this.componentRef || this.isTooltipDestroyed) {\n this.createPopMenu();\n } else if (!this.isTooltipDestroyed) {\n this.showTooltipElem();\n }\n }\n\n showTooltipElem(): void {\n (<AdComponent>this.componentRef.instance).data = {\n value: this.popMenuValue,\n element: this.elementRef.nativeElement,\n elementPosition: this.tooltipPosition,\n options: this.options,\n };\n this.clearTimeouts();\n (<AdComponent>this.componentRef.instance).show = true;\n }\n\n hideTooltipElem(): void {\n if (this.componentRef) {\n (<AdComponent>this.componentRef.instance).close = true;\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { PopmenuOptions } from './popmenu-options.interface';\nimport { PopmenuOptionsService } from './popmenu-options.service';\nimport { PopmenuComponent } from './popmenu.component';\nimport { PopmenuDirective } from './popmenu.directive';\n\n@NgModule({\n imports: [PopmenuDirective, PopmenuComponent],\n exports: [PopmenuDirective],\n})\nexport class PopmenuModule {\n static forRoot(initOptions: PopmenuOptions): ModuleWithProviders<PopmenuModule> {\n return {\n ngModule: PopmenuModule,\n providers: [\n {\n provide: PopmenuOptionsService,\n useValue: initOptions,\n },\n ],\n };\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-popmenu.mjs","sources":["../../../libs/ui-components/popmenu/src/popmenu.component.ts","../../../libs/ui-components/popmenu/src/popmenu.component.html","../../../libs/ui-components/popmenu/src/options.ts","../../../libs/ui-components/popmenu/src/popmenu-options.service.ts","../../../libs/ui-components/popmenu/src/popmenu.directive.ts","../../../libs/ui-components/popmenu/src/popmenu.module.ts","../../../libs/ui-components/popmenu/src/agorapulse-ui-components-popmenu.ts"],"sourcesContent":["import { ButtonComponent } from '@agorapulse/ui-components/button';\nimport { StopPropagationDirective } from '@agorapulse/ui-components/directives';\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { merge } from 'rxjs';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-popmenu',\n templateUrl: './popmenu.component.html',\n styleUrls: ['./popmenu.component.scss'],\n imports: [ButtonComponent, MatMenuModule, NgStyle, NgTemplateOutlet, StopPropagationDirective],\n})\nexport class PopmenuComponent implements AfterViewInit {\n @Input() data: any;\n events = new EventEmitter();\n arrowTopPosition: string | undefined = '50%';\n arrowBottomPosition: string | undefined = '50%';\n arrowLeftPosition: string | undefined = undefined;\n arrowRightPosition: string | undefined = undefined;\n arrowClass: string | undefined = undefined;\n below = false;\n before = false;\n @Output() menuClosed: EventEmitter<any> = new EventEmitter<any>();\n @Output() menuOpened: EventEmitter<any> = new EventEmitter<any>();\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n @HostBinding('style.top') hostStyleTop = '';\n @HostBinding('style.border-radius') hostStyleBorderRadius = '';\n @HostBinding('style.left') hostStyleLeft = '';\n @HostBinding('style.z-index') hostStyleZIndex = 0;\n @HostBinding('style.transition') hostStyleTransition = '';\n @HostBinding('style.width') hostStyleWidth = '';\n @HostBinding('style.max-width') hostStyleMaxWidth = '';\n @HostBinding('style.pointer-events') hostStylePointerEvents = '';\n @HostBinding('class.tooltip-show') hostClassShow = false;\n @HostBinding('class.tooltip-shadow') hostClassShadow = false;\n @HostBinding('class.tooltip-light') hostClassLight = false;\n viewInit = false;\n\n _show = false;\n\n get show(): boolean {\n return this._show;\n }\n\n @Input() set show(value: boolean) {\n if (value) {\n this.setPosition();\n }\n this._show = value;\n }\n\n @Input() set close(value: boolean) {\n if (value) {\n setTimeout(() => {\n this.trigger.closeMenu();\n }, 100);\n }\n }\n\n menuOpen = false;\n\n get arrow() {\n return this.data.options.arrow && this.border;\n }\n\n get arrowOffset() {\n return this.data.options.arrowOffset;\n }\n\n get arrowPosition() {\n return this.data.options.arrowPosition;\n }\n\n get autoPlacement() {\n return this.data.options.autoPlacement;\n }\n\n get background() {\n return this.data.options.apPopmenuBackground;\n }\n\n get border() {\n return this.data.options.apPopmenuBorder;\n }\n\n get element() {\n return this.data.element;\n }\n\n get elementPosition() {\n return this.data.elementPosition;\n }\n\n get hasBackdrop() {\n return this.data.options.hasBackdrop;\n }\n\n get backdropClass() {\n return this.data.options.backdropClass;\n }\n\n get isThemeLight() {\n return this.options['theme'] === 'light';\n }\n\n get options() {\n return this.data.options;\n }\n\n get panelClass() {\n return this.data.options.panelClass;\n }\n\n get placement() {\n return this.data.options.placement;\n }\n\n get rounded() {\n return this.data.options.rounded;\n }\n\n get shadow() {\n return this.data.options.shadow;\n }\n\n get tooltipOffset(): number {\n return Number(this.data.options.offset);\n }\n\n get offsetSkidding(): number {\n return Number(this.data.options.offsets.skidding) || 0;\n }\n\n get offsetDistance(): number {\n return Number(this.data.options.offsets.distance || 0);\n }\n\n get value() {\n return this.data.value;\n }\n\n constructor(\n public renderer: Renderer2,\n public elementRef: ElementRef<HTMLElement>,\n private changeDetectorRef: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit() {\n this.viewInit = true;\n merge(this.trigger.menuOpened, this.trigger.menuClosed).subscribe(() => {\n this.menuOpen = this.trigger.menuOpen;\n });\n }\n\n onMenuClosed() {\n // we set a timeout to wait for the menu to be really closed\n setTimeout(() => this.menuClosed.emit(), 200);\n }\n\n onMenuOpened() {\n // we set a timeout to wait for the menu to be really opened\n setTimeout(() => this.menuOpened.emit(), 100);\n }\n\n setHostStyle(placement: string): boolean {\n const tooltip = this.elementRef.nativeElement;\n const isCustomPosition = !this.elementPosition.x;\n\n let elementHeight = !this.element.offsetHeight ? this.element.getBoundingClientRect().height : this.element.offsetHeight;\n let elementWidth = !this.element.offsetWidth ? this.element.getBoundingClientRect().width : this.element.offsetWidth;\n const tooltipHeight = tooltip.clientHeight;\n const tooltipWidth = tooltip.clientWidth;\n const scrollY = window.pageYOffset;\n\n let topStyle;\n let leftStyle;\n\n if (isCustomPosition) {\n if (placement && placement.split(' ')[0] === 'top') {\n this.below = false;\n }\n if (placement && placement.split(' ')[0] === 'bottom') {\n this.below = true;\n }\n elementHeight = 0;\n elementWidth = 0;\n topStyle = this.elementPosition.top;\n leftStyle = this.elementPosition.left;\n if (this.arrow && this.arrowPosition) {\n this.arrowClass = 'arrow-' + this.arrowPosition;\n switch (this.arrowPosition) {\n case 'left':\n case 'right':\n this.arrowLeftPosition = undefined;\n this.arrowRightPosition = undefined;\n this.arrowBottomPosition = 'auto';\n this.arrowTopPosition = this.arrowOffset + '%';\n break;\n case 'top':\n case 'bottom':\n this.arrowLeftPosition = this.arrowOffset + '%';\n this.arrowRightPosition = 'auto';\n this.arrowBottomPosition = undefined;\n this.arrowTopPosition = undefined;\n break;\n }\n }\n } else {\n if (placement.split(' ')[0] === 'top') {\n this.below = false;\n topStyle = this.elementPosition.top - this.tooltipOffset - this.offsetDistance;\n topStyle += 8;\n }\n\n if (placement.split(' ')[0] === 'bottom') {\n this.below = true;\n topStyle = this.elementPosition.bottom + this.tooltipOffset + this.offsetDistance;\n // We remove 8px due to the margin-top we put to display the arrow.\n topStyle -= 8;\n }\n\n if (placement.split(' ')[0] === 'left') {\n leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset - this.offsetDistance;\n }\n\n if (placement.split(' ')[0] === 'right') {\n leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset + this.offsetDistance;\n }\n\n if (placement.split(' ')[0] === 'left' || placement.split(' ')[0] === 'right') {\n topStyle = this.elementPosition.top + scrollY + elementHeight / 2 - tooltip.clientHeight / 2;\n }\n\n if (placement === 'right bottom') {\n this.below = true;\n this.before = false;\n this.arrowClass = 'arrow-left';\n topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;\n this.arrowRightPosition = undefined;\n this.arrowLeftPosition = undefined;\n this.arrowBottomPosition = 'auto';\n this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';\n }\n\n if (placement === 'left bottom') {\n this.below = true;\n this.before = true;\n this.arrowClass = 'arrow-right';\n topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;\n this.arrowLeftPosition = undefined;\n this.arrowRightPosition = undefined;\n this.arrowBottomPosition = 'auto';\n this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';\n }\n\n if (placement === 'right top') {\n this.below = false;\n this.before = false;\n this.arrowClass = 'arrow-left';\n topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;\n this.arrowLeftPosition = undefined;\n this.arrowRightPosition = undefined;\n this.arrowTopPosition = 'auto';\n this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';\n }\n\n if (placement === 'left top') {\n this.below = false;\n this.before = true;\n this.arrowClass = 'arrow-right';\n topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;\n this.arrowRightPosition = undefined;\n this.arrowLeftPosition = undefined;\n this.arrowTopPosition = 'auto';\n this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';\n }\n\n if (placement === 'bottom right') {\n this.before = false;\n this.below = true;\n this.arrowClass = 'arrow-top';\n leftStyle = this.elementPosition.left + this.offsetSkidding;\n this.arrowTopPosition = undefined;\n this.arrowRightPosition = 'auto';\n this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';\n }\n\n if (placement === 'bottom left') {\n this.before = true;\n this.below = true;\n this.arrowClass = 'arrow-top';\n leftStyle = this.elementPosition.right + this.offsetSkidding;\n this.arrowTopPosition = undefined;\n this.arrowLeftPosition = 'auto';\n this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';\n }\n\n if (placement === 'top right') {\n this.before = false;\n this.below = false;\n this.arrowClass = 'arrow-bottom';\n leftStyle = this.elementPosition.left + this.offsetSkidding;\n this.arrowBottomPosition = undefined;\n this.arrowTopPosition = undefined;\n this.arrowRightPosition = 'auto';\n this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';\n }\n\n if (placement === 'top left') {\n this.before = true;\n this.below = false;\n this.arrowClass = 'arrow-bottom';\n leftStyle = this.elementPosition.right + this.offsetSkidding;\n this.arrowBottomPosition = undefined;\n this.arrowTopPosition = undefined;\n this.arrowLeftPosition = 'auto';\n this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';\n }\n }\n\n // This line is PURE MAGIC and super important. It allows to force mat-menu\n // to reposition the menu with the new xPosition / yPosition.\n this.changeDetectorRef.detectChanges();\n\n const topEdge = topStyle;\n const bottomEdge = topStyle + tooltipHeight;\n const leftEdge = leftStyle;\n const rightEdge = leftStyle + tooltipWidth;\n\n if (\n (topEdge < 0 || bottomEdge > document.body.clientHeight || leftEdge < 0 || rightEdge > document.body.clientWidth) &&\n this.autoPlacement\n ) {\n return false;\n }\n\n this.hostStyleTop = topStyle + 'px';\n this.hostStyleLeft = leftStyle + 'px';\n return true;\n }\n\n setPlacementClass(placement?: string): void {\n this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + (placement ? placement.split(' ')[0] : placement));\n this.renderer.addClass(\n this.elementRef.nativeElement,\n 'yPosition-' + (placement && placement.split(' ').length === 2 ? placement.split(' ')[1] : 'center')\n );\n\n if (this.elementRef.nativeElement.children && this.elementRef.nativeElement.children.length > 1) {\n const tooltipArrow = Array.from(this.elementRef.nativeElement.children).filter(\n (child: Element) => child.getAttribute('id') === 'tooltipArrow'\n );\n if (tooltipArrow && tooltipArrow.length === 1) {\n if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'bottom') {\n this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowTopPosition);\n } else if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'top') {\n this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowBottomPosition);\n }\n }\n }\n }\n\n setPosition(): void {\n if (this.setHostStyle(this.placement)) {\n this.setPlacementClass(this.placement);\n if (this.viewInit) {\n // We did this in order to reset overlayRef (multi web component needed with matmenu and cdk overlay)\n if (this.trigger['_overlayRef']) {\n this.trigger['_overlayRef'].dispose();\n this.trigger['_overlayRef'] = null;\n }\n this.trigger.openMenu();\n }\n return;\n } else {\n const placements = ['top', 'right', 'bottom', 'left'];\n\n for (const placement of placements) {\n if (this.setHostStyle(placement)) {\n this.setPlacementClass(placement);\n if (this.viewInit) {\n this.trigger.openMenu();\n }\n return;\n }\n }\n }\n }\n}\n","<button\n id=\"menuTrigger\"\n class=\"button-trigger\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (menuClosed)=\"onMenuClosed()\"\n (menuOpened)=\"onMenuOpened()\"></button>\n<mat-menu\n #menu=\"matMenu\"\n [yPosition]=\"!below ? 'above' : 'below'\"\n [xPosition]=\"!before ? 'after' : 'before'\"\n [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{ arrow ? 'arrow-before ' + arrowClass : '' }} {{ shadow ? 'shadow' : '' }} {{\n border ? '' : shadow ? 'shadow-no-border' : ''\n }} {{ rounded ? 'rounded-component' : '' }} {{ background ? '' : 'no-background' }} {{ panelClass }}\">\n @if (arrow) {\n <div\n class=\"{{ arrow ? 'arrow-before ' + arrowClass : '' }}\"\n [ngStyle]=\"{ left: arrowLeftPosition, right: arrowRightPosition, top: arrowTopPosition, bottom: arrowBottomPosition }\"></div>\n }\n <div\n class=\"{{ rounded ? 'rounded-component' : '' }} outline-none\"\n apStopPropagation>\n <div class=\"{{ border ? 'popover-content ' : '' }} {{ rounded ? 'rounded-component' : '' }}\">\n <ng-container *ngTemplateOutlet=\"value; context: { menu: this }\" />\n </div>\n </div>\n</mat-menu>\n","export const defaultOptions = {\n apPopmenuBorder: true,\n apPopmenuDisabled: false,\n apPopmenuBackground: true,\n hasBackdrop: true,\n placement: 'top',\n rounded: true,\n showDelay: 0,\n hideDelay: 10,\n hideDelayMobile: 0,\n shadow: true,\n theme: 'dark',\n offset: 8,\n offsets: {},\n maxWidth: '600',\n};\n","import { InjectionToken } from '@angular/core';\nimport { PopmenuOptions } from './popmenu-options.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionToken used to import the config (initOptions) object, provided from the outside\n */\nexport const PopmenuOptionsService = new InjectionToken<PopmenuOptions>('PopmenuOptions');\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n createComponent,\n} from '@angular/core';\nimport { defaultOptions } from './options';\nimport { PopmenuOptions } from './popmenu-options.interface';\nimport { PopmenuOptionsService } from './popmenu-options.service';\nimport { PopmenuComponent } from './popmenu.component';\n\nexport interface AdComponent {\n data: any;\n show: boolean;\n close: boolean;\n menuClosed: any;\n menuOpened: any;\n menuOpen: boolean;\n}\n\nexport type PopmenuPlacement =\n | 'bottom'\n | 'top'\n | 'left'\n | 'right'\n | 'bottom right'\n | 'bottom left'\n | 'right bottom'\n | 'left bottom'\n | 'top right'\n | 'top left'\n | 'right top'\n | 'left top';\n\nexport type PopmenuArrowPosition = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * @deprecated This directive is deprecated and will be removed in future versions.\n * Use `ActionDropdownComponent` instead.\n */\n@Directive({\n selector: '[apPopmenu]',\n standalone: true,\n})\nexport class PopmenuDirective implements OnChanges, OnInit {\n @Input() apPopmenuBorder = false;\n @Input() apPopmenuDisabled = false;\n @Input() apPopmenuBackground = true;\n @Input() arrow = false;\n @Input() arrowOffset: number | undefined;\n @Input() arrowPosition: PopmenuArrowPosition | string | undefined;\n @Input() close = false;\n @Input() hasBackdrop: boolean = true;\n @Input() backdropClass = '';\n @Input() panelClass: string | undefined;\n @Input() offset: number | undefined;\n @Input() offsets: { distance?: number; skidding?: number } | undefined;\n @Input() placement: PopmenuPlacement | string = 'bottom';\n\n @Input() pointer = true;\n @Input('apPopmenu') popMenuValue!: TemplateRef<any>;\n @Input() position: { top: number; left: number } | undefined;\n @Input() rounded = false;\n @Input() shadow = false;\n @Output() menuClosed: EventEmitter<void> = new EventEmitter<void>();\n @Output() menuOpened: EventEmitter<void> = new EventEmitter<void>();\n\n componentElement!: HTMLElement;\n hideTimeoutId: number | undefined;\n destroyTimeoutId: number | undefined;\n createTimeoutId: number | undefined;\n showTimeoutId: number | undefined;\n componentRef!: ComponentRef<any>;\n elementPosition: any;\n componentSubscribe: any;\n _defaultOptions: any;\n\n _options: PopmenuOptions = {};\n\n get options() {\n return this._options;\n }\n\n @Input() set options(value: PopmenuOptions) {\n if (value && defaultOptions) {\n this._options = value;\n }\n }\n\n get destroyDelay() {\n return Number(this.getHideDelay()) + Number(this.options['animationDuration']);\n }\n\n get isDisplayOnHover(): boolean {\n if (this.options['display'] === false) {\n return false;\n }\n\n if (this.options['displayTouchscreen'] === false) {\n return false;\n }\n\n if (this.options['trigger'] !== 'hover') {\n return false;\n }\n\n return true;\n }\n\n get isTooltipDestroyed() {\n return this.componentRef && this.componentRef.hostView.destroyed;\n }\n\n get tooltipPosition() {\n if (this.options['position']) {\n return this.options['position'];\n } else {\n return this.elementPosition;\n }\n }\n\n constructor(\n @Optional() @Inject(PopmenuOptionsService) private initOptions: PopmenuOptions,\n public renderer: Renderer2,\n private elementRef: ElementRef,\n private appRef: ApplicationRef,\n private injector: Injector,\n private environmentInjector: EnvironmentInjector\n ) {}\n\n appendComponentToBody(component: any): void {\n this.componentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: this.injector,\n });\n\n (<AdComponent>this.componentRef.instance).data = {\n value: this.popMenuValue,\n element: this.elementRef.nativeElement,\n elementPosition: this.tooltipPosition,\n options: this.options,\n };\n this.appRef.attachView(this.componentRef.hostView);\n this.componentElement = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(this.componentElement);\n this.componentSubscribe = (<AdComponent>this.componentRef.instance).menuClosed.subscribe(() => {\n this.handleClose();\n this.menuOpen = (<AdComponent>this.componentRef.instance).menuOpen;\n });\n this.componentSubscribe = (<AdComponent>this.componentRef.instance).menuOpened.subscribe(() => {\n this.handleOpen();\n this.menuOpen = (<AdComponent>this.componentRef.instance).menuOpen;\n });\n }\n\n @Output()\n menuOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n #menuOpen = false;\n\n @Input()\n get menuOpen() {\n return this.#menuOpen;\n }\n\n set menuOpen(menuOpen: boolean) {\n this.menuOpenChange.emit(menuOpen);\n this.#menuOpen = menuOpen;\n if (this.#menuOpen) {\n this.elementRef.nativeElement.classList.add('popmenu-open');\n this.elementRef.nativeElement.classList.remove('popmenu-close');\n } else {\n this.elementRef.nativeElement.classList.remove('popmenu-open');\n this.elementRef.nativeElement.classList.add('popmenu-close');\n }\n }\n\n handleClose() {\n this.menuClosed.emit();\n }\n\n handleOpen() {\n this.menuOpened.emit();\n }\n\n applyOptionsDefault(defaultOptions: PopmenuOptions, options: PopmenuOptions): void {\n this.options = Object.assign({}, defaultOptions, this.initOptions || {}, options);\n }\n\n clearTimeouts(): void {\n if (this.createTimeoutId) {\n clearTimeout(this.createTimeoutId);\n }\n\n if (this.showTimeoutId) {\n clearTimeout(this.showTimeoutId);\n }\n\n if (this.hideTimeoutId) {\n clearTimeout(this.hideTimeoutId);\n }\n\n if (this.destroyTimeoutId) {\n clearTimeout(this.destroyTimeoutId);\n }\n }\n\n createPopMenu(): void {\n this.clearTimeouts();\n\n this.createTimeoutId = window.setTimeout(() => {\n this.appendComponentToBody(PopmenuComponent);\n }, this.getShowDelay());\n\n this.showTimeoutId = window.setTimeout(() => {\n this.showTooltipElem();\n }, this.getShowDelay());\n }\n\n getElementPosition(): void {\n this.elementPosition = this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n getHideDelay() {\n return this.options['hideDelay'];\n }\n\n getProperties(changes: SimpleChanges) {\n let properties: any = {};\n\n for (const prop in changes) {\n if (prop !== 'options' && prop !== 'tooltipValue') {\n properties[prop] = changes[prop].currentValue;\n }\n if (prop === 'options') {\n properties = changes[prop].currentValue;\n }\n }\n return properties;\n }\n\n getShowDelay() {\n return this.options['showDelay'];\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.pointer) {\n if (!this.pointer) {\n this.renderer.removeStyle(this.elementRef.nativeElement, 'cursor');\n } else {\n this.renderer.setStyle(this.elementRef.nativeElement, 'cursor', 'pointer');\n }\n }\n if (changes.close && changes.close.currentValue) {\n this.hideTooltipElem();\n }\n const changedOptions = this.getProperties(changes);\n this.applyOptionsDefault(this.options && Object.keys(this.options).length > 0 ? this.options : defaultOptions, changedOptions);\n }\n\n ngOnInit(): void {\n if (this.pointer) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'cursor', 'pointer');\n }\n this.menuOpen = false;\n }\n\n @HostListener('click')\n onClick() {\n if (this.apPopmenuDisabled) {\n return;\n }\n this.show();\n this.close = false;\n }\n\n public show() {\n this.getElementPosition();\n if (!this.componentRef || this.isTooltipDestroyed) {\n this.createPopMenu();\n } else if (!this.isTooltipDestroyed) {\n this.showTooltipElem();\n }\n }\n\n showTooltipElem(): void {\n (<AdComponent>this.componentRef.instance).data = {\n value: this.popMenuValue,\n element: this.elementRef.nativeElement,\n elementPosition: this.tooltipPosition,\n options: this.options,\n };\n this.clearTimeouts();\n (<AdComponent>this.componentRef.instance).show = true;\n }\n\n hideTooltipElem(): void {\n if (this.componentRef) {\n (<AdComponent>this.componentRef.instance).close = true;\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { PopmenuOptions } from './popmenu-options.interface';\nimport { PopmenuOptionsService } from './popmenu-options.service';\nimport { PopmenuComponent } from './popmenu.component';\nimport { PopmenuDirective } from './popmenu.directive';\n\n@NgModule({\n imports: [PopmenuDirective, PopmenuComponent],\n exports: [PopmenuDirective],\n})\nexport class PopmenuModule {\n static forRoot(initOptions: PopmenuOptions): ModuleWithProviders<PopmenuModule> {\n return {\n ngModule: PopmenuModule,\n providers: [\n {\n provide: PopmenuOptionsService,\n useValue: initOptions,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { CloseButtonComponent } from '@agorapulse/ui-components/close-button';
|
|
2
|
+
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
3
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
4
|
+
import * as i0 from '@angular/core';
|
|
5
|
+
import { input, output, computed, ChangeDetectionStrategy, Component, inject, ElementRef, Directive } from '@angular/core';
|
|
6
|
+
import { createFloatingOverlay } from '@agorapulse/ui-components/floating';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The `role="dialog"` surface, its optional header and its focus trap. Instantiated by the popover
|
|
10
|
+
* directive, never by a consumer.
|
|
11
|
+
*
|
|
12
|
+
* Focus is the CDK's: `cdkTrapFocus` confines Tab, `autoCapture` focuses on open and restores the
|
|
13
|
+
* trigger on destruction. The cost is that Tab cannot leave the panel — Escape or the button do.
|
|
14
|
+
*/
|
|
15
|
+
class PopoverPanelComponent {
|
|
16
|
+
static nextId = 0;
|
|
17
|
+
/** The consumer's content. Always a template: the directive sits on the trigger, not here. */
|
|
18
|
+
content = input.required(/* @ts-ignore */
|
|
19
|
+
...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
|
|
20
|
+
/** Mirrors the popover's heading, and gives the dialog its accessible name. */
|
|
21
|
+
heading = input(/* @ts-ignore */
|
|
22
|
+
...(ngDevMode ? [undefined, { debugName: "heading" }] : /* istanbul ignore next */ []));
|
|
23
|
+
/** Mirrors the popover's input of the same name. */
|
|
24
|
+
closable = input(false, /* @ts-ignore */
|
|
25
|
+
...(ngDevMode ? [{ debugName: "closable" }] : /* istanbul ignore next */ []));
|
|
26
|
+
/** Mirrors the popover's backdrop, which is what makes the page genuinely inert. */
|
|
27
|
+
backdrop = input(false, /* @ts-ignore */
|
|
28
|
+
...(ngDevMode ? [{ debugName: "backdrop" }] : /* istanbul ignore next */ []));
|
|
29
|
+
/** Mirrors the popover's, and names the dialog when there is no heading. */
|
|
30
|
+
ariaLabel = input(/* @ts-ignore */
|
|
31
|
+
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
32
|
+
closeAriaLabel = input('Close', /* @ts-ignore */
|
|
33
|
+
...(ngDevMode ? [{ debugName: "closeAriaLabel" }] : /* istanbul ignore next */ []));
|
|
34
|
+
/** Set by the directive, which needs it for the trigger's `aria-controls`. */
|
|
35
|
+
panelId = input('', /* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [{ debugName: "panelId" }] : /* istanbul ignore next */ []));
|
|
37
|
+
/**
|
|
38
|
+
* The id of the element that names the dialog when nothing else does — the trigger, set by the
|
|
39
|
+
* directive. An id rather than its text, so the name is computed on the live DOM: that follows a
|
|
40
|
+
* label that changes, and reads a trigger whose own name is an `aria-label`.
|
|
41
|
+
*/
|
|
42
|
+
fallbackLabelId = input(/* @ts-ignore */
|
|
43
|
+
...(ngDevMode ? [undefined, { debugName: "fallbackLabelId" }] : /* istanbul ignore next */ []));
|
|
44
|
+
closed = output();
|
|
45
|
+
headingId = `ap-popover-heading-${PopoverPanelComponent.nextId++}`;
|
|
46
|
+
/** A dialog must be named. The heading does it, failing that the trigger. */
|
|
47
|
+
labelledBy = computed(() => {
|
|
48
|
+
if (this.heading()) {
|
|
49
|
+
return this.headingId;
|
|
50
|
+
}
|
|
51
|
+
return this.ariaLabel() ? null : (this.fallbackLabelId() ?? null);
|
|
52
|
+
}, /* @ts-ignore */
|
|
53
|
+
...(ngDevMode ? [{ debugName: "labelledBy" }] : /* istanbul ignore next */ []));
|
|
54
|
+
label = computed(() => (this.heading() ? null : (this.ariaLabel() ?? null)), /* @ts-ignore */
|
|
55
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
56
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: PopoverPanelComponent, isStandalone: true, selector: "ap-popover-panel", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, closeAriaLabel: { classPropertyName: "closeAriaLabel", publicName: "closeAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, panelId: { classPropertyName: "panelId", publicName: "panelId", isSignal: true, isRequired: false, transformFunction: null }, fallbackLabelId: { classPropertyName: "fallbackLabelId", publicName: "fallbackLabelId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, ngImport: i0, template: "<div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"ap-popover__panel\"\n role=\"dialog\"\n tabindex=\"-1\"\n cdkFocusInitial\n [id]=\"panelId()\"\n [attr.aria-modal]=\"backdrop() || null\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-label]=\"label()\">\n @if (heading() || closable()) {\n <div class=\"ap-popover__header\">\n @if (heading()) {\n <h2\n class=\"ap-popover__heading\"\n [id]=\"headingId\">\n {{ heading() }}\n </h2>\n }\n @if (closable()) {\n <ap-close-button\n [ariaLabel]=\"closeAriaLabel()\"\n (closed)=\"closed.emit()\" />\n }\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"content()\" />\n </div>\n</div>\n", styles: [":host{display:block;box-sizing:border-box;background-color:var(--comp-popover-background-color);border-radius:var(--comp-popover-border-radius);box-shadow:var(--comp-popover-box-shadow);padding:var(--comp-popover-padding)}.ap-popover__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--comp-popover-header-gap);margin-bottom:var(--comp-popover-header-margin-bottom)}.ap-popover__heading{margin:0;color:var(--comp-popover-heading-color);font-family:var(--comp-popover-heading-font-family);font-size:var(--comp-popover-heading-size);font-weight:var(--comp-popover-heading-weight);line-height:var(--comp-popover-heading-line-height)}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: CloseButtonComponent, selector: "ap-close-button", inputs: ["disabled", "ariaLabel", "dataTest"], outputs: ["closed"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverPanelComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-popover-panel', imports: [CdkTrapFocus, CloseButtonComponent, NgTemplateOutlet], template: "<div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"ap-popover__panel\"\n role=\"dialog\"\n tabindex=\"-1\"\n cdkFocusInitial\n [id]=\"panelId()\"\n [attr.aria-modal]=\"backdrop() || null\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-label]=\"label()\">\n @if (heading() || closable()) {\n <div class=\"ap-popover__header\">\n @if (heading()) {\n <h2\n class=\"ap-popover__heading\"\n [id]=\"headingId\">\n {{ heading() }}\n </h2>\n }\n @if (closable()) {\n <ap-close-button\n [ariaLabel]=\"closeAriaLabel()\"\n (closed)=\"closed.emit()\" />\n }\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"content()\" />\n </div>\n</div>\n", styles: [":host{display:block;box-sizing:border-box;background-color:var(--comp-popover-background-color);border-radius:var(--comp-popover-border-radius);box-shadow:var(--comp-popover-box-shadow);padding:var(--comp-popover-padding)}.ap-popover__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--comp-popover-header-gap);margin-bottom:var(--comp-popover-header-margin-bottom)}.ap-popover__heading{margin:0;color:var(--comp-popover-heading-color);font-family:var(--comp-popover-heading-font-family);font-size:var(--comp-popover-heading-size);font-weight:var(--comp-popover-heading-weight);line-height:var(--comp-popover-heading-line-height)}\n"] }]
|
|
62
|
+
}], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], closeAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeAriaLabel", required: false }] }], panelId: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelId", required: false }] }], fallbackLabelId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fallbackLabelId", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* A click-triggered interactive panel: `role="dialog"`, managed focus, Escape, optional backdrop.
|
|
66
|
+
* A tooltip is the opposite — descriptive, hover-triggered, and never focusable.
|
|
67
|
+
*
|
|
68
|
+
* Sits on the **trigger**, so it owns the trigger's ARIA and the content is always a `TemplateRef`.
|
|
69
|
+
* Inputs are prefixed one by one rather than bundled: an inline config object would be recreated on
|
|
70
|
+
* every change-detection cycle and thrash the overlay.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* <button [apPopover]="shareTpl" apPopoverHeading="Share">Share</button>
|
|
74
|
+
* <ng-template #shareTpl>…</ng-template>
|
|
75
|
+
*/
|
|
76
|
+
class PopoverDirective {
|
|
77
|
+
static nextId = 0;
|
|
78
|
+
instanceId = PopoverDirective.nextId++;
|
|
79
|
+
floating = createFloatingOverlay();
|
|
80
|
+
triggerElement = inject(ElementRef);
|
|
81
|
+
panelRef = null;
|
|
82
|
+
/** The panel's content. */
|
|
83
|
+
apPopover = input.required(/* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [{ debugName: "apPopover" }] : /* istanbul ignore next */ []));
|
|
85
|
+
/** Unset means derived from the anchor mode. There is no `'auto'` value. */
|
|
86
|
+
apPopoverPlacement = input(/* @ts-ignore */
|
|
87
|
+
...(ngDevMode ? [undefined, { debugName: "apPopoverPlacement" }] : /* istanbul ignore next */ []));
|
|
88
|
+
apPopoverAnchor = input('trigger', /* @ts-ignore */
|
|
89
|
+
...(ngDevMode ? [{ debugName: "apPopoverAnchor" }] : /* istanbul ignore next */ []));
|
|
90
|
+
apPopoverArrow = input(false, /* @ts-ignore */
|
|
91
|
+
...(ngDevMode ? [{ debugName: "apPopoverArrow" }] : /* istanbul ignore next */ []));
|
|
92
|
+
apPopoverArrowTarget = input('anchor', /* @ts-ignore */
|
|
93
|
+
...(ngDevMode ? [{ debugName: "apPopoverArrowTarget" }] : /* istanbul ignore next */ []));
|
|
94
|
+
/** Shows a close button — and, by doing so, makes it *the* way to close: no more outside click. */
|
|
95
|
+
apPopoverClosable = input(false, /* @ts-ignore */
|
|
96
|
+
...(ngDevMode ? [{ debugName: "apPopoverClosable" }] : /* istanbul ignore next */ []));
|
|
97
|
+
/** Blocks the page behind. Non-modal by default — that is the point of a popover. */
|
|
98
|
+
apPopoverBackdrop = input(false, /* @ts-ignore */
|
|
99
|
+
...(ngDevMode ? [{ debugName: "apPopoverBackdrop" }] : /* istanbul ignore next */ []));
|
|
100
|
+
/** Optional heading. When set, it becomes the dialog's accessible name. */
|
|
101
|
+
apPopoverHeading = input(/* @ts-ignore */
|
|
102
|
+
...(ngDevMode ? [undefined, { debugName: "apPopoverHeading" }] : /* istanbul ignore next */ []));
|
|
103
|
+
/** Accessible name used when there is no heading. */
|
|
104
|
+
apPopoverAriaLabel = input(/* @ts-ignore */
|
|
105
|
+
...(ngDevMode ? [undefined, { debugName: "apPopoverAriaLabel" }] : /* istanbul ignore next */ []));
|
|
106
|
+
/** An input rather than a hard-coded string: several of the DS's own labels read badly. */
|
|
107
|
+
apPopoverCloseAriaLabel = input('Close', /* @ts-ignore */
|
|
108
|
+
...(ngDevMode ? [{ debugName: "apPopoverCloseAriaLabel" }] : /* istanbul ignore next */ []));
|
|
109
|
+
apPopoverPanelClass = input(/* @ts-ignore */
|
|
110
|
+
...(ngDevMode ? [undefined, { debugName: "apPopoverPanelClass" }] : /* istanbul ignore next */ []));
|
|
111
|
+
isOpen = this.floating.isOpen;
|
|
112
|
+
panelId = `ap-popover-${this.instanceId}`;
|
|
113
|
+
open(event) {
|
|
114
|
+
if (this.isOpen())
|
|
115
|
+
return;
|
|
116
|
+
this.panelRef = this.floating.open(PopoverPanelComponent, this.triggerElement.nativeElement, {
|
|
117
|
+
placement: this.apPopoverPlacement(),
|
|
118
|
+
anchor: this.apPopoverAnchor(),
|
|
119
|
+
arrow: this.apPopoverArrow(),
|
|
120
|
+
arrowTarget: this.apPopoverArrowTarget(),
|
|
121
|
+
showBackdrop: this.apPopoverBackdrop(),
|
|
122
|
+
panelClass: this.apPopoverPanelClass(),
|
|
123
|
+
// Escape always closes: APG requires it of a dialog. An outside click does not.
|
|
124
|
+
onEscape: () => this.close(),
|
|
125
|
+
onOutsideClick: () => {
|
|
126
|
+
if (!this.apPopoverClosable()) {
|
|
127
|
+
this.close();
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
}, event);
|
|
131
|
+
this.panelRef?.setInput('content', this.apPopover());
|
|
132
|
+
this.panelRef?.setInput('panelId', this.panelId);
|
|
133
|
+
this.panelRef?.setInput('heading', this.apPopoverHeading());
|
|
134
|
+
this.panelRef?.setInput('closable', this.apPopoverClosable());
|
|
135
|
+
this.panelRef?.setInput('backdrop', this.apPopoverBackdrop());
|
|
136
|
+
this.panelRef?.setInput('ariaLabel', this.apPopoverAriaLabel());
|
|
137
|
+
this.panelRef?.setInput('closeAriaLabel', this.apPopoverCloseAriaLabel());
|
|
138
|
+
this.panelRef?.setInput('fallbackLabelId', this.ensureTriggerId());
|
|
139
|
+
this.panelRef?.instance.closed.subscribe(() => this.close());
|
|
140
|
+
// Render before repositioning: `attach()` measured an unevaluated template, so the first
|
|
141
|
+
// position is for an empty box and the panel jumps once the content lands.
|
|
142
|
+
this.panelRef?.changeDetectorRef.detectChanges();
|
|
143
|
+
this.floating.updatePosition();
|
|
144
|
+
}
|
|
145
|
+
/** The dialog falls back to being named by its trigger, and `aria-labelledby` needs an id to point at. */
|
|
146
|
+
ensureTriggerId() {
|
|
147
|
+
const trigger = this.triggerElement.nativeElement;
|
|
148
|
+
if (!trigger.id) {
|
|
149
|
+
trigger.id = `ap-popover-trigger-${this.instanceId}`;
|
|
150
|
+
}
|
|
151
|
+
this.warnWhenNameless(trigger);
|
|
152
|
+
return trigger.id;
|
|
153
|
+
}
|
|
154
|
+
/** The residual case the fallback cannot cover: a trigger that names nothing either. */
|
|
155
|
+
warnWhenNameless(trigger) {
|
|
156
|
+
const hasOwnName = Boolean(this.apPopoverHeading()) || Boolean(this.apPopoverAriaLabel());
|
|
157
|
+
// An icon-only trigger has no text but may carry an `aria-label`, which names it just as well.
|
|
158
|
+
const triggerNamesIt = Boolean(trigger.textContent?.trim()) || Boolean(trigger.getAttribute('aria-label'));
|
|
159
|
+
if (hasOwnName || triggerNamesIt) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
console.warn(`[Popover] The dialog opened by #${trigger.id} has no accessible name: it has neither a ` +
|
|
163
|
+
'heading nor an aria-label, and its trigger has no text. Set apPopoverHeading or apPopoverAriaLabel.');
|
|
164
|
+
}
|
|
165
|
+
close() {
|
|
166
|
+
this.panelRef = null;
|
|
167
|
+
this.floating.close();
|
|
168
|
+
}
|
|
169
|
+
toggle(event) {
|
|
170
|
+
if (this.isOpen()) {
|
|
171
|
+
this.close();
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.open(event);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
178
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.5", type: PopoverDirective, isStandalone: true, selector: "[apPopover]", inputs: { apPopover: { classPropertyName: "apPopover", publicName: "apPopover", isSignal: true, isRequired: true, transformFunction: null }, apPopoverPlacement: { classPropertyName: "apPopoverPlacement", publicName: "apPopoverPlacement", isSignal: true, isRequired: false, transformFunction: null }, apPopoverAnchor: { classPropertyName: "apPopoverAnchor", publicName: "apPopoverAnchor", isSignal: true, isRequired: false, transformFunction: null }, apPopoverArrow: { classPropertyName: "apPopoverArrow", publicName: "apPopoverArrow", isSignal: true, isRequired: false, transformFunction: null }, apPopoverArrowTarget: { classPropertyName: "apPopoverArrowTarget", publicName: "apPopoverArrowTarget", isSignal: true, isRequired: false, transformFunction: null }, apPopoverClosable: { classPropertyName: "apPopoverClosable", publicName: "apPopoverClosable", isSignal: true, isRequired: false, transformFunction: null }, apPopoverBackdrop: { classPropertyName: "apPopoverBackdrop", publicName: "apPopoverBackdrop", isSignal: true, isRequired: false, transformFunction: null }, apPopoverHeading: { classPropertyName: "apPopoverHeading", publicName: "apPopoverHeading", isSignal: true, isRequired: false, transformFunction: null }, apPopoverAriaLabel: { classPropertyName: "apPopoverAriaLabel", publicName: "apPopoverAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, apPopoverCloseAriaLabel: { classPropertyName: "apPopoverCloseAriaLabel", publicName: "apPopoverCloseAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, apPopoverPanelClass: { classPropertyName: "apPopoverPanelClass", publicName: "apPopoverPanelClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "toggle($event)" }, properties: { "attr.aria-haspopup": "\"dialog\"", "attr.aria-expanded": "isOpen()", "attr.aria-controls": "isOpen() ? panelId : null" } }, exportAs: ["apPopover"], ngImport: i0 });
|
|
179
|
+
}
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverDirective, decorators: [{
|
|
181
|
+
type: Directive,
|
|
182
|
+
args: [{
|
|
183
|
+
selector: '[apPopover]',
|
|
184
|
+
exportAs: 'apPopover',
|
|
185
|
+
host: {
|
|
186
|
+
'[attr.aria-haspopup]': '"dialog"',
|
|
187
|
+
'[attr.aria-expanded]': 'isOpen()',
|
|
188
|
+
// Only while open: pointing `aria-controls` at an id that does not exist yet is invalid.
|
|
189
|
+
'[attr.aria-controls]': 'isOpen() ? panelId : null',
|
|
190
|
+
'(click)': 'toggle($event)',
|
|
191
|
+
},
|
|
192
|
+
}]
|
|
193
|
+
}], propDecorators: { apPopover: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopover", required: true }] }], apPopoverPlacement: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverPlacement", required: false }] }], apPopoverAnchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverAnchor", required: false }] }], apPopoverArrow: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverArrow", required: false }] }], apPopoverArrowTarget: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverArrowTarget", required: false }] }], apPopoverClosable: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverClosable", required: false }] }], apPopoverBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverBackdrop", required: false }] }], apPopoverHeading: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverHeading", required: false }] }], apPopoverAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverAriaLabel", required: false }] }], apPopoverCloseAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverCloseAriaLabel", required: false }] }], apPopoverPanelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "apPopoverPanelClass", required: false }] }] } });
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Generated bundle index. Do not edit.
|
|
197
|
+
*/
|
|
198
|
+
|
|
199
|
+
export { PopoverDirective, PopoverPanelComponent };
|
|
200
|
+
//# sourceMappingURL=agorapulse-ui-components-popover.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agorapulse-ui-components-popover.mjs","sources":["../../../libs/ui-components/popover/src/popover-panel/popover-panel.component.ts","../../../libs/ui-components/popover/src/popover-panel/popover-panel.component.html","../../../libs/ui-components/popover/src/popover.directive.ts","../../../libs/ui-components/popover/src/agorapulse-ui-components-popover.ts"],"sourcesContent":["import { CloseButtonComponent } from '@agorapulse/ui-components/close-button';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output, TemplateRef } from '@angular/core';\n\n/**\n * The `role=\"dialog\"` surface, its optional header and its focus trap. Instantiated by the popover\n * directive, never by a consumer.\n *\n * Focus is the CDK's: `cdkTrapFocus` confines Tab, `autoCapture` focuses on open and restores the\n * trigger on destruction. The cost is that Tab cannot leave the panel — Escape or the button do.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-popover-panel',\n imports: [CdkTrapFocus, CloseButtonComponent, NgTemplateOutlet],\n templateUrl: 'popover-panel.component.html',\n styleUrls: ['popover-panel.component.scss'],\n})\nexport class PopoverPanelComponent {\n private static nextId = 0;\n\n /** The consumer's content. Always a template: the directive sits on the trigger, not here. */\n readonly content = input.required<TemplateRef<unknown>>();\n\n /** Mirrors the popover's heading, and gives the dialog its accessible name. */\n readonly heading = input<string>();\n\n /** Mirrors the popover's input of the same name. */\n readonly closable = input<boolean>(false);\n\n /** Mirrors the popover's backdrop, which is what makes the page genuinely inert. */\n readonly backdrop = input<boolean>(false);\n\n /** Mirrors the popover's, and names the dialog when there is no heading. */\n readonly ariaLabel = input<string>();\n\n readonly closeAriaLabel = input<string>('Close');\n\n /** Set by the directive, which needs it for the trigger's `aria-controls`. */\n readonly panelId = input<string>('');\n\n /**\n * The id of the element that names the dialog when nothing else does — the trigger, set by the\n * directive. An id rather than its text, so the name is computed on the live DOM: that follows a\n * label that changes, and reads a trigger whose own name is an `aria-label`.\n */\n readonly fallbackLabelId = input<string>();\n\n readonly closed = output<void>();\n\n protected readonly headingId = `ap-popover-heading-${PopoverPanelComponent.nextId++}`;\n\n /** A dialog must be named. The heading does it, failing that the trigger. */\n protected readonly labelledBy = computed<string | null>(() => {\n if (this.heading()) {\n return this.headingId;\n }\n return this.ariaLabel() ? null : (this.fallbackLabelId() ?? null);\n });\n\n protected readonly label = computed<string | null>(() => (this.heading() ? null : (this.ariaLabel() ?? null)));\n}\n","<div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\">\n <div\n class=\"ap-popover__panel\"\n role=\"dialog\"\n tabindex=\"-1\"\n cdkFocusInitial\n [id]=\"panelId()\"\n [attr.aria-modal]=\"backdrop() || null\"\n [attr.aria-labelledby]=\"labelledBy()\"\n [attr.aria-label]=\"label()\">\n @if (heading() || closable()) {\n <div class=\"ap-popover__header\">\n @if (heading()) {\n <h2\n class=\"ap-popover__heading\"\n [id]=\"headingId\">\n {{ heading() }}\n </h2>\n }\n @if (closable()) {\n <ap-close-button\n [ariaLabel]=\"closeAriaLabel()\"\n (closed)=\"closed.emit()\" />\n }\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"content()\" />\n </div>\n</div>\n","import { createFloatingOverlay, FloatingAnchorMode, FloatingPlacement } from '@agorapulse/ui-components/floating';\nimport { ComponentRef, Directive, ElementRef, inject, input, TemplateRef } from '@angular/core';\nimport { PopoverPanelComponent } from './popover-panel/popover-panel.component';\n\n/**\n * A click-triggered interactive panel: `role=\"dialog\"`, managed focus, Escape, optional backdrop.\n * A tooltip is the opposite — descriptive, hover-triggered, and never focusable.\n *\n * Sits on the **trigger**, so it owns the trigger's ARIA and the content is always a `TemplateRef`.\n * Inputs are prefixed one by one rather than bundled: an inline config object would be recreated on\n * every change-detection cycle and thrash the overlay.\n *\n * @example\n * <button [apPopover]=\"shareTpl\" apPopoverHeading=\"Share\">Share</button>\n * <ng-template #shareTpl>…</ng-template>\n */\n@Directive({\n selector: '[apPopover]',\n exportAs: 'apPopover',\n host: {\n '[attr.aria-haspopup]': '\"dialog\"',\n '[attr.aria-expanded]': 'isOpen()',\n // Only while open: pointing `aria-controls` at an id that does not exist yet is invalid.\n '[attr.aria-controls]': 'isOpen() ? panelId : null',\n '(click)': 'toggle($event)',\n },\n})\nexport class PopoverDirective {\n private static nextId = 0;\n\n private readonly instanceId = PopoverDirective.nextId++;\n private readonly floating = createFloatingOverlay();\n private readonly triggerElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private panelRef: ComponentRef<PopoverPanelComponent> | null = null;\n\n /** The panel's content. */\n readonly apPopover = input.required<TemplateRef<unknown>>();\n\n /** Unset means derived from the anchor mode. There is no `'auto'` value. */\n readonly apPopoverPlacement = input<FloatingPlacement>();\n readonly apPopoverAnchor = input<FloatingAnchorMode>('trigger');\n readonly apPopoverArrow = input<boolean>(false);\n readonly apPopoverArrowTarget = input<'anchor' | 'pointer'>('anchor');\n\n /** Shows a close button — and, by doing so, makes it *the* way to close: no more outside click. */\n readonly apPopoverClosable = input<boolean>(false);\n\n /** Blocks the page behind. Non-modal by default — that is the point of a popover. */\n readonly apPopoverBackdrop = input<boolean>(false);\n\n /** Optional heading. When set, it becomes the dialog's accessible name. */\n readonly apPopoverHeading = input<string>();\n\n /** Accessible name used when there is no heading. */\n readonly apPopoverAriaLabel = input<string>();\n\n /** An input rather than a hard-coded string: several of the DS's own labels read badly. */\n readonly apPopoverCloseAriaLabel = input<string>('Close');\n\n readonly apPopoverPanelClass = input<string | string[]>();\n\n readonly isOpen = this.floating.isOpen;\n\n protected readonly panelId = `ap-popover-${this.instanceId}`;\n\n open(event?: MouseEvent): void {\n if (this.isOpen()) return;\n\n this.panelRef = this.floating.open(\n PopoverPanelComponent,\n this.triggerElement.nativeElement,\n {\n placement: this.apPopoverPlacement(),\n anchor: this.apPopoverAnchor(),\n arrow: this.apPopoverArrow(),\n arrowTarget: this.apPopoverArrowTarget(),\n showBackdrop: this.apPopoverBackdrop(),\n panelClass: this.apPopoverPanelClass(),\n // Escape always closes: APG requires it of a dialog. An outside click does not.\n onEscape: () => this.close(),\n onOutsideClick: () => {\n if (!this.apPopoverClosable()) {\n this.close();\n }\n },\n },\n event\n );\n\n this.panelRef?.setInput('content', this.apPopover());\n this.panelRef?.setInput('panelId', this.panelId);\n this.panelRef?.setInput('heading', this.apPopoverHeading());\n this.panelRef?.setInput('closable', this.apPopoverClosable());\n this.panelRef?.setInput('backdrop', this.apPopoverBackdrop());\n this.panelRef?.setInput('ariaLabel', this.apPopoverAriaLabel());\n this.panelRef?.setInput('closeAriaLabel', this.apPopoverCloseAriaLabel());\n this.panelRef?.setInput('fallbackLabelId', this.ensureTriggerId());\n this.panelRef?.instance.closed.subscribe(() => this.close());\n\n // Render before repositioning: `attach()` measured an unevaluated template, so the first\n // position is for an empty box and the panel jumps once the content lands.\n this.panelRef?.changeDetectorRef.detectChanges();\n this.floating.updatePosition();\n }\n\n /** The dialog falls back to being named by its trigger, and `aria-labelledby` needs an id to point at. */\n private ensureTriggerId(): string {\n const trigger = this.triggerElement.nativeElement;\n if (!trigger.id) {\n trigger.id = `ap-popover-trigger-${this.instanceId}`;\n }\n\n this.warnWhenNameless(trigger);\n return trigger.id;\n }\n\n /** The residual case the fallback cannot cover: a trigger that names nothing either. */\n private warnWhenNameless(trigger: HTMLElement): void {\n const hasOwnName = Boolean(this.apPopoverHeading()) || Boolean(this.apPopoverAriaLabel());\n // An icon-only trigger has no text but may carry an `aria-label`, which names it just as well.\n const triggerNamesIt = Boolean(trigger.textContent?.trim()) || Boolean(trigger.getAttribute('aria-label'));\n if (hasOwnName || triggerNamesIt) {\n return;\n }\n\n console.warn(\n `[Popover] The dialog opened by #${trigger.id} has no accessible name: it has neither a ` +\n 'heading nor an aria-label, and its trigger has no text. Set apPopoverHeading or apPopoverAriaLabel.'\n );\n }\n\n close(): void {\n this.panelRef = null;\n this.floating.close();\n }\n\n toggle(event?: MouseEvent): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open(event);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|