@alyle/ui
Version:
Minimal Design, a set of components for Angular
1 lines • 18.1 kB
Source Map (JSON)
{"version":3,"file":"alyle-ui-tooltip.mjs","sources":["../../../lib/tooltip/tooltip.ts","../../../lib/tooltip/tooltip.module.ts","../../../lib/tooltip/alyle-ui-tooltip.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n TemplateRef,\n OnInit,\n Renderer2,\n InjectionToken,\n Optional,\n Inject\n } from '@angular/core';\nimport {\n LyFocusState,\n LyOverlay,\n LyTheme2,\n OverlayFactory,\n Placement,\n ThemeVariables,\n XPosition,\n YPosition,\n Positioning,\n StyleCollection,\n LyClasses,\n StyleTemplate,\n ThemeRef\n } from '@alyle/ui';\nimport { Subscription } from 'rxjs';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\n\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = normalizePassiveListenerOptions({passive: true});\n\nexport interface LyTooltipDefaultOptions {\n /** Default delay when the tooltip is shown. */\n showDelay: number;\n\n /** Default delay when the tooltip is hidden. */\n hideDelay: number;\n\n /** Default delay when hiding the tooltip on a touch device. */\n touchendHideDelay: number;\n}\n\nexport const LY_TOOLTIP_DEFAULT_OPTIONS =\n new InjectionToken<LyTooltipDefaultOptions>('LY_TOOLTIP_DEFAULT_OPTIONS');\n\n/** Possible positions for a tooltip. */\nexport type LyTooltipPosition = 'left' | 'right' | 'above' | 'below' | 'before' | 'after';\n\nexport interface LyTooltipTheme {\n /** Styles for Tooltip Component */\n root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyTooltipVariables {\n tooltip?: LyTooltipTheme;\n}\n\nconst DEFAULT_PLACEMENT = YPosition.below;\nconst STYLE_PRIORITY = -2;\nexport const STYLES = (theme: ThemeVariables & LyTooltipVariables, ref: ThemeRef) => {\n const __ = ref.selectorsOf(STYLES);\n return {\n $priority: STYLE_PRIORITY,\n root: () => (theme.tooltip\n && theme.tooltip.root\n && (theme.tooltip.root instanceof StyleCollection\n ? theme.tooltip.root.setTransformer(fn => fn(__)).css\n : theme.tooltip.root(__))\n )\n };\n};\n\n@Directive({\n selector: '[lyTooltip]',\n exportAs: 'lyTooltip',\n standalone: false\n})\nexport class LyTooltip implements OnInit, OnDestroy {\n /** @docs-private */\n readonly classes = this._theme.renderStyleSheet(STYLES);\n private _tooltip: string | TemplateRef<any> | null;\n private _tooltipOverlay: OverlayFactory | null;\n private _listeners: (readonly [string, EventListenerOrEventListenerObject])[] = [];\n private _scrollSub: Subscription;\n private _scrollVal = 0;\n private _showTimeoutId: number | null;\n private _hideTimeoutId: number | null;\n @Input('lyTooltip')\n set tooltip(val: string | TemplateRef<any> | null) {\n this._tooltip = val;\n }\n get tooltip() {\n return this._tooltip;\n }\n\n @Input('lyTooltipShowDelay')\n get showDelay(): number {\n return this._showDelay;\n }\n set showDelay(value: NumberInput) {\n this._showDelay = coerceNumberProperty(value);\n }\n private _showDelay = this._defaults?.showDelay ?? 0;\n\n @Input('lyTooltipHideDelay')\n get hideDelay(): number {\n return this._hideDelay;\n }\n set hideDelay(value: NumberInput) {\n this._hideDelay = coerceNumberProperty(value);\n }\n private _hideDelay = this._defaults?.hideDelay ?? 0;\n\n\n @Input('lyTooltipPlacement') placement: Placement;\n @Input('lyTooltipXPosition') xPosition: `${XPosition}`;\n @Input('lyTooltipYPosition') yPosition: `${YPosition}`;\n constructor(\n private _theme: LyTheme2,\n private _overlay: LyOverlay,\n private _el: ElementRef,\n private _renderer: Renderer2,\n private _cd: ChangeDetectorRef,\n private _focusState: LyFocusState,\n @Optional() @Inject(LY_TOOLTIP_DEFAULT_OPTIONS)\n private _defaults: LyTooltipDefaultOptions,\n ngZone: NgZone,\n scroll: ScrollDispatcher,\n private _platform: Platform,\n ) {\n if (_platform.isBrowser) {\n const element: HTMLElement = _el.nativeElement;\n if (this._platformSupportsMouseEvents()) {\n this._listeners.push(['mouseenter', () => this.show()]);\n this._listeners.push(['mouseleave', () => this.hide()]);\n } else {\n this._listeners.push(['touchstart', () => this.show()]);\n this._listeners.push(['touchend', () => this.hide(this._defaults?.touchendHideDelay ?? 1500)]);\n this._listeners.push(['touchcancel', () => this.hide(this._defaults?.touchendHideDelay ?? 1500)]);\n }\n\n this._addListeners(this._listeners);\n\n this._scrollSub = scroll.scrolled().subscribe(() => {\n if (this._tooltipOverlay) {\n this._scrollVal++;\n if (this._scrollVal > 15) {\n ngZone.run(() => this.hide(0));\n this._scrollVal = 0;\n }\n }\n });\n\n _focusState.listen(element)!.subscribe(ev => {\n if (ev === 'keyboard') {\n ngZone.run(() => this.show());\n } else if (ev == null) {\n ngZone.run(() => this.hide());\n }\n });\n }\n }\n\n ngOnInit() {\n if (!this.placement && !this.xPosition && !this.yPosition) {\n this.placement = DEFAULT_PLACEMENT;\n }\n }\n\n ngOnDestroy() {\n this.hide(0);\n\n // Clean up the event listeners set in the constructor\n this._listeners.forEach(([event, listener]) => {\n this._el.nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n });\n this._listeners.length = 0;\n\n if (this._scrollSub) {\n this._scrollSub.unsubscribe();\n }\n\n this._focusState.unlisten(this._el);\n }\n\n show(delay = this.showDelay) {\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId);\n this._hideTimeoutId = null;\n }\n if (!this._platformSupportsMouseEvents()) {\n this._updatePosition();\n }\n if (!this._tooltipOverlay && this.tooltip && !this._showTimeoutId) {\n const tooltipRef = this.tooltip;\n this._showTimeoutId = setTimeout(() => {\n // const rect = this._el.nativeElement.getBoundingClientRect();\n const tooltip = this._tooltipOverlay = this._overlay.create(tooltipRef, undefined, {\n styles: {\n // top: rect.y,\n // left: rect.x\n },\n onResizeScroll: this._updatePosition.bind(this),\n classes: [\n this.classes.root,\n this._theme.addStyle('LyTooltip', (theme: ThemeVariables) => ({\n borderRadius: '4px',\n fontSize: '10px',\n padding: '6px 8px',\n opacity: 0,\n transition: `opacity ${theme.animations.curves.standard} 300ms`,\n left: 0,\n margin: '8px',\n pointerEvents: 'all',\n [theme.getBreakpoint('XSmall')]: {\n padding: '8px 16px',\n fontSize: '14px',\n }\n }), undefined, undefined, STYLE_PRIORITY)\n ],\n hasBackdrop: false\n });\n this._updatePosition();\n\n this._theme.requestAnimationFrame(() => {\n this._theme.addStyle('lyTooltip:open', ({\n opacity: 1,\n }), tooltip.containerElement, undefined, STYLE_PRIORITY);\n });\n\n this._showTimeoutId = null;\n this._markForCheck();\n }, delay) as any;\n }\n }\n\n hide(delay = this.hideDelay) {\n const tooltipOverlay = this._tooltipOverlay;\n if (this._showTimeoutId) {\n clearTimeout(this._showTimeoutId);\n this._showTimeoutId = null;\n }\n if (!this._platformSupportsMouseEvents()) {\n this._updatePosition();\n }\n if (tooltipOverlay && !this._hideTimeoutId) {\n this._hideTimeoutId = setTimeout(() => {\n this._renderer.removeClass(tooltipOverlay.containerElement, this._theme.addStyle('lyTooltip:open', null));\n setTimeout(() => tooltipOverlay.destroy(), 300);\n this._tooltipOverlay = null;\n\n this._hideTimeoutId = null;\n this._markForCheck();\n }, delay) as any;\n }\n }\n\n toggle() {\n if (this._tooltipOverlay) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private _markForCheck() {\n this._cd.markForCheck();\n }\n\n private _updatePosition() {\n const tooltip = this._tooltipOverlay;\n if (tooltip) {\n const position = new Positioning(\n this.placement, this.xPosition,\n this.yPosition,\n this._el.nativeElement,\n tooltip.containerElement,\n this._theme.variables,\n 13\n );\n tooltip.containerElement.style.transform = `translate3d(${position.x}px,${position.y}px,0)`;\n }\n }\n\n private _addListeners(listeners: (readonly [string, EventListenerOrEventListenerObject])[]) {\n listeners.forEach(([event, listener]) => {\n this._el.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n });\n }\n\n private _platformSupportsMouseEvents() {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LyTooltip } from './tooltip';\nimport { LyOverlayModule } from '@alyle/ui';\n\n@NgModule({\n imports: [LyOverlayModule],\n declarations: [LyTooltip],\n exports: [LyTooltip]\n})\nexport class LyTooltipModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}