primeng
Version:
PrimeNG is an open source UI library for Angular featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeB
1 lines • 10.7 kB
Source Map (JSON)
{"version":3,"file":"primeng-ripple.mjs","sources":["../../src/ripple/style/ripplestyle.ts","../../src/ripple/ripple.ts","../../src/ripple/primeng-ripple.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n/* For PrimeNG */\n.p-ripple {\n overflow: hidden;\n position: relative;\n}\n\n.p-ink {\n display: block;\n position: absolute;\n background: ${dt('ripple.background')};\n border-radius: 100%;\n transform: scale(0);\n}\n\n.p-ink-active {\n animation: ripple 0.4s linear;\n}\n\n.p-ripple-disabled .p-ink {\n display: none !important;\n}\n\n@keyframes ripple {\n 100% {\n opacity: 0;\n transform: scale(2.5);\n }\n}\n`;\n\nconst classes = {\n root: 'p-ink'\n};\n\n@Injectable()\nexport class RippleStyle extends BaseStyle {\n name = 'ripple';\n\n theme = theme;\n\n classes = classes;\n}\n\n/**\n *\n * Ripple directive adds ripple effect to the host element.\n *\n * [Live Demo](https://www.primeng.org/ripple)\n *\n * @module ripplestyle\n *\n */\n\nexport enum RippleClasses {\n /**\n * Class name of the root element\n */\n root = 'p-ink'\n}\n\nexport interface RippleStyle extends BaseStyle {}\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Directive, effect, inject, NgModule, NgZone, OnDestroy } from '@angular/core';\nimport { addClass, getHeight, getOffset, getOuterHeight, getOuterWidth, getWidth, removeClass, remove as utils_remove } from '@primeuix/utils';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { VoidListener } from 'primeng/ts-helpers';\nimport { RippleStyle } from './style/ripplestyle';\n\n/**\n * Ripple directive adds ripple effect to the host element.\n * @group Components\n */\n@Directive({\n selector: '[pRipple]',\n host: {\n class: 'p-ripple'\n },\n standalone: true,\n providers: [RippleStyle]\n})\nexport class Ripple extends BaseComponent implements AfterViewInit, OnDestroy {\n zone: NgZone = inject(NgZone);\n\n _componentStyle = inject(RippleStyle);\n\n animationListener: VoidListener;\n\n mouseDownListener: VoidListener;\n\n timeout: any;\n\n constructor() {\n super();\n effect(() => {\n if (isPlatformBrowser(this.platformId)) {\n if (this.config.ripple()) {\n this.zone.runOutsideAngular(() => {\n this.create();\n this.mouseDownListener = this.renderer.listen(this.el.nativeElement, 'mousedown', this.onMouseDown.bind(this));\n });\n } else {\n this.remove();\n }\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n }\n\n onMouseDown(event: MouseEvent) {\n let ink = this.getInk();\n if (!ink || this.document.defaultView?.getComputedStyle(ink, null).display === 'none') {\n return;\n }\n\n removeClass(ink, 'p-ink-active');\n if (!getHeight(ink) && !getWidth(ink)) {\n let d = Math.max(getOuterWidth(this.el.nativeElement), getOuterHeight(this.el.nativeElement));\n ink.style.height = d + 'px';\n ink.style.width = d + 'px';\n }\n\n let offset = <any>getOffset(this.el.nativeElement);\n let x = event.pageX - offset.left + this.document.body.scrollTop - getWidth(ink) / 2;\n let y = event.pageY - offset.top + this.document.body.scrollLeft - getHeight(ink) / 2;\n\n this.renderer.setStyle(ink, 'top', y + 'px');\n this.renderer.setStyle(ink, 'left', x + 'px');\n addClass(ink, 'p-ink-active');\n\n this.timeout = setTimeout(() => {\n let ink = this.getInk();\n if (ink) {\n removeClass(ink, 'p-ink-active');\n }\n }, 401);\n }\n\n getInk() {\n const children = this.el.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n if (typeof children[i].className === 'string' && children[i].className.indexOf('p-ink') !== -1) {\n return children[i];\n }\n }\n return null;\n }\n\n resetInk() {\n let ink = this.getInk();\n if (ink) {\n removeClass(ink, 'p-ink-active');\n }\n }\n\n onAnimationEnd(event: Event) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n removeClass(event.currentTarget as any, 'p-ink-active');\n }\n\n create() {\n let ink = this.renderer.createElement('span');\n this.renderer.addClass(ink, 'p-ink');\n this.renderer.appendChild(this.el.nativeElement, ink);\n this.renderer.setAttribute(ink, 'aria-hidden', 'true');\n this.renderer.setAttribute(ink, 'role', 'presentation');\n\n if (!this.animationListener) {\n this.animationListener = this.renderer.listen(ink, 'animationend', this.onAnimationEnd.bind(this));\n }\n }\n\n remove() {\n let ink = this.getInk();\n if (ink) {\n this.mouseDownListener && this.mouseDownListener();\n this.animationListener && this.animationListener();\n this.mouseDownListener = null;\n this.animationListener = null;\n\n utils_remove(ink);\n }\n }\n\n ngOnDestroy() {\n if (this.config && this.config.ripple()) {\n this.remove();\n }\n\n super.ngOnDestroy();\n }\n}\n\n@NgModule({\n imports: [Ripple],\n exports: [Ripple]\n})\nexport class RippleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["utils_remove"],"mappings":"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"}