ap-popup
Version:
Flexible Angular popup/notification library
1 lines • 19.8 kB
Source Map (JSON)
{"version":3,"file":"ap-popup.mjs","sources":["../../../projects/ap-popup/src/lib/ap-popup.component.ts","../../../projects/ap-popup/src/lib/ap-popup.component.html","../../../projects/ap-popup/src/lib/ap-popup.service.ts","../../../projects/ap-popup/src/ap-popup.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { Subject, timer, takeUntil } from 'rxjs';\r\nimport { PopupAnimationType, PopupThemeType } from './utils/types';\r\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-ap-popup',\r\n imports: [NgIf, NgClass, NgTemplateOutlet],\r\n templateUrl: './ap-popup.component.html',\r\n styleUrls: ['./ap-popup.component.scss'],\r\n})\r\nexport class ApPopupComponent {\r\n @Input() public text?: string;\r\n @Input() public template?: TemplateRef<any>;\r\n @Input() public templateContext: object = {};\r\n\r\n @Input() public theme: PopupThemeType = 'default';\r\n @Input() public animation: PopupAnimationType = 'cubic';\r\n @Input() public animationDuration = 900;\r\n @Input() public animationHideDuration = 900;\r\n @Input() public timeout: number | null = 3000;\r\n @Input() public parentSelector: string | null = null;\r\n @Input() public closeByMouseUp = true;\r\n\r\n @Input() public customClass?: string;\r\n @Input() public customWrapperClass?: string;\r\n @Input() public zIndex?: number;\r\n\r\n @Output() public remove = new EventEmitter<void>();\r\n\r\n public hideAnimation?: string;\r\n public distanceToPageTop = 0;\r\n public id?: number;\r\n\r\n protected readonly cubicBezierFunctionIn = 'cubic-bezier(0, 1.82, 0.46, 0.84)';\r\n protected readonly cubicBezierFunctionOut = 'cubic-bezier(0.42, -0.65, 0.27, 0.93)';\r\n\r\n private readonly _close$ = new Subject<void>();\r\n\r\n @HostBinding('style.transition') public get getHostTransition(): string {\r\n let timingFunction = 'linear';\r\n\r\n if (this.animation === 'cubic') {\r\n timingFunction = this.cubicBezierFunctionIn;\r\n }\r\n\r\n return `all ${timingFunction} ${this.animationDuration}ms`;\r\n }\r\n\r\n @HostBinding('style.zIndex') public get getZIndex(): string {\r\n return this.zIndex?.toString() || '1';\r\n }\r\n\r\n @HostBinding('style.cursor') public get getCursor(): string {\r\n return this.closeByMouseUp ? 'pointer' : 'default';\r\n }\r\n\r\n public constructor(public readonly elementRef: ElementRef) {}\r\n\r\n public ngOnInit(): void {\r\n if (!this.timeout) return;\r\n\r\n timer(this.timeout)\r\n .pipe(takeUntil(this._close$))\r\n .subscribe(() => {\r\n this._startHideAnimation();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._close$.complete();\r\n }\r\n\r\n public onMouseUp(): void {\r\n if (!this.closeByMouseUp) return;\r\n\r\n this.close();\r\n }\r\n\r\n public close(): void {\r\n this.zIndex = 999;\r\n this._close$.next();\r\n this._startHideAnimation();\r\n }\r\n\r\n public updateDistanceTop(): void {\r\n this.distanceToPageTop = this._getDistanceFromBottomToPageTop(this.elementRef.nativeElement);\r\n }\r\n\r\n private _startHideAnimation(): void {\r\n this.updateDistanceTop();\r\n this.hideAnimation = `${this.animation}-out`;\r\n this.remove.emit();\r\n }\r\n\r\n private _getDistanceFromBottomToPageTop(element: HTMLElement): number {\r\n return element.getBoundingClientRect().bottom;\r\n }\r\n}\r\n","<div\r\n class=\"ap-popup\"\r\n [ngClass]=\"[animation, hideAnimation ? hideAnimation : '', customClass ? customClass : '']\"\r\n [style]=\"\r\n '--animationDuration:' +\r\n animationDuration +\r\n 'ms;' +\r\n '--cubicFunctionIn:' +\r\n cubicBezierFunctionIn +\r\n ';' +\r\n '--cubicFunctionOut:' +\r\n cubicBezierFunctionOut +\r\n ';' +\r\n '--distanceToPageTop:' +\r\n distanceToPageTop +\r\n 'px;'\r\n \"\r\n (mouseup)=\"onMouseUp()\"\r\n>\r\n <div *ngIf=\"text || template\" class=\"ap-popup__content\" [ngClass]=\"'ap-popup__content-' + theme\">\r\n <ng-container\r\n *ngIf=\"template\"\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"templateContext\"\r\n ></ng-container>\r\n\r\n <span *ngIf=\"text && !template\" [innerHtml]=\"text\"></span>\r\n </div>\r\n</div>\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { ApplicationRef, ComponentFactoryResolver, Inject, Injectable, Injector, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { take, timer } from 'rxjs';\r\nimport { ApPopupComponent } from './ap-popup.component';\r\nimport { IPopupOpenData } from './utils/types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApPopupService {\r\n private _zIndexCounter = 1000;\r\n private _wrapper: HTMLElement | null = null;\r\n\r\n private _renderer: Renderer2;\r\n private _popups: ApPopupComponent[] = [];\r\n private _removingPopupIds = new Set<number>();\r\n\r\n private _customWrapperClass?: string;\r\n\r\n public constructor(\r\n rendererFactory: RendererFactory2,\r\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\r\n private readonly _appRef: ApplicationRef,\r\n private readonly _injector: Injector,\r\n @Inject(DOCUMENT) private readonly _document: Document\r\n ) {\r\n this._renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n public openPopup(data: IPopupOpenData): ApPopupComponent {\r\n if (!this._popups.length) {\r\n if (this._wrapper) {\r\n this._renderer.removeChild(this._document.body, this._wrapper);\r\n }\r\n\r\n this._wrapper = null;\r\n }\r\n\r\n if (!this._wrapper) {\r\n this._wrapper = this._renderer.createElement('div');\r\n this._renderer.addClass(this._wrapper, 'popups-wrapper');\r\n this._customWrapperClass = data.customWrapperClass;\r\n\r\n if (this._customWrapperClass) {\r\n this._renderer.addClass(this._wrapper, this._customWrapperClass);\r\n }\r\n\r\n let parent = this._document.body;\r\n\r\n if (data.parentSelector) {\r\n const parentRef = this._document.querySelector(data.parentSelector);\r\n\r\n if (parentRef) {\r\n parent = parentRef as HTMLElement;\r\n }\r\n }\r\n\r\n this._renderer.appendChild(parent, this._wrapper);\r\n }\r\n\r\n const componentFactory =\r\n this._componentFactoryResolver.resolveComponentFactory(ApPopupComponent);\r\n const componentRef = componentFactory.create(this._injector);\r\n\r\n componentRef.instance.text = data.text;\r\n componentRef.instance.template = data.template;\r\n componentRef.instance.customClass = data.customClass;\r\n componentRef.instance.customWrapperClass = data.customWrapperClass;\r\n componentRef.instance.zIndex = ++this._zIndexCounter;\r\n componentRef.instance.id = this._zIndexCounter;\r\n componentRef.instance.theme = data.theme || componentRef.instance.theme;\r\n\r\n componentRef.instance.templateContext =\r\n data.templateContext || componentRef.instance.templateContext;\r\n\r\n componentRef.instance.animation =\r\n data.animation || componentRef.instance.animation;\r\n\r\n componentRef.instance.timeout =\r\n data.timeout === null\r\n ? null\r\n : data.timeout || componentRef.instance.timeout;\r\n\r\n componentRef.instance.parentSelector =\r\n data.parentSelector || componentRef.instance.parentSelector;\r\n\r\n componentRef.instance.animationDuration =\r\n data.animationDuration || componentRef.instance.animationDuration;\r\n\r\n componentRef.instance.closeByMouseUp =\r\n data.closeByMouseUp === undefined\r\n ? componentRef.instance.closeByMouseUp\r\n : data.closeByMouseUp;\r\n\r\n componentRef.instance.remove.pipe(take(1)).subscribe(() => {\r\n this.removePopup(componentRef.instance);\r\n });\r\n\r\n this._appRef.attachView(componentRef.hostView);\r\n\r\n const domElem = (componentRef.hostView as any).rootNodes[0] as HTMLElement;\r\n\r\n this._renderer.appendChild(this._wrapper, domElem);\r\n\r\n const animatedPopups = this._popups.filter((p) => !p.hideAnimation);\r\n\r\n animatedPopups.forEach((popup, index) => {\r\n const previousPopupsHeight = animatedPopups\r\n .filter((_, i) => i < index)\r\n .reduce((acc, p) => {\r\n return acc + p.elementRef.nativeElement.clientHeight;\r\n }, 0);\r\n\r\n setTimeout(() => {\r\n this._renderer.setStyle(\r\n popup.elementRef.nativeElement,\r\n 'transform',\r\n `translateY(calc(${\r\n previousPopupsHeight +\r\n componentRef.instance.elementRef.nativeElement.clientHeight\r\n }px + ${12 * (index + 1)}px))`\r\n );\r\n }, 0);\r\n\r\n popup.updateDistanceTop();\r\n });\r\n\r\n this._popups.unshift(componentRef.instance);\r\n\r\n return componentRef.instance;\r\n }\r\n\r\n public removePopup(popup: ApPopupComponent): void {\r\n const index = this._popups.findIndex((p) => p.id === popup.id);\r\n\r\n if (index < 0) return;\r\n\r\n this._removingPopupIds.add(popup.id!);\r\n\r\n timer(popup.animationDuration / 4)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n const newList = this._popups.filter(\r\n (p) => !this._removingPopupIds.has(p.id!)\r\n );\r\n\r\n for (let i = index; i < newList.length; i++) {\r\n const currentPopup = newList[i];\r\n const previousPopupsHeight = newList\r\n .filter((_, pi) => pi < i)\r\n .reduce((acc, p) => {\r\n return acc + p.elementRef.nativeElement.clientHeight;\r\n }, 0);\r\n\r\n this._renderer.setStyle(\r\n currentPopup.elementRef.nativeElement,\r\n 'transform',\r\n `translateY(calc(${previousPopupsHeight}px + ${12 * i}px))`\r\n );\r\n }\r\n\r\n this._popups = this._popups.filter((p) => p.id !== popup.id);\r\n });\r\n\r\n timer(popup.animationDuration)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this._renderer.removeChild(parent, popup.elementRef.nativeElement);\r\n this._removingPopupIds.delete(popup.id!);\r\n\r\n if (\r\n !this._popups.length &&\r\n this._wrapper &&\r\n !this._removingPopupIds.size\r\n ) {\r\n this._renderer.removeChild(this._document.body, this._wrapper);\r\n this._wrapper = null;\r\n }\r\n });\r\n }\r\n\r\n public clearAll(): void {\r\n if (this._wrapper) {\r\n this._renderer.removeChild(this._document.body, this._wrapper);\r\n }\r\n\r\n this._popups.length = 0;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}