{"version":3,"file":"bravura-ui-tooltip.mjs","sources":["../../../projects/ui/tooltip/tooltip.component.ts","../../../projects/ui/tooltip/tooltip.component.html","../../../projects/ui/tooltip/tooltip.directive.ts","../../../projects/ui/tooltip/bravura-ui-tooltip.ts"],"sourcesContent":["import { A11yModule } from '@angular/cdk/a11y';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n\tChangeDetectionStrategy,\r\n\tComponent,\r\n\tElementRef,\r\n\tinject,\r\n\tInjectionToken,\r\n\tTemplateRef,\r\n\tViewChild,\r\n\tViewContainerRef,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport { TooltipComponent as MatTooltipComponent } from '@angular/material/tooltip';\r\nimport { getTextWidth } from '@bravura/ui/common';\r\n\r\n/**\r\n * @ignore\r\n */\r\ninterface TooltipTemplateContainer {\r\n\ttemplate?: TemplateRef<any>;\r\n\tmessage?: string;\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const BUI_TOOLTIP_TEMPLATE_REF = new InjectionToken<TooltipTemplateContainer>(\r\n\t'@bravura/ui/tooltip/templateContainer'\r\n);\r\n\r\n@Component({\r\n\tselector: 'bui-tooltip-component',\r\n\ttemplateUrl: './tooltip.component.html',\r\n\tstyleUrls: ['./tooltip.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\thost: {\r\n\t\tclass: 'bui-tooltip-component bui-host',\r\n\t\t// Forces the element to have a layout in IE and Edge. This fixes issues where the element\r\n\t\t// won't be rendered if the animations are disabled or there is no web animations polyfill.\r\n\t\t'[style.zoom]': 'isVisible() ? 1 : null',\r\n\t\t'(mouseleave)': '_handleMouseLeave($event)',\r\n\t\t'aria-hidden': 'true'\r\n\t},\r\n\timports: [A11yModule, CommonModule, OverlayModule]\r\n})\r\nexport class TooltipComponent extends MatTooltipComponent {\r\n\tprivate _messageCopy = '';\r\n\r\n\t@ViewChild('tooltip', { static: true })\r\n\t_tooltip!: ElementRef<HTMLElement>;\r\n\r\n\t@ViewChild('tooltipDiv', { static: true })\r\n\tprivate tooltipDiv!: ElementRef<HTMLDivElement>;\r\n\r\n\t@ViewChild('messageCont', { static: true, read: ViewContainerRef })\r\n\tprivate messageCont!: ViewContainerRef;\r\n\r\n\tprivate _tooltipInst = inject(BUI_TOOLTIP_TEMPLATE_REF);\r\n\r\n\tshow(delay: number): void {\r\n\t\tif (this._messageCopy !== this.message && !this._tooltipInst.template) {\r\n\t\t\tthis.tooltipDiv.nativeElement.innerHTML = this.message;\r\n\t\t\tthis._messageCopy = this.message;\r\n\t\t\tconst width = Math.max(Math.sqrt(getTextWidth(this.message) * 40), 360);\r\n\t\t\tthis._tooltip.nativeElement.style.maxWidth = `${width}px`;\r\n\t\t} else if (this._tooltipInst.template) {\r\n\t\t\tthis.messageCont.clear();\r\n\t\t\tconst ref = this.messageCont.createEmbeddedView(this._tooltipInst.template);\r\n\t\t\tref.detectChanges();\r\n\t\t\tthis._tooltipInst.message = this.message = this.tooltipDiv.nativeElement.textContent as string;\r\n\t\t}\r\n\t\tsuper.show(delay);\r\n\t}\r\n}\r\n\r\n(TooltipComponent as any).ɵcmp.styles.push(...(MatTooltipComponent as any).ɵcmp.styles);\r\n","<div\r\n\t#tooltip\r\n\tclass=\"mdc-tooltip mdc-tooltip--shown mat-mdc-tooltip bui-tooltip\"\r\n\t[ngClass]=\"tooltipClass\"\r\n\t(animationend)=\"_handleAnimationEnd($event)\"\r\n\t[class.mdc-tooltip--multiline]=\"_isMultiline\"\r\n>\r\n\t<div #tooltipDiv>\r\n\t\t<ng-container #messageCont></ng-container>\r\n\t</div>\r\n</div>\r\n","import { Directive, ElementRef, HostListener, Input, TemplateRef, forwardRef } from '@angular/core';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { BUI_TOOLTIP_TEMPLATE_REF, TooltipComponent } from './tooltip.component';\n\n/**\n * This directive extends [Angular Material tooltip](https://material.angular.io/components/tooltip/overview), with the additional capability of displaying\n * HTML content in the overlay area.\n *\n * All the other features are identical as those in Angular Material tooltip.\n */\n@Directive({\n\tselector: '[buiTooltip]',\n\texportAs: 'buiTooltip',\n\thost: {\n\t\tclass: 'mat-tooltip-trigger bui-tooltip-trigger'\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: BUI_TOOLTIP_TEMPLATE_REF,\n\t\t\tuseExisting: forwardRef(() => TooltipDirective)\n\t\t}\n\t]\n})\nexport class TooltipDirective extends MatTooltip {\n\tprivate _templateRef?: TemplateRef<any>;\n\tprivate _contentSub: Subscription = new Subject<void>().subscribe();\n\tprivate _contentObs?: Observable<string>;\n\n\tconstructor(elementRef: ElementRef<HTMLElement>) {\n\t\tsuper();\n\t\tconst _self = this as any;\n\t\t_self._tooltipComponent = TooltipComponent;\n\t\tthis.touchGestures = 'off';\n\t\tconst element = elementRef.nativeElement;\n\t\telement.setAttribute('aria-hidden', 'false');\n\t\tif (element.tabIndex === -1) {\n\t\t\telement.tabIndex = 0;\n\t\t\telement.setAttribute('aria-roledescription', 'tooltip');\n\t\t}\n\t}\n\n\t/** Allows the user to define the position of the tooltip relative to the parent element */\n\t@Input()\n\tget buiTooltipPosition(): TooltipPosition {\n\t\treturn this.position;\n\t}\n\tset buiTooltipPosition(value: TooltipPosition) {\n\t\tthis.position = value;\n\t}\n\n\t/** Disables the display of the tooltip. */\n\t@Input()\n\tget buiTooltipDisabled(): boolean {\n\t\treturn this.disabled;\n\t}\n\tset buiTooltipDisabled(value) {\n\t\tthis.disabled = value;\n\t}\n\n\t/** The message to be displayed in the tooltip. */\n\t@Input()\n\tget buiTooltip(): string | TemplateRef<any> | Observable<string> {\n\t\treturn this._templateRef || this.message;\n\t}\n\tset buiTooltip(value) {\n\t\tthis._contentSub.unsubscribe();\n\t\tthis._contentObs = undefined;\n\t\tif (typeof value === 'string') {\n\t\t\tthis.message = value;\n\t\t} else if (value instanceof TemplateRef) {\n\t\t\tthis._templateRef = value;\n\t\t\tif (value) {\n\t\t\t\tthis.message = '[bui-tooltip-template]';\n\t\t\t} else {\n\t\t\t\tthis._templateRef = undefined;\n\t\t\t\tthis.message = '';\n\t\t\t}\n\t\t} else if (value instanceof Observable) {\n\t\t\tthis.message = '...';\n\t\t\tthis._contentObs = value;\n\t\t}\n\t}\n\n\t/** @ignore */\n\tget template(): TemplateRef<any> | undefined {\n\t\treturn this._templateRef;\n\t}\n\n\t/** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n\t@Input()\n\tget buiTooltipClass() {\n\t\treturn this.tooltipClass;\n\t}\n\tset buiTooltipClass(value: string | string[] | Set<string> | { [key: string]: any }) {\n\t\tthis.tooltipClass = value;\n\t}\n\n\t/** @ignore */\n\t@HostListener('click')\n\tclicked() {\n\t\tthis.toggle();\n\t}\n\n\t/** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n\tshow(\n\t\tdelay: number = this.showDelay,\n\t\torigin?:\n\t\t\t| {\n\t\t\t\t\tx: number;\n\t\t\t\t\ty: number;\n\t\t\t  }\n\t\t\t| undefined\n\t): void {\n\t\tif (this._contentObs) {\n\t\t\tthis._contentSub.unsubscribe();\n\t\t\tthis._contentSub = this._contentObs.subscribe(c => {\n\t\t\t\tthis.message = c;\n\t\t\t\tthis._contentSub.unsubscribe();\n\t\t\t\tsuper.show(delay, origin);\n\t\t\t});\n\t\t} else {\n\t\t\tsuper.show(delay, origin);\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis._contentSub.unsubscribe();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MatTooltipComponent"],"mappings":"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"}