@spartan-ng/brain 0.0.1-alpha.673 → 0.0.1-alpha.674

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.
@@ -201,6 +201,25 @@ const BRN_TOOLTIP_POSITIONS_MAP = {
201
201
  offsetX: 8,
202
202
  },
203
203
  };
204
+ /** Fallback order for each preferred position when it doesn't fit in the viewport. */
205
+ const BRN_TOOLTIP_FALLBACK_POSITIONS = {
206
+ top: ['bottom', 'right', 'left'],
207
+ bottom: ['top', 'right', 'left'],
208
+ left: ['right', 'top', 'bottom'],
209
+ right: ['left', 'top', 'bottom'],
210
+ };
211
+ /** Map a resolved CDK ConnectedPosition back to a BrnTooltipPosition, or null if no match. */
212
+ function resolveTooltipPosition(pair) {
213
+ for (const [pos, config] of Object.entries(BRN_TOOLTIP_POSITIONS_MAP)) {
214
+ if (pair.originX === config.originX &&
215
+ pair.originY === config.originY &&
216
+ pair.overlayX === config.overlayX &&
217
+ pair.overlayY === config.overlayY) {
218
+ return pos;
219
+ }
220
+ }
221
+ return null;
222
+ }
204
223
 
205
224
  const defaultOptions = {
206
225
  showDelay: 150,
@@ -236,6 +255,7 @@ class BrnTooltip {
236
255
  _componentRef = undefined;
237
256
  _overlayRef = undefined;
238
257
  _ariaEffectRef = undefined;
258
+ _positionChangeSub = undefined;
239
259
  tooltipDisabled = input(false, ...(ngDevMode ? [{ debugName: "tooltipDisabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
240
260
  mutableTooltipDisabled = linkedSignal(this.tooltipDisabled, ...(ngDevMode ? [{ debugName: "mutableTooltipDisabled" }] : []));
241
261
  position = input(this._config.position ?? 'top', ...(ngDevMode ? [{ debugName: "position" }] : []));
@@ -294,16 +314,22 @@ class BrnTooltip {
294
314
  _updatePosition() {
295
315
  const strategy = this._overlayRef?.getConfig().positionStrategy;
296
316
  if (strategy) {
297
- strategy.withPositions([this._getAdjustedPosition()]);
317
+ strategy.withPositions(this._getAllPositions());
298
318
  }
299
319
  }
300
320
  _buildPositionStrategy() {
301
321
  return this._overlayPositionBuilder
302
322
  .flexibleConnectedTo(this._elementRef)
303
- .withPositions([this._getAdjustedPosition()]);
323
+ .withPositions(this._getAllPositions())
324
+ .withViewportMargin(8);
325
+ }
326
+ /** Build [preferred, ...fallbacks] position array for viewport-aware auto-flip. */
327
+ _getAllPositions() {
328
+ const preferred = this.position();
329
+ return [preferred, ...BRN_TOOLTIP_FALLBACK_POSITIONS[preferred]].map((pos) => this._getAdjustedPositionFor(pos));
304
330
  }
305
- _getAdjustedPosition() {
306
- const position = BRN_TOOLTIP_POSITIONS_MAP[this.position()];
331
+ _getAdjustedPositionFor(pos) {
332
+ const position = BRN_TOOLTIP_POSITIONS_MAP[pos];
307
333
  const isLtr = this._dir.value !== 'rtl';
308
334
  return {
309
335
  ...position,
@@ -363,6 +389,21 @@ class BrnTooltip {
363
389
  });
364
390
  this._componentRef?.instance.state.set('opened');
365
391
  this._componentRef?.instance.setProps(this._tooltipText(), this.position(), this._config.tooltipContentClasses, this._config.arrowClasses(this.position()), this._config.svgClasses);
392
+ // Subscribe to position changes for the lifetime of the tooltip so that
393
+ // arrow direction and CSS classes stay in sync when the CDK flips the
394
+ // overlay (initial show, viewport resize, scroll, etc.).
395
+ const strategy = this._overlayRef?.getConfig().positionStrategy;
396
+ if (strategy && this._componentRef) {
397
+ const compRef = this._componentRef;
398
+ this._positionChangeSub = strategy.positionChanges
399
+ .pipe(takeUntilDestroyed(this._destroyRef))
400
+ .subscribe((change) => {
401
+ const resolved = resolveTooltipPosition(change.connectionPair);
402
+ if (resolved) {
403
+ compRef.instance.setProps(null, resolved, this._config.tooltipContentClasses, this._config.arrowClasses(resolved), this._config.svgClasses);
404
+ }
405
+ });
406
+ }
366
407
  runInInjectionContext(this._injector, () => {
367
408
  this._ariaEffectRef = effect(() => {
368
409
  const tooltipId = this._componentRef?.instance.id();
@@ -379,6 +420,8 @@ class BrnTooltip {
379
420
  if (!this._componentRef || this._tooltipHovered)
380
421
  return;
381
422
  this._clearAriaDescribedBy();
423
+ this._positionChangeSub?.unsubscribe();
424
+ this._positionChangeSub = undefined;
382
425
  this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');
383
426
  this._componentRef.instance.state.set('closed');
384
427
  this.hide.emit();
@@ -404,5 +447,5 @@ const BrnTooltipImports = [BrnTooltip, BrnTooltipContent];
404
447
  * Generated bundle index. Do not edit.
405
448
  */
406
449
 
407
- export { BrnTooltip, BrnTooltipContent, BrnTooltipImports, defaultOptions, injectBrnTooltipDefaultOptions, provideBrnTooltipDefaultOptions };
450
+ export { BRN_TOOLTIP_FALLBACK_POSITIONS, BrnTooltip, BrnTooltipContent, BrnTooltipImports, defaultOptions, injectBrnTooltipDefaultOptions, provideBrnTooltipDefaultOptions, resolveTooltipPosition };
408
451
  //# sourceMappingURL=spartan-ng-brain-tooltip.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-tooltip.mjs","sources":["../../../../libs/brain/tooltip/src/lib/brn-tooltip-string-template-outlet.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-content.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-position.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.token.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.ts","../../../../libs/brain/tooltip/src/index.ts","../../../../libs/brain/tooltip/src/spartan-ng-brain-tooltip.ts"],"sourcesContent":["import {\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\ttype EmbeddedViewRef,\n\tinject,\n\tinput,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\n\nexport function isTemplateRef<C = unknown>(value: unknown): value is TemplateRef<C> {\n\treturn value instanceof TemplateRef;\n}\n\nexport interface BrnTemplateOutletContext {\n\t$implicit: unknown;\n\t[key: string]: unknown;\n}\n\n@Directive({\n\tselector: '[brnTooltipStringTemplateOutlet]',\n\texportAs: 'brnTooltipStringTemplateOutlet',\n})\nexport class BrnTooltipStringTemplateOutlet<T = unknown> implements OnDestroy {\n\tprivate readonly _viewContainer = inject(ViewContainerRef);\n\tprivate readonly _templateRef = inject(TemplateRef<void>);\n\n\tprivate _embeddedViewRef: EmbeddedViewRef<BrnTemplateOutletContext> | null = null;\n\tprivate readonly _context = {} as BrnTemplateOutletContext;\n\n\tprivate _isFirstChange = true;\n\tprivate _lastOutletWasTemplate = false;\n\tprivate _lastTemplateRef: TemplateRef<void> | null = null;\n\tprivate _lastContext?: BrnTemplateOutletContext;\n\n\tpublic readonly brnTooltipStringTemplateOutletContext = input<BrnTemplateOutletContext | undefined>(undefined);\n\tpublic readonly brnTooltipStringTemplateOutlet = input.required<T | TemplateRef<void>>();\n\n\t_hasContextShapeChanged(context: BrnTemplateOutletContext | undefined): boolean {\n\t\tif (!context) {\n\t\t\treturn false;\n\t\t}\n\t\tconst prevCtxKeys = Object.keys(this._lastContext || {});\n\t\tconst currCtxKeys = Object.keys(context || {});\n\n\t\tif (prevCtxKeys.length === currCtxKeys.length) {\n\t\t\tfor (const propName of currCtxKeys) {\n\t\t\t\tif (!prevCtxKeys.includes(propName)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t_shouldViewBeRecreated(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): boolean {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\n\t\tconst shouldOutletRecreate =\n\t\t\tthis._isFirstChange ||\n\t\t\tisTemplate !== this._lastOutletWasTemplate ||\n\t\t\t(isTemplate && stringTemplateOutlet !== this._lastTemplateRef);\n\n\t\tconst shouldContextRecreate = this._hasContextShapeChanged(stringTemplateOutletContext);\n\t\treturn shouldContextRecreate || shouldOutletRecreate;\n\t}\n\n\t_updateTrackingState(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\t\tif (this._isFirstChange && !isTemplate) {\n\t\t\tthis._isFirstChange = false;\n\t\t}\n\n\t\tif (stringTemplateOutletContext !== undefined) {\n\t\t\tthis._lastContext = stringTemplateOutletContext;\n\t\t}\n\n\t\tthis._lastOutletWasTemplate = isTemplate;\n\t\tthis._lastTemplateRef = isTemplate ? stringTemplateOutlet : null;\n\t}\n\n\tprivate readonly _viewEffect: EffectRef = effect(() => {\n\t\tconst stringTemplateOutlet = this.brnTooltipStringTemplateOutlet();\n\t\tconst stringTemplateOutletContext = this.brnTooltipStringTemplateOutletContext();\n\n\t\tif (!this._isFirstChange && isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._isFirstChange = true;\n\t\t}\n\n\t\tif (!isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._context['$implicit'] = stringTemplateOutlet as T;\n\t\t}\n\n\t\tconst recreateView = this._shouldViewBeRecreated(stringTemplateOutlet, stringTemplateOutletContext);\n\t\tthis._updateTrackingState(stringTemplateOutlet, stringTemplateOutletContext);\n\n\t\tif (recreateView) {\n\t\t\tthis._recreateView(stringTemplateOutlet as TemplateRef<BrnTemplateOutletContext>, stringTemplateOutletContext);\n\t\t} else {\n\t\t\tthis._updateContext(stringTemplateOutlet, stringTemplateOutletContext);\n\t\t}\n\t});\n\n\tprivate _recreateView(\n\t\toutlet: TemplateRef<BrnTemplateOutletContext>,\n\t\tcontext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tthis._viewContainer.clear();\n\t\tif (isTemplateRef(outlet)) {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(outlet, context);\n\t\t} else {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n\t\t}\n\t}\n\n\tprivate _updateContext(outlet: TemplateRef<void> | T, context: BrnTemplateOutletContext | undefined): void {\n\t\tconst newCtx = isTemplateRef(outlet) ? context : this._context;\n\t\tlet oldCtx = this._embeddedViewRef?.context;\n\n\t\tif (!oldCtx) {\n\t\t\toldCtx = newCtx;\n\t\t} else if (newCtx && typeof newCtx === 'object') {\n\t\t\tfor (const propName of Object.keys(newCtx)) {\n\t\t\t\toldCtx[propName] = newCtx[propName];\n\t\t\t}\n\t\t}\n\t\tthis._lastContext = oldCtx;\n\t}\n\n\tstatic ngTemplateContextGuard<T>(\n\t\t_dir: BrnTooltipStringTemplateOutlet<T>,\n\t\t_ctx: unknown,\n\t): _ctx is BrnTemplateOutletContext {\n\t\treturn true;\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis._viewEffect.destroy();\n\t\tthis._viewContainer.clear();\n\t\tthis._embeddedViewRef = null;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { BrnTooltipPosition } from './brn-tooltip-position';\nimport { BrnTooltipStringTemplateOutlet } from './brn-tooltip-string-template-outlet';\nimport { BrnTooltipType } from './brn-tooltip-type';\n\nlet uniqueId = 0;\n\n@Component({\n\timports: [BrnTooltipStringTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class]': '_tooltipClass()',\n\t\t'[attr.id]': 'id()',\n\t\t'[attr.data-side]': '_position()',\n\t\t'[attr.data-state]': 'state()',\n\t\trole: 'tooltip',\n\t},\n\ttemplate: `\n\t\t<ng-container *brnTooltipStringTemplateOutlet=\"_tooltipText()\">{{ _tooltipText() }}</ng-container>\n\n\t\t<span [class]=\"_arrowClass()\">\n\t\t\t<svg [class]=\"_svgClass()\" width=\"10\" height=\"5\" viewBox=\"0 0 30 10\" preserveAspectRatio=\"none\">\n\t\t\t\t<polygon points=\"0,0 30,0 15,10\" />\n\t\t\t</svg>\n\t\t</span>\n\t`,\n})\nexport class BrnTooltipContent {\n\tpublic readonly id = input<string>(`brn-tooltip-${++uniqueId}`);\n\tpublic readonly state = signal<'closed' | 'opened'>('closed');\n\n\tprotected readonly _tooltipClass = signal<ClassValue>('');\n\tprotected readonly _arrowClass = signal<ClassValue>('');\n\tprotected readonly _svgClass = signal<ClassValue>('');\n\n\tprotected readonly _position = signal<BrnTooltipPosition>('top');\n\tprotected readonly _tooltipText = signal<BrnTooltipType>(null);\n\n\tpublic setProps(\n\t\ttooltipText: BrnTooltipType,\n\t\tposition: BrnTooltipPosition,\n\t\ttooltipClasses: ClassValue,\n\t\tarrowClasses: ClassValue,\n\t\tsvgClasses: ClassValue,\n\t): void {\n\t\tif (tooltipText) {\n\t\t\tthis._tooltipText.set(tooltipText);\n\t\t}\n\t\tthis._position.set(position);\n\n\t\tthis._tooltipClass.set(tooltipClasses);\n\t\tthis._arrowClass.set(arrowClasses);\n\t\tthis._svgClass.set(svgClasses);\n\t}\n}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const BRN_TOOLTIP_POSITIONS_MAP: Record<BrnTooltipPosition, ConnectedPosition> = {\n\ttop: {\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t\toffsetY: -8,\n\t},\n\tbottom: {\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t\toffsetY: 8,\n\t},\n\tleft: {\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t\toffsetX: -8,\n\t},\n\tright: {\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t\toffsetX: 8,\n\t},\n};\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport { type ClassValue } from 'clsx';\nimport { type BrnTooltipPosition } from './brn-tooltip-position';\n\nexport interface BrnTooltipOptions {\n\t/** Default delay when the tooltip is shown. */\n\tshowDelay: number;\n\t/** Default delay when the tooltip is hidden. */\n\thideDelay: number;\n\t/** Default position for tooltips. */\n\tposition?: BrnTooltipPosition;\n\t/** Additional classes for the SVG element in the tooltip arrow. */\n\tsvgClasses: ClassValue;\n\t/** Additional classes for the tooltip arrow element based on position. */\n\tarrowClasses: (position: BrnTooltipPosition) => ClassValue;\n\t/** Additional classes for the tooltip content element. */\n\ttooltipContentClasses: ClassValue;\n}\n\nexport const defaultOptions: BrnTooltipOptions = {\n\tshowDelay: 150,\n\thideDelay: 100,\n\tsvgClasses: '',\n\tarrowClasses: () => '',\n\ttooltipContentClasses: '',\n};\n\nconst BRN_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<BrnTooltipOptions>('brn-tooltip-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnTooltipDefaultOptions(options: Partial<BrnTooltipOptions>): ValueProvider {\n\treturn { provide: BRN_TOOLTIP_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnTooltipDefaultOptions(): BrnTooltipOptions {\n\treturn inject(BRN_TOOLTIP_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\ttype ComponentRef,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\tRenderer2,\n\trunInInjectionContext,\n\ttype TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { of, Subject, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BrnTooltipContent } from './brn-tooltip-content';\nimport { BRN_TOOLTIP_POSITIONS_MAP, BrnTooltipPosition } from './brn-tooltip-position';\nimport { BrnTooltipType } from './brn-tooltip-type';\nimport { injectBrnTooltipDefaultOptions } from './brn-tooltip.token';\n\ninterface DelayConfig {\n\tisShow: boolean;\n\tdelay: number;\n}\n\n@Directive({ selector: '[brnTooltip]', exportAs: 'brnTooltip' })\nexport class BrnTooltip {\n\tprivate readonly _config = injectBrnTooltipDefaultOptions();\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _dir = inject(Directionality);\n\n\tprivate _tooltipHovered = false;\n\tprivate _listenersRefs: (() => void)[] = [];\n\tprivate _delaySubject: Subject<DelayConfig> | undefined = undefined;\n\tprivate _componentRef: ComponentRef<BrnTooltipContent> | undefined = undefined;\n\tprivate _overlayRef: OverlayRef | undefined = undefined;\n\tprivate _ariaEffectRef: ReturnType<typeof effect> | undefined = undefined;\n\n\tpublic readonly tooltipDisabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tpublic readonly mutableTooltipDisabled = linkedSignal(this.tooltipDisabled);\n\n\tpublic readonly position = input<BrnTooltipPosition>(this._config.position ?? 'top');\n\tpublic readonly brnTooltip = input<BrnTooltipType>(null);\n\tpublic readonly showDelay = input<number, number>(this._config.showDelay, { transform: numberAttribute });\n\tpublic readonly hideDelay = input<number, number>(this._config.hideDelay, { transform: numberAttribute });\n\n\tpublic readonly show = output<void>();\n\tpublic readonly hide = output<void>();\n\n\tprivate readonly _tooltipText = computed<string | TemplateRef<void>>(() => {\n\t\tlet tooltipText = this.brnTooltip();\n\t\tif (!tooltipText) {\n\t\t\treturn '';\n\t\t} else if (typeof tooltipText === 'string') {\n\t\t\ttooltipText = tooltipText.trim();\n\t\t}\n\t\treturn tooltipText;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._overlayRef = this._overlay.create({\n\t\t\t\tdirection: this._dir,\n\t\t\t\tpositionStrategy: this._buildPositionStrategy(),\n\t\t\t});\n\n\t\t\tthis._dir.change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\t\tif (this._overlayRef) {\n\t\t\t\t\tthis._updatePosition();\n\t\t\t\t\tif (this._overlayRef.hasAttached()) {\n\t\t\t\t\t\tthis._overlayRef.updatePosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\tif (!this._overlayRef) return;\n\t\t\t\tthis._setupDelayMechanism();\n\t\t\t\tthis._cleanupTriggerEvents();\n\t\t\t\tthis._initTriggers();\n\t\t\t\tthis._listenersRefs = [\n\t\t\t\t\t...this._listenersRefs,\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseenter', () => (this._tooltipHovered = true)),\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseleave', () => {\n\t\t\t\t\t\tthis._tooltipHovered = false;\n\t\t\t\t\t\tthis.delay(false, this.hideDelay());\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t});\n\t\t});\n\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._clearAriaDescribedBy();\n\t\t\tthis._delaySubject?.complete();\n\t\t\tthis._cleanupTriggerEvents();\n\t\t\tthis._overlayRef?.dispose();\n\t\t});\n\t}\n\n\tprivate _updatePosition(): void {\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n\t\tif (strategy) {\n\t\t\tstrategy.withPositions([this._getAdjustedPosition()]);\n\t\t}\n\t}\n\n\tprivate _buildPositionStrategy() {\n\t\treturn this._overlayPositionBuilder\n\t\t\t.flexibleConnectedTo(this._elementRef)\n\t\t\t.withPositions([this._getAdjustedPosition()]);\n\t}\n\n\tprivate _getAdjustedPosition(): ConnectedPosition {\n\t\tconst position = BRN_TOOLTIP_POSITIONS_MAP[this.position()];\n\t\tconst isLtr = this._dir.value !== 'rtl';\n\n\t\treturn {\n\t\t\t...position,\n\t\t\toffsetX: position.offsetX != null ? (isLtr ? position.offsetX : -position.offsetX) : undefined,\n\t\t};\n\t}\n\n\tprivate _initTriggers() {\n\t\tthis._initScrollListener();\n\t\tthis._initHoverListeners();\n\t}\n\n\tprivate _initHoverListeners(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseenter', () => this.delay(true, this.showDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this.delay(false, this.hideDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'focus', () => this.delay(true, this.showDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'blur', () => this.delay(false, this.hideDelay())),\n\t\t];\n\t}\n\n\tprivate _initScrollListener(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._document.defaultView, 'scroll', () => this._hide()),\n\t\t];\n\t}\n\n\tprivate _cleanupTriggerEvents(): void {\n\t\tfor (const eventRef of this._listenersRefs) {\n\t\t\teventRef();\n\t\t}\n\t\tthis._listenersRefs = [];\n\t}\n\n\tprivate delay(isShow: boolean, delay = -1): void {\n\t\tthis._delaySubject?.next({ isShow, delay });\n\t}\n\n\tprivate _setupDelayMechanism(): void {\n\t\tthis._delaySubject?.complete();\n\t\tthis._delaySubject = new Subject<DelayConfig>();\n\n\t\tthis._delaySubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap((config) => (config.delay < 0 ? of(config) : timer(config.delay).pipe(map(() => config)))),\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t)\n\t\t\t.subscribe((config) => {\n\t\t\t\tif (config.isShow) {\n\t\t\t\t\tthis._show();\n\t\t\t\t} else {\n\t\t\t\t\tthis._hide();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _show(): void {\n\t\tif (this._componentRef || !this._tooltipText() || this.mutableTooltipDisabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltipPortal = new ComponentPortal(BrnTooltipContent);\n\t\tthis._componentRef = this._overlayRef?.attach(tooltipPortal);\n\t\tthis._componentRef?.onDestroy(() => {\n\t\t\tthis._componentRef = undefined;\n\t\t});\n\t\tthis._componentRef?.instance.state.set('opened');\n\t\tthis._componentRef?.instance.setProps(\n\t\t\tthis._tooltipText(),\n\t\t\tthis.position(),\n\t\t\tthis._config.tooltipContentClasses,\n\t\t\tthis._config.arrowClasses(this.position()),\n\t\t\tthis._config.svgClasses,\n\t\t);\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._ariaEffectRef = effect(() => {\n\t\t\t\tconst tooltipId = this._componentRef?.instance.id();\n\t\t\t\tif (tooltipId) {\n\t\t\t\t\tthis._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', tooltipId);\n\t\t\t\t\tthis._ariaEffectRef?.destroy();\n\t\t\t\t\tthis._ariaEffectRef = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.show.emit();\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._componentRef || this._tooltipHovered) return;\n\t\tthis._clearAriaDescribedBy();\n\n\t\tthis._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\t\tthis._componentRef.instance.state.set('closed');\n\t\tthis.hide.emit();\n\t\tthis._overlayRef?.detach();\n\t}\n\n\tprivate _clearAriaDescribedBy(): void {\n\t\tif (this._ariaEffectRef) {\n\t\t\tthis._ariaEffectRef.destroy();\n\t\t\tthis._ariaEffectRef = undefined;\n\t\t}\n\t}\n}\n","import { BrnTooltip } from './lib/brn-tooltip';\nimport { BrnTooltipContent } from './lib/brn-tooltip-content';\n\nexport * from './lib/brn-tooltip';\nexport * from './lib/brn-tooltip-content';\nexport { BrnTooltipPosition } from './lib/brn-tooltip-position';\nexport * from './lib/brn-tooltip-type';\nexport * from './lib/brn-tooltip.token';\n\nexport const BrnTooltipImports = [BrnTooltip, BrnTooltipContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-tooltip.mjs","sources":["../../../../libs/brain/tooltip/src/lib/brn-tooltip-string-template-outlet.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-content.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-position.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.token.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.ts","../../../../libs/brain/tooltip/src/index.ts","../../../../libs/brain/tooltip/src/spartan-ng-brain-tooltip.ts"],"sourcesContent":["import {\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\ttype EmbeddedViewRef,\n\tinject,\n\tinput,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\n\nexport function isTemplateRef<C = unknown>(value: unknown): value is TemplateRef<C> {\n\treturn value instanceof TemplateRef;\n}\n\nexport interface BrnTemplateOutletContext {\n\t$implicit: unknown;\n\t[key: string]: unknown;\n}\n\n@Directive({\n\tselector: '[brnTooltipStringTemplateOutlet]',\n\texportAs: 'brnTooltipStringTemplateOutlet',\n})\nexport class BrnTooltipStringTemplateOutlet<T = unknown> implements OnDestroy {\n\tprivate readonly _viewContainer = inject(ViewContainerRef);\n\tprivate readonly _templateRef = inject(TemplateRef<void>);\n\n\tprivate _embeddedViewRef: EmbeddedViewRef<BrnTemplateOutletContext> | null = null;\n\tprivate readonly _context = {} as BrnTemplateOutletContext;\n\n\tprivate _isFirstChange = true;\n\tprivate _lastOutletWasTemplate = false;\n\tprivate _lastTemplateRef: TemplateRef<void> | null = null;\n\tprivate _lastContext?: BrnTemplateOutletContext;\n\n\tpublic readonly brnTooltipStringTemplateOutletContext = input<BrnTemplateOutletContext | undefined>(undefined);\n\tpublic readonly brnTooltipStringTemplateOutlet = input.required<T | TemplateRef<void>>();\n\n\t_hasContextShapeChanged(context: BrnTemplateOutletContext | undefined): boolean {\n\t\tif (!context) {\n\t\t\treturn false;\n\t\t}\n\t\tconst prevCtxKeys = Object.keys(this._lastContext || {});\n\t\tconst currCtxKeys = Object.keys(context || {});\n\n\t\tif (prevCtxKeys.length === currCtxKeys.length) {\n\t\t\tfor (const propName of currCtxKeys) {\n\t\t\t\tif (!prevCtxKeys.includes(propName)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t_shouldViewBeRecreated(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): boolean {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\n\t\tconst shouldOutletRecreate =\n\t\t\tthis._isFirstChange ||\n\t\t\tisTemplate !== this._lastOutletWasTemplate ||\n\t\t\t(isTemplate && stringTemplateOutlet !== this._lastTemplateRef);\n\n\t\tconst shouldContextRecreate = this._hasContextShapeChanged(stringTemplateOutletContext);\n\t\treturn shouldContextRecreate || shouldOutletRecreate;\n\t}\n\n\t_updateTrackingState(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\t\tif (this._isFirstChange && !isTemplate) {\n\t\t\tthis._isFirstChange = false;\n\t\t}\n\n\t\tif (stringTemplateOutletContext !== undefined) {\n\t\t\tthis._lastContext = stringTemplateOutletContext;\n\t\t}\n\n\t\tthis._lastOutletWasTemplate = isTemplate;\n\t\tthis._lastTemplateRef = isTemplate ? stringTemplateOutlet : null;\n\t}\n\n\tprivate readonly _viewEffect: EffectRef = effect(() => {\n\t\tconst stringTemplateOutlet = this.brnTooltipStringTemplateOutlet();\n\t\tconst stringTemplateOutletContext = this.brnTooltipStringTemplateOutletContext();\n\n\t\tif (!this._isFirstChange && isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._isFirstChange = true;\n\t\t}\n\n\t\tif (!isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._context['$implicit'] = stringTemplateOutlet as T;\n\t\t}\n\n\t\tconst recreateView = this._shouldViewBeRecreated(stringTemplateOutlet, stringTemplateOutletContext);\n\t\tthis._updateTrackingState(stringTemplateOutlet, stringTemplateOutletContext);\n\n\t\tif (recreateView) {\n\t\t\tthis._recreateView(stringTemplateOutlet as TemplateRef<BrnTemplateOutletContext>, stringTemplateOutletContext);\n\t\t} else {\n\t\t\tthis._updateContext(stringTemplateOutlet, stringTemplateOutletContext);\n\t\t}\n\t});\n\n\tprivate _recreateView(\n\t\toutlet: TemplateRef<BrnTemplateOutletContext>,\n\t\tcontext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tthis._viewContainer.clear();\n\t\tif (isTemplateRef(outlet)) {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(outlet, context);\n\t\t} else {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n\t\t}\n\t}\n\n\tprivate _updateContext(outlet: TemplateRef<void> | T, context: BrnTemplateOutletContext | undefined): void {\n\t\tconst newCtx = isTemplateRef(outlet) ? context : this._context;\n\t\tlet oldCtx = this._embeddedViewRef?.context;\n\n\t\tif (!oldCtx) {\n\t\t\toldCtx = newCtx;\n\t\t} else if (newCtx && typeof newCtx === 'object') {\n\t\t\tfor (const propName of Object.keys(newCtx)) {\n\t\t\t\toldCtx[propName] = newCtx[propName];\n\t\t\t}\n\t\t}\n\t\tthis._lastContext = oldCtx;\n\t}\n\n\tstatic ngTemplateContextGuard<T>(\n\t\t_dir: BrnTooltipStringTemplateOutlet<T>,\n\t\t_ctx: unknown,\n\t): _ctx is BrnTemplateOutletContext {\n\t\treturn true;\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis._viewEffect.destroy();\n\t\tthis._viewContainer.clear();\n\t\tthis._embeddedViewRef = null;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { BrnTooltipPosition } from './brn-tooltip-position';\nimport { BrnTooltipStringTemplateOutlet } from './brn-tooltip-string-template-outlet';\nimport { BrnTooltipType } from './brn-tooltip-type';\n\nlet uniqueId = 0;\n\n@Component({\n\timports: [BrnTooltipStringTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class]': '_tooltipClass()',\n\t\t'[attr.id]': 'id()',\n\t\t'[attr.data-side]': '_position()',\n\t\t'[attr.data-state]': 'state()',\n\t\trole: 'tooltip',\n\t},\n\ttemplate: `\n\t\t<ng-container *brnTooltipStringTemplateOutlet=\"_tooltipText()\">{{ _tooltipText() }}</ng-container>\n\n\t\t<span [class]=\"_arrowClass()\">\n\t\t\t<svg [class]=\"_svgClass()\" width=\"10\" height=\"5\" viewBox=\"0 0 30 10\" preserveAspectRatio=\"none\">\n\t\t\t\t<polygon points=\"0,0 30,0 15,10\" />\n\t\t\t</svg>\n\t\t</span>\n\t`,\n})\nexport class BrnTooltipContent {\n\tpublic readonly id = input<string>(`brn-tooltip-${++uniqueId}`);\n\tpublic readonly state = signal<'closed' | 'opened'>('closed');\n\n\tprotected readonly _tooltipClass = signal<ClassValue>('');\n\tprotected readonly _arrowClass = signal<ClassValue>('');\n\tprotected readonly _svgClass = signal<ClassValue>('');\n\n\tprotected readonly _position = signal<BrnTooltipPosition>('top');\n\tprotected readonly _tooltipText = signal<BrnTooltipType>(null);\n\n\tpublic setProps(\n\t\ttooltipText: BrnTooltipType,\n\t\tposition: BrnTooltipPosition,\n\t\ttooltipClasses: ClassValue,\n\t\tarrowClasses: ClassValue,\n\t\tsvgClasses: ClassValue,\n\t): void {\n\t\tif (tooltipText) {\n\t\t\tthis._tooltipText.set(tooltipText);\n\t\t}\n\t\tthis._position.set(position);\n\n\t\tthis._tooltipClass.set(tooltipClasses);\n\t\tthis._arrowClass.set(arrowClasses);\n\t\tthis._svgClass.set(svgClasses);\n\t}\n}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const BRN_TOOLTIP_POSITIONS_MAP: Record<BrnTooltipPosition, ConnectedPosition> = {\n\ttop: {\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t\toffsetY: -8,\n\t},\n\tbottom: {\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t\toffsetY: 8,\n\t},\n\tleft: {\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t\toffsetX: -8,\n\t},\n\tright: {\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t\toffsetX: 8,\n\t},\n};\n\n/** Fallback order for each preferred position when it doesn't fit in the viewport. */\nexport const BRN_TOOLTIP_FALLBACK_POSITIONS: Record<BrnTooltipPosition, BrnTooltipPosition[]> = {\n\ttop: ['bottom', 'right', 'left'],\n\tbottom: ['top', 'right', 'left'],\n\tleft: ['right', 'top', 'bottom'],\n\tright: ['left', 'top', 'bottom'],\n};\n\n/** Map a resolved CDK ConnectedPosition back to a BrnTooltipPosition, or null if no match. */\nexport function resolveTooltipPosition(pair: ConnectedPosition): BrnTooltipPosition | null {\n\tfor (const [pos, config] of Object.entries(BRN_TOOLTIP_POSITIONS_MAP)) {\n\t\tif (\n\t\t\tpair.originX === config.originX &&\n\t\t\tpair.originY === config.originY &&\n\t\t\tpair.overlayX === config.overlayX &&\n\t\t\tpair.overlayY === config.overlayY\n\t\t) {\n\t\t\treturn pos as BrnTooltipPosition;\n\t\t}\n\t}\n\treturn null;\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport { type ClassValue } from 'clsx';\nimport { type BrnTooltipPosition } from './brn-tooltip-position';\n\nexport interface BrnTooltipOptions {\n\t/** Default delay when the tooltip is shown. */\n\tshowDelay: number;\n\t/** Default delay when the tooltip is hidden. */\n\thideDelay: number;\n\t/** Default position for tooltips. */\n\tposition?: BrnTooltipPosition;\n\t/** Additional classes for the SVG element in the tooltip arrow. */\n\tsvgClasses: ClassValue;\n\t/** Additional classes for the tooltip arrow element based on position. */\n\tarrowClasses: (position: BrnTooltipPosition) => ClassValue;\n\t/** Additional classes for the tooltip content element. */\n\ttooltipContentClasses: ClassValue;\n}\n\nexport const defaultOptions: BrnTooltipOptions = {\n\tshowDelay: 150,\n\thideDelay: 100,\n\tsvgClasses: '',\n\tarrowClasses: () => '',\n\ttooltipContentClasses: '',\n};\n\nconst BRN_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<BrnTooltipOptions>('brn-tooltip-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnTooltipDefaultOptions(options: Partial<BrnTooltipOptions>): ValueProvider {\n\treturn { provide: BRN_TOOLTIP_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnTooltipDefaultOptions(): BrnTooltipOptions {\n\treturn inject(BRN_TOOLTIP_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\ttype ComponentRef,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\tRenderer2,\n\trunInInjectionContext,\n\ttype TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { of, Subject, Subscription, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BrnTooltipContent } from './brn-tooltip-content';\nimport {\n\tBRN_TOOLTIP_FALLBACK_POSITIONS,\n\tBRN_TOOLTIP_POSITIONS_MAP,\n\tBrnTooltipPosition,\n\tresolveTooltipPosition,\n} from './brn-tooltip-position';\nimport { BrnTooltipType } from './brn-tooltip-type';\nimport { injectBrnTooltipDefaultOptions } from './brn-tooltip.token';\n\ninterface DelayConfig {\n\tisShow: boolean;\n\tdelay: number;\n}\n\n@Directive({ selector: '[brnTooltip]', exportAs: 'brnTooltip' })\nexport class BrnTooltip {\n\tprivate readonly _config = injectBrnTooltipDefaultOptions();\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _dir = inject(Directionality);\n\n\tprivate _tooltipHovered = false;\n\tprivate _listenersRefs: (() => void)[] = [];\n\tprivate _delaySubject: Subject<DelayConfig> | undefined = undefined;\n\tprivate _componentRef: ComponentRef<BrnTooltipContent> | undefined = undefined;\n\tprivate _overlayRef: OverlayRef | undefined = undefined;\n\tprivate _ariaEffectRef: ReturnType<typeof effect> | undefined = undefined;\n\tprivate _positionChangeSub: Subscription | undefined = undefined;\n\n\tpublic readonly tooltipDisabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tpublic readonly mutableTooltipDisabled = linkedSignal(this.tooltipDisabled);\n\n\tpublic readonly position = input<BrnTooltipPosition>(this._config.position ?? 'top');\n\tpublic readonly brnTooltip = input<BrnTooltipType>(null);\n\tpublic readonly showDelay = input<number, number>(this._config.showDelay, { transform: numberAttribute });\n\tpublic readonly hideDelay = input<number, number>(this._config.hideDelay, { transform: numberAttribute });\n\n\tpublic readonly show = output<void>();\n\tpublic readonly hide = output<void>();\n\n\tprivate readonly _tooltipText = computed<string | TemplateRef<void>>(() => {\n\t\tlet tooltipText = this.brnTooltip();\n\t\tif (!tooltipText) {\n\t\t\treturn '';\n\t\t} else if (typeof tooltipText === 'string') {\n\t\t\ttooltipText = tooltipText.trim();\n\t\t}\n\t\treturn tooltipText;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._overlayRef = this._overlay.create({\n\t\t\t\tdirection: this._dir,\n\t\t\t\tpositionStrategy: this._buildPositionStrategy(),\n\t\t\t});\n\n\t\t\tthis._dir.change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\t\tif (this._overlayRef) {\n\t\t\t\t\tthis._updatePosition();\n\t\t\t\t\tif (this._overlayRef.hasAttached()) {\n\t\t\t\t\t\tthis._overlayRef.updatePosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\tif (!this._overlayRef) return;\n\t\t\t\tthis._setupDelayMechanism();\n\t\t\t\tthis._cleanupTriggerEvents();\n\t\t\t\tthis._initTriggers();\n\t\t\t\tthis._listenersRefs = [\n\t\t\t\t\t...this._listenersRefs,\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseenter', () => (this._tooltipHovered = true)),\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseleave', () => {\n\t\t\t\t\t\tthis._tooltipHovered = false;\n\t\t\t\t\t\tthis.delay(false, this.hideDelay());\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t});\n\t\t});\n\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._clearAriaDescribedBy();\n\t\t\tthis._delaySubject?.complete();\n\t\t\tthis._cleanupTriggerEvents();\n\t\t\tthis._overlayRef?.dispose();\n\t\t});\n\t}\n\n\tprivate _updatePosition(): void {\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n\t\tif (strategy) {\n\t\t\tstrategy.withPositions(this._getAllPositions());\n\t\t}\n\t}\n\n\tprivate _buildPositionStrategy() {\n\t\treturn this._overlayPositionBuilder\n\t\t\t.flexibleConnectedTo(this._elementRef)\n\t\t\t.withPositions(this._getAllPositions())\n\t\t\t.withViewportMargin(8);\n\t}\n\n\t/** Build [preferred, ...fallbacks] position array for viewport-aware auto-flip. */\n\tprivate _getAllPositions(): ConnectedPosition[] {\n\t\tconst preferred = this.position();\n\t\treturn [preferred, ...BRN_TOOLTIP_FALLBACK_POSITIONS[preferred]].map((pos) => this._getAdjustedPositionFor(pos));\n\t}\n\n\tprivate _getAdjustedPositionFor(pos: BrnTooltipPosition): ConnectedPosition {\n\t\tconst position = BRN_TOOLTIP_POSITIONS_MAP[pos];\n\t\tconst isLtr = this._dir.value !== 'rtl';\n\n\t\treturn {\n\t\t\t...position,\n\t\t\toffsetX: position.offsetX != null ? (isLtr ? position.offsetX : -position.offsetX) : undefined,\n\t\t};\n\t}\n\n\tprivate _initTriggers() {\n\t\tthis._initScrollListener();\n\t\tthis._initHoverListeners();\n\t}\n\n\tprivate _initHoverListeners(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseenter', () => this.delay(true, this.showDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this.delay(false, this.hideDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'focus', () => this.delay(true, this.showDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'blur', () => this.delay(false, this.hideDelay())),\n\t\t];\n\t}\n\n\tprivate _initScrollListener(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._document.defaultView, 'scroll', () => this._hide()),\n\t\t];\n\t}\n\n\tprivate _cleanupTriggerEvents(): void {\n\t\tfor (const eventRef of this._listenersRefs) {\n\t\t\teventRef();\n\t\t}\n\t\tthis._listenersRefs = [];\n\t}\n\n\tprivate delay(isShow: boolean, delay = -1): void {\n\t\tthis._delaySubject?.next({ isShow, delay });\n\t}\n\n\tprivate _setupDelayMechanism(): void {\n\t\tthis._delaySubject?.complete();\n\t\tthis._delaySubject = new Subject<DelayConfig>();\n\n\t\tthis._delaySubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap((config) => (config.delay < 0 ? of(config) : timer(config.delay).pipe(map(() => config)))),\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t)\n\t\t\t.subscribe((config) => {\n\t\t\t\tif (config.isShow) {\n\t\t\t\t\tthis._show();\n\t\t\t\t} else {\n\t\t\t\t\tthis._hide();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _show(): void {\n\t\tif (this._componentRef || !this._tooltipText() || this.mutableTooltipDisabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltipPortal = new ComponentPortal(BrnTooltipContent);\n\t\tthis._componentRef = this._overlayRef?.attach(tooltipPortal);\n\t\tthis._componentRef?.onDestroy(() => {\n\t\t\tthis._componentRef = undefined;\n\t\t});\n\t\tthis._componentRef?.instance.state.set('opened');\n\t\tthis._componentRef?.instance.setProps(\n\t\t\tthis._tooltipText(),\n\t\t\tthis.position(),\n\t\t\tthis._config.tooltipContentClasses,\n\t\t\tthis._config.arrowClasses(this.position()),\n\t\t\tthis._config.svgClasses,\n\t\t);\n\n\t\t// Subscribe to position changes for the lifetime of the tooltip so that\n\t\t// arrow direction and CSS classes stay in sync when the CDK flips the\n\t\t// overlay (initial show, viewport resize, scroll, etc.).\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy | undefined;\n\t\tif (strategy && this._componentRef) {\n\t\t\tconst compRef = this._componentRef;\n\t\t\tthis._positionChangeSub = strategy.positionChanges\n\t\t\t\t.pipe(takeUntilDestroyed(this._destroyRef))\n\t\t\t\t.subscribe((change) => {\n\t\t\t\t\tconst resolved = resolveTooltipPosition(change.connectionPair);\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tcompRef.instance.setProps(\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tresolved,\n\t\t\t\t\t\t\tthis._config.tooltipContentClasses,\n\t\t\t\t\t\t\tthis._config.arrowClasses(resolved),\n\t\t\t\t\t\t\tthis._config.svgClasses,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._ariaEffectRef = effect(() => {\n\t\t\t\tconst tooltipId = this._componentRef?.instance.id();\n\t\t\t\tif (tooltipId) {\n\t\t\t\t\tthis._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', tooltipId);\n\t\t\t\t\tthis._ariaEffectRef?.destroy();\n\t\t\t\t\tthis._ariaEffectRef = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.show.emit();\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._componentRef || this._tooltipHovered) return;\n\t\tthis._clearAriaDescribedBy();\n\t\tthis._positionChangeSub?.unsubscribe();\n\t\tthis._positionChangeSub = undefined;\n\n\t\tthis._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\t\tthis._componentRef.instance.state.set('closed');\n\t\tthis.hide.emit();\n\t\tthis._overlayRef?.detach();\n\t}\n\n\tprivate _clearAriaDescribedBy(): void {\n\t\tif (this._ariaEffectRef) {\n\t\t\tthis._ariaEffectRef.destroy();\n\t\t\tthis._ariaEffectRef = undefined;\n\t\t}\n\t}\n}\n","import { BrnTooltip } from './lib/brn-tooltip';\nimport { BrnTooltipContent } from './lib/brn-tooltip-content';\n\nexport * from './lib/brn-tooltip';\nexport * from './lib/brn-tooltip-content';\nexport { BRN_TOOLTIP_FALLBACK_POSITIONS, BrnTooltipPosition, resolveTooltipPosition } from './lib/brn-tooltip-position';\nexport * from './lib/brn-tooltip-type';\nexport * from './lib/brn-tooltip.token';\n\nexport const BrnTooltipImports = [BrnTooltip, BrnTooltipContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spartan-ng/brain",
3
- "version": "0.0.1-alpha.673",
3
+ "version": "0.0.1-alpha.674",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/spartan-ng/spartan"
@@ -1,8 +1,13 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef, ValueProvider } from '@angular/core';
3
+ import { ConnectedPosition } from '@angular/cdk/overlay';
3
4
  import { ClassValue } from 'clsx';
4
5
 
5
6
  type BrnTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
7
+ /** Fallback order for each preferred position when it doesn't fit in the viewport. */
8
+ declare const BRN_TOOLTIP_FALLBACK_POSITIONS: Record<BrnTooltipPosition, BrnTooltipPosition[]>;
9
+ /** Map a resolved CDK ConnectedPosition back to a BrnTooltipPosition, or null if no match. */
10
+ declare function resolveTooltipPosition(pair: ConnectedPosition): BrnTooltipPosition | null;
6
11
 
7
12
  type BrnTooltipType = string | TemplateRef<void> | null;
8
13
 
@@ -22,6 +27,7 @@ declare class BrnTooltip {
22
27
  private _componentRef;
23
28
  private _overlayRef;
24
29
  private _ariaEffectRef;
30
+ private _positionChangeSub;
25
31
  readonly tooltipDisabled: _angular_core.InputSignalWithTransform<boolean, boolean>;
26
32
  readonly mutableTooltipDisabled: _angular_core.WritableSignal<boolean>;
27
33
  readonly position: _angular_core.InputSignal<BrnTooltipPosition>;
@@ -34,7 +40,9 @@ declare class BrnTooltip {
34
40
  constructor();
35
41
  private _updatePosition;
36
42
  private _buildPositionStrategy;
37
- private _getAdjustedPosition;
43
+ /** Build [preferred, ...fallbacks] position array for viewport-aware auto-flip. */
44
+ private _getAllPositions;
45
+ private _getAdjustedPositionFor;
38
46
  private _initTriggers;
39
47
  private _initHoverListeners;
40
48
  private _initScrollListener;
@@ -81,5 +89,5 @@ declare function injectBrnTooltipDefaultOptions(): BrnTooltipOptions;
81
89
 
82
90
  declare const BrnTooltipImports: readonly [typeof BrnTooltip, typeof BrnTooltipContent];
83
91
 
84
- export { BrnTooltip, BrnTooltipContent, BrnTooltipImports, defaultOptions, injectBrnTooltipDefaultOptions, provideBrnTooltipDefaultOptions };
92
+ export { BRN_TOOLTIP_FALLBACK_POSITIONS, BrnTooltip, BrnTooltipContent, BrnTooltipImports, defaultOptions, injectBrnTooltipDefaultOptions, provideBrnTooltipDefaultOptions, resolveTooltipPosition };
85
93
  export type { BrnTooltipOptions, BrnTooltipPosition, BrnTooltipType };