@lucca-front/ng 19.1.1 → 19.1.2

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.
@@ -1,12 +1,12 @@
1
1
  import { trigger, state, style, transition, animate } from '@angular/animations';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, DestroyRef, Component, ChangeDetectionStrategy, HostListener, HostBinding, NgModule, Injectable, ElementRef, Renderer2, input, booleanAttribute, computed, effect, signal, numberAttribute, Directive, Input } from '@angular/core';
4
- import { Subject, BehaviorSubject, Observable, combineLatest, switchMap, merge, timer, startWith } from 'rxjs';
3
+ import { inject, DestroyRef, Component, ChangeDetectionStrategy, HostListener, HostBinding, NgModule, Injectable, ElementRef, Renderer2, NgZone, input, booleanAttribute, computed, effect, signal, numberAttribute, Directive, Input } from '@angular/core';
4
+ import { Subject, timer, shareReplay, filter, firstValueFrom, BehaviorSubject, Observable, combineLatest, switchMap, merge, startWith } from 'rxjs';
5
5
  import { NgClass, DOCUMENT } from '@angular/common';
6
6
  import { Overlay, OverlayModule } from '@angular/cdk/overlay';
7
7
  import { ComponentPortal } from '@angular/cdk/portal';
8
8
  import { toObservable, toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
- import { debounceTime, filter, map, debounce } from 'rxjs/operators';
9
+ import { debounceTime, filter as filter$1, map, debounce } from 'rxjs/operators';
10
10
 
11
11
  const luTransformTooltip = trigger('transformTooltip', [
12
12
  state('enter', style({
@@ -77,8 +77,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
77
77
  }] });
78
78
 
79
79
  class EllipsisRuler {
80
+ // As EllipsisRuler is a singleton, we can use shareReplay so the first subscriber starts the timer and the last one stops it
81
+ // The timer allows us to alternate between read and write phases
82
+ #interval;
83
+ #readPhase;
84
+ #writePhase;
80
85
  #document;
81
86
  constructor() {
87
+ // As EllipsisRuler is a singleton, we can use shareReplay so the first subscriber starts the timer and the last one stops it
88
+ // The timer allows us to alternate between read and write phases
89
+ this.#interval = timer(100, 100).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
90
+ this.#readPhase = this.#interval.pipe(filter((n) => n % 2 === 0));
91
+ this.#writePhase = this.#interval.pipe(filter((n) => n % 2 === 1));
82
92
  this.#document = inject(DOCUMENT);
83
93
  this.parentMasked = this.#document.createElement('div');
84
94
  this.parentMasked.classList.add('u-mask');
@@ -104,48 +114,66 @@ class EllipsisRuler {
104
114
  * This way, we have 2 reflows per check, no matter how many elements are checked in a row.
105
115
  */
106
116
  async hasEllipsis(element) {
107
- const elementStyle = getComputedStyle(element);
117
+ let elementStyle;
118
+ let bodyStyle;
119
+ await this.#readOperation(() => {
120
+ elementStyle = getComputedStyle(element);
121
+ bodyStyle = getComputedStyle(document.body);
122
+ });
108
123
  if (elementStyle.textOverflow !== 'ellipsis') {
109
124
  return false;
110
125
  }
111
126
  const { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle } = elementStyle;
112
- const fontSize = (Number(elementStyle.fontSize.replace('px', '')) / Number(getComputedStyle(document.body).fontSize.replace('px', ''))).toString() + 'rem';
113
- // When multiple elements are checked in a row, we wait for the next microtask to before cloning the element
114
- // to avoid the browser to reflow the page for each tooltip
115
- await Promise.resolve();
116
- const elementCloned = this.#document.createElement('div');
117
- Object.assign(elementCloned.style, {
118
- width: 'fit-content',
119
- whiteSpace: 'nowrap',
120
- position: 'absolute',
121
- visibility: 'hidden',
122
- padding,
123
- borderWidth,
124
- borderStyle,
125
- boxSizing,
126
- fontFamily,
127
- fontWeight,
128
- fontStyle,
129
- fontSize,
127
+ const fontSize = (Number(elementStyle.fontSize.replace('px', '')) / Number(bodyStyle.fontSize.replace('px', ''))).toString() + 'rem';
128
+ let elementCloned;
129
+ await this.#writeOperation(() => {
130
+ elementCloned = this.#document.createElement('div');
131
+ Object.assign(elementCloned.style, {
132
+ width: 'fit-content',
133
+ whiteSpace: 'nowrap',
134
+ position: 'absolute',
135
+ visibility: 'hidden',
136
+ padding,
137
+ borderWidth,
138
+ borderStyle,
139
+ boxSizing,
140
+ fontFamily,
141
+ fontWeight,
142
+ fontStyle,
143
+ fontSize,
144
+ });
145
+ this.parentMasked.appendChild(elementCloned);
146
+ elementCloned.innerHTML = element.innerHTML;
130
147
  });
131
- this.parentMasked.appendChild(elementCloned);
132
- elementCloned.innerHTML = element.innerHTML;
133
148
  // To avoid multiple reflows, we wait for the next microtask before calculating the width
134
- await Promise.resolve();
135
149
  try {
136
- const elementClonedWidth = elementCloned.getBoundingClientRect().width;
137
- const elementWidth = element.getBoundingClientRect().width;
138
- return elementClonedWidth > elementWidth;
150
+ let clonedElementWidth;
151
+ let elementWidth;
152
+ await this.#readOperation(() => {
153
+ clonedElementWidth = elementCloned.getBoundingClientRect().width;
154
+ elementWidth = element.getBoundingClientRect().width;
155
+ });
156
+ return clonedElementWidth > elementWidth;
139
157
  }
140
158
  catch {
141
159
  return false;
142
160
  }
143
161
  finally {
144
- // To avoid multiple reflows, we wait for the next microtask before removing the cloned element
145
- await Promise.resolve();
146
- this.parentMasked.removeChild(elementCloned);
162
+ await this.#writeOperation(() => {
163
+ this.parentMasked.removeChild(elementCloned);
164
+ });
147
165
  }
148
166
  }
167
+ // To avoid multiple reflows, we wait for the next read phase before computing/reading element style
168
+ async #readOperation(operation) {
169
+ await firstValueFrom(this.#readPhase);
170
+ operation();
171
+ }
172
+ // To avoid multiple reflows, we wait for the next write before inserting/removing the cloned element
173
+ async #writeOperation(operation) {
174
+ await firstValueFrom(this.#writePhase);
175
+ operation();
176
+ }
149
177
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: EllipsisRuler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
150
178
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: EllipsisRuler, providedIn: 'root' }); }
151
179
  }
@@ -160,6 +188,7 @@ class LuTooltipTriggerDirective {
160
188
  #host;
161
189
  #renderer;
162
190
  #ruler;
191
+ #zone;
163
192
  #destroyRef;
164
193
  #openDelay$;
165
194
  set luTooltipEnterDelay(delay) {
@@ -197,6 +226,7 @@ class LuTooltipTriggerDirective {
197
226
  this.#host = inject(ElementRef);
198
227
  this.#renderer = inject(Renderer2);
199
228
  this.#ruler = inject(EllipsisRuler);
229
+ this.#zone = inject(NgZone, { optional: true });
200
230
  this.#destroyRef = inject(DestroyRef);
201
231
  this.luTooltip = input();
202
232
  this.#openDelay$ = new BehaviorSubject(300);
@@ -222,9 +252,9 @@ class LuTooltipTriggerDirective {
222
252
  this.resize$.pipe(debounceTime(150)),
223
253
  ]).pipe(
224
254
  // 2. Keep only necessary inputs
225
- filter(([{ whenEllipsis, disabled }]) => !disabled && whenEllipsis),
255
+ filter$1(([{ whenEllipsis, disabled }]) => !disabled && whenEllipsis),
226
256
  // 3. Check for ellipsis
227
- switchMap(() => this.#ruler.hasEllipsis(this.#host.nativeElement)));
257
+ switchMap(() => this.runOutsideZoneJS(() => this.#ruler.hasEllipsis(this.#host.nativeElement))));
228
258
  this.#hasEllipsis = toSignal(this.#hasEllipsis$, { initialValue: false });
229
259
  this.open$ = new Subject();
230
260
  this.close$ = new Subject();
@@ -233,7 +263,7 @@ class LuTooltipTriggerDirective {
233
263
  .pipe(switchMap(([openDelay, closeDelay]) => {
234
264
  // We only filter open events because even if it's disabled while opened,
235
265
  // we want the tooltip to be able to close itself no matter what
236
- const openEvents$ = this.open$.pipe(filter(() => {
266
+ const openEvents$ = this.open$.pipe(filter$1(() => {
237
267
  if (this.luTooltipDisabled()) {
238
268
  return false;
239
269
  }
@@ -323,6 +353,9 @@ class LuTooltipTriggerDirective {
323
353
  ngAfterContentInit() {
324
354
  this._id = this.#host.nativeElement.id || this.#generatedId;
325
355
  }
356
+ runOutsideZoneJS(callback) {
357
+ return this.#zone ? this.#zone.runOutsideAngular(callback) : callback();
358
+ }
326
359
  /**********************
327
360
  *
328
361
  * LEGACY STUFF TO HANDLE EXISTING POSITIONS
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-tooltip.mjs","sources":["../../../packages/ng/tooltip/animation/tooltip.animation.ts","../../../packages/ng/tooltip/panel/tooltip-panel.component.ts","../../../packages/ng/tooltip/panel/tooltip-panel.component.html","../../../packages/ng/tooltip/panel/tooltip-panel.module.ts","../../../packages/ng/tooltip/trigger/ellipsis.ruler.ts","../../../packages/ng/tooltip/trigger/tooltip-trigger.directive.ts","../../../packages/ng/tooltip/trigger/tooltip-trigger.module.ts","../../../packages/ng/tooltip/tooltip.module.ts","../../../packages/ng/tooltip/lucca-front-ng-tooltip.ts"],"sourcesContent":["import { trigger, state, style, animate, transition, AnimationTriggerMetadata } from '@angular/animations';\n\nexport const luTransformTooltip: AnimationTriggerMetadata = trigger('transformTooltip', [\n\tstate(\n\t\t'enter',\n\t\tstyle({\n\t\t\topacity: 1,\n\t\t\ttransform: `scale(1)`,\n\t\t}),\n\t),\n\ttransition('void => *', [\n\t\tstyle({\n\t\t\topacity: 0,\n\t\t\ttransform: `scale(0)`,\n\t\t}),\n\t\tanimate(`150ms cubic-bezier(0.25, 0.8, 0.25, 1)`),\n\t]),\n\ttransition('* => void', [animate('50ms 100ms linear', style({ opacity: 0 }))]),\n]);\n","import { HorizontalConnectionPos, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, DestroyRef, HostBinding, HostListener, inject, Signal } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { NgClass } from '@angular/common';\n\n@Component({\n\tselector: 'lu-tooltip-panel',\n\ttemplateUrl: './tooltip-panel.component.html',\n\tstyleUrls: ['./tooltip-panel.component.scss'],\n\tstandalone: true,\n\thost: {\n\t\trole: 'tooltip',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgClass],\n})\nexport class LuTooltipPanelComponent {\n\tdestroyRef = inject(DestroyRef);\n\n\tmouseEnter$ = new Subject<void>();\n\n\t@HostListener('mouseenter')\n\tmouseEnter(): void {\n\t\tthis.mouseEnter$.next();\n\t}\n\n\tmouseLeave$ = new Subject<void>();\n\n\t@HostListener('mouseleave')\n\tmouseLeave(): void {\n\t\tthis.mouseLeave$.next();\n\t}\n\n\tcontent: Signal<string | SafeHtml>;\n\n\t@HostBinding('attr.id')\n\tid: string;\n\n\tcontentPositionClasses: Record<string, boolean> = {};\n\n\tsetPanelPosition(posX: HorizontalConnectionPos, posY: VerticalConnectionPos): void {\n\t\tthis.contentPositionClasses = {\n\t\t\t'is-before': posX === 'end',\n\t\t\t'is-after': posX === 'start',\n\t\t\t'is-above': posY === 'bottom',\n\t\t\t'is-below': posY === 'top',\n\t\t};\n\t}\n}\n","<div class=\"tooltip\" [ngClass]=\"contentPositionClasses\" [innerHtml]=\"content()\"></div>\n","import { NgModule } from '@angular/core';\nimport { LuTooltipPanelComponent } from './tooltip-panel.component';\n\n@NgModule({\n\timports: [LuTooltipPanelComponent],\n\texports: [LuTooltipPanelComponent],\n})\nexport class LuTooltipPanelModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class EllipsisRuler {\n\t#document = inject(DOCUMENT);\n\treadonly parentMasked = this.#document.createElement('div');\n\n\tconstructor() {\n\t\tthis.parentMasked.classList.add('u-mask');\n\t\tthis.parentMasked.setAttribute('aria-hidden', 'true');\n\t\tthis.#document.body.appendChild(this.parentMasked);\n\t}\n\n\t/**\n\t * Hacky af but let's explain everything\n\t * This method checks for ellipsis by cloning the node and checking its width against original element.\n\t *\n\t * We used to do this using scrollWidth but the thing is, it's a rounded value. Sometimes,\n\t * you'd get true while it should be false and vice-versa, because of rounding.\n\t *\n\t * So we duplicate the properties we're interested in on the element to be tested to calculate its ideal size,\n\t * which we then compare with its current size.\n\t *\n\t * To avoid doing multiple reflow per check, we wait for the next microtask on each key step of the process:\n\t * - After computing element style\n\t * - After cloning the element and appending it to the DOM\n\t * - After computing the width of the cloned element\n\t * - After removing the cloned element from the DOM\n\t *\n\t * This way, we have 2 reflows per check, no matter how many elements are checked in a row.\n\t */\n\tasync hasEllipsis(element: HTMLElement): Promise<boolean> {\n\t\tconst elementStyle = getComputedStyle(element);\n\n\t\tif (elementStyle.textOverflow !== 'ellipsis') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle } = elementStyle;\n\n\t\tconst fontSize = (Number(elementStyle.fontSize.replace('px', '')) / Number(getComputedStyle(document.body).fontSize.replace('px', ''))).toString() + 'rem';\n\n\t\t// When multiple elements are checked in a row, we wait for the next microtask to before cloning the element\n\t\t// to avoid the browser to reflow the page for each tooltip\n\t\tawait Promise.resolve();\n\n\t\tconst elementCloned = this.#document.createElement('div');\n\n\t\tObject.assign(elementCloned.style, {\n\t\t\twidth: 'fit-content',\n\t\t\twhiteSpace: 'nowrap',\n\t\t\tposition: 'absolute',\n\t\t\tvisibility: 'hidden',\n\t\t\tpadding,\n\t\t\tborderWidth,\n\t\t\tborderStyle,\n\t\t\tboxSizing,\n\t\t\tfontFamily,\n\t\t\tfontWeight,\n\t\t\tfontStyle,\n\t\t\tfontSize,\n\t\t});\n\n\t\tthis.parentMasked.appendChild(elementCloned);\n\n\t\telementCloned.innerHTML = element.innerHTML;\n\n\t\t// To avoid multiple reflows, we wait for the next microtask before calculating the width\n\t\tawait Promise.resolve();\n\n\t\ttry {\n\t\t\tconst elementClonedWidth = elementCloned.getBoundingClientRect().width;\n\t\t\tconst elementWidth = element.getBoundingClientRect().width;\n\n\t\t\treturn elementClonedWidth > elementWidth;\n\t\t} catch {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// To avoid multiple reflows, we wait for the next microtask before removing the cloned element\n\t\t\tawait Promise.resolve();\n\t\t\tthis.parentMasked.removeChild(elementCloned);\n\t\t}\n\t}\n}\n","import { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, OriginConnectionPosition, Overlay, OverlayConnectionPosition, OverlayRef, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n\tAfterContentInit,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tHostBinding,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tRenderer2,\n\tbooleanAttribute,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { LuPopoverPosition } from '@lucca-front/ng/popover';\nimport { BehaviorSubject, Observable, Subject, combineLatest, merge, startWith, switchMap, timer } from 'rxjs';\nimport { debounce, debounceTime, filter, map } from 'rxjs/operators';\nimport { LuTooltipPanelComponent } from '../panel';\nimport { EllipsisRuler } from './ellipsis.ruler';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[luTooltip]',\n\texportAs: 'luTooltip',\n\tstandalone: true,\n})\nexport class LuTooltipTriggerDirective implements AfterContentInit, OnDestroy {\n\t#overlay = inject(Overlay);\n\n\t#host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t#renderer = inject(Renderer2);\n\t#ruler = inject(EllipsisRuler);\n\n\t#destroyRef = inject(DestroyRef);\n\n\tluTooltip = input<string | SafeHtml>();\n\n\t#openDelay$ = new BehaviorSubject<number>(300);\n\n\t@Input({ transform: numberAttribute })\n\tset luTooltipEnterDelay(delay: number) {\n\t\tthis.#openDelay$.next(delay);\n\t}\n\n\t#closeDelay$ = new BehaviorSubject<number>(100);\n\n\t@Input({ transform: numberAttribute })\n\tset luTooltipLeaveDelay(delay: number) {\n\t\tthis.#closeDelay$.next(delay);\n\t}\n\n\tluTooltipDisabled = input(false, { transform: booleanAttribute });\n\n\t@Input({ transform: booleanAttribute })\n\tluTooltipOnlyForDisplay = false;\n\n\t@Input()\n\tluTooltipPosition: LuPopoverPosition = 'above';\n\n\tluTooltipWhenEllipsis = input(false, { transform: booleanAttribute });\n\n\tresize$ = new Observable((observer) => {\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tobserver.next();\n\t\t});\n\t\tresizeObserver.observe(this.#host.nativeElement);\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t};\n\t});\n\n\t#hasEllipsis$ = combineLatest([\n\t\ttoObservable(\n\t\t\t// 1. Group necessary inputs\n\t\t\tcomputed(() => ({ whenEllipsis: this.luTooltipWhenEllipsis(), disabled: this.luTooltipDisabled() })),\n\t\t),\n\t\t// Resend resize events to trigger the check\n\t\tthis.resize$.pipe(debounceTime(150)),\n\t]).pipe(\n\t\t// 2. Keep only necessary inputs\n\t\tfilter(([{ whenEllipsis, disabled }]) => !disabled && whenEllipsis),\n\t\t// 3. Check for ellipsis\n\t\tswitchMap(() => this.#ruler.hasEllipsis(this.#host.nativeElement)),\n\t);\n\n\t#hasEllipsis = toSignal(this.#hasEllipsis$, { initialValue: false });\n\n\topen$ = new Subject<void>();\n\n\tclose$ = new Subject<void>();\n\n\t@HostListener('mouseenter')\n\tonMouseEnter() {\n\t\tthis.open$.next();\n\t}\n\n\t@HostListener('mouseleave')\n\tonMouseLeave() {\n\t\tthis.close$.next();\n\t}\n\n\t@HostListener('focus')\n\tonFocus() {\n\t\tif (this.#host.nativeElement.getAttribute('aria-expanded') !== 'true') {\n\t\t\tthis.open$.next();\n\t\t}\n\t}\n\n\t@HostListener('blur')\n\tonBlur() {\n\t\tthis.close$.next();\n\t}\n\n\t#generatedId = `${this.#host.nativeElement.tagName.toLowerCase()}-tooltip-${nextId++}`;\n\n\t@HostBinding('attr.id')\n\t_id: string;\n\n\t@HostBinding('attr.aria-describedby')\n\tget ariaDescribedBy() {\n\t\tif (this.luTooltipDisabled() || this.luTooltipWhenEllipsis() || this.luTooltipOnlyForDisplay) {\n\t\t\treturn null;\n\t\t}\n\t\treturn `${this.#generatedId}-panel`;\n\t}\n\n\toverlayRef?: OverlayRef;\n\n\tconstructor() {\n\t\tcombineLatest([this.#openDelay$, this.#closeDelay$])\n\t\t\t.pipe(\n\t\t\t\tswitchMap(([openDelay, closeDelay]) => {\n\t\t\t\t\t// We only filter open events because even if it's disabled while opened,\n\t\t\t\t\t// \twe want the tooltip to be able to close itself no matter what\n\t\t\t\t\tconst openEvents$ = this.open$.pipe(\n\t\t\t\t\t\tfilter(() => {\n\t\t\t\t\t\t\tif (this.luTooltipDisabled()) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// If not disabled, let's check for ellipsis if needed\n\t\t\t\t\t\t\tif (this.luTooltipWhenEllipsis()) {\n\t\t\t\t\t\t\t\treturn this.#hasEllipsis();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// If it's not disabled and is not triggered based on ellipsis, just return true\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tmap(() => 'open'),\n\t\t\t\t\t);\n\t\t\t\t\treturn merge(openEvents$, this.close$.pipe(map(() => 'close'))).pipe(\n\t\t\t\t\t\tdebounce((event) => {\n\t\t\t\t\t\t\treturn timer(event === 'open' ? openDelay : closeDelay);\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t)\n\t\t\t.subscribe((event) => {\n\t\t\t\tif (event === 'open') {\n\t\t\t\t\tthis.openTooltip();\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeTooltip();\n\t\t\t\t}\n\t\t\t});\n\n\t\teffect(() => {\n\t\t\tif (!this.luTooltipDisabled() && (!this.luTooltipWhenEllipsis() || this.#hasEllipsis())) {\n\t\t\t\tthis.setAccessibilityProperties(0);\n\t\t\t} else {\n\t\t\t\tthis.setAccessibilityProperties(null);\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closeTooltip();\n\t}\n\n\tprivate openTooltip(): void {\n\t\t// If tooltip is already opened, don't do anything\n\t\tif (this.overlayRef) {\n\t\t\treturn;\n\t\t}\n\t\tconst position = this.legacyPositionBuilder();\n\t\tthis.overlayRef = this.#overlay.create({\n\t\t\tpositionStrategy: position,\n\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\tdisposeOnNavigation: true,\n\t\t});\n\t\tconst portal = new ComponentPortal(LuTooltipPanelComponent);\n\t\tconst ref = this.overlayRef.attach(portal);\n\t\tposition.positionChanges\n\t\t\t.pipe(\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t\tmap(({ connectionPair }) => connectionPair),\n\t\t\t\tstartWith(position.positions[0]),\n\t\t\t)\n\t\t\t.subscribe(({ overlayX, overlayY }) => {\n\t\t\t\tref.instance.setPanelPosition(overlayX, overlayY);\n\t\t\t});\n\t\tif (this.luTooltip()) {\n\t\t\tref.instance.content = this.luTooltip;\n\t\t} else if (this.luTooltipWhenEllipsis()) {\n\t\t\tref.instance.content = signal(this.#host.nativeElement.innerText);\n\t\t} else {\n\t\t\tref.instance.content = signal('');\n\t\t}\n\t\tref.instance.id = this.ariaDescribedBy;\n\t\t// On tooltip leave => trigger close\n\t\tref.instance.mouseLeave$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.close$.next());\n\t\t// On tooltip enter => trigger open to keep it opened\n\t\tref.instance.mouseEnter$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.open$.next());\n\t}\n\n\tprivate closeTooltip(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.detach();\n\t\t\tdelete this.overlayRef;\n\t\t}\n\t}\n\n\tprivate setAccessibilityProperties(tabindex: number | null): void {\n\t\tif (tabindex === null) {\n\t\t\tthis.#renderer.removeAttribute(this.#host.nativeElement, 'tabindex');\n\t\t\treturn;\n\t\t}\n\n\t\tconst tag = this.#host.nativeElement.tagName.toLowerCase();\n\t\tconst nativelyFocusableTags = ['a', 'button', 'input', 'select', 'textarea'];\n\t\tconst isNativelyFocusableTag = nativelyFocusableTags.includes(tag);\n\n\t\tconst hasATabIndex = this.#host.nativeElement.getAttribute('tabindex') !== null;\n\n\t\tif (!isNativelyFocusableTag && !hasATabIndex) {\n\t\t\tthis.#renderer.setAttribute(this.#host.nativeElement, 'tabindex', tabindex.toString());\n\t\t}\n\t}\n\n\tngAfterContentInit(): void {\n\t\tthis._id = this.#host.nativeElement.id || this.#generatedId;\n\t}\n\n\t/**********************\n\t *\n\t * LEGACY STUFF TO HANDLE EXISTING POSITIONS\n\t *\n\t ***********************/\n\n\tprivate legacyPositionBuilder(): FlexibleConnectedPositionStrategy {\n\t\tconst connectionPosition: OriginConnectionPosition = {\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t};\n\n\t\t// Position\n\t\tconst position = this.luTooltipPosition;\n\t\tif (position === 'above') {\n\t\t\tconnectionPosition.originY = 'top';\n\t\t} else if (position === 'below') {\n\t\t\tconnectionPosition.originY = 'bottom';\n\t\t} else if (position === 'before') {\n\t\t\tconnectionPosition.originX = 'start';\n\t\t} else if (position === 'after') {\n\t\t\tconnectionPosition.originX = 'end';\n\t\t}\n\n\t\t// Alignment\n\t\tif (position === 'above' || position === 'below') {\n\t\t\tconnectionPosition.originX = 'center';\n\t\t} else {\n\t\t\tconnectionPosition.originY = 'center';\n\t\t}\n\n\t\tconst overlayPosition: OverlayConnectionPosition = {\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t};\n\n\t\tif (position === 'above' || position === 'below') {\n\t\t\toverlayPosition.overlayX = connectionPosition.originX;\n\t\t\toverlayPosition.overlayY = position === 'above' ? 'bottom' : 'top';\n\t\t} else {\n\t\t\toverlayPosition.overlayX = position === 'before' ? 'end' : 'start';\n\t\t\toverlayPosition.overlayY = connectionPosition.originY;\n\t\t}\n\n\t\treturn this.#overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.#host)\n\t\t\t.withPositions([\n\t\t\t\t{\n\t\t\t\t\toriginX: connectionPosition.originX,\n\t\t\t\t\toriginY: connectionPosition.originY,\n\t\t\t\t\toverlayX: overlayPosition.overlayX,\n\t\t\t\t\toverlayY: overlayPosition.overlayY,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: connectionPosition.originX,\n\t\t\t\t\toriginY: this.invertVerticalPos(connectionPosition.originY),\n\t\t\t\t\toverlayX: overlayPosition.overlayX,\n\t\t\t\t\toverlayY: this.invertVerticalPos(overlayPosition.overlayY),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: this.invertHorizontalPos(connectionPosition.originX),\n\t\t\t\t\toriginY: connectionPosition.originY,\n\t\t\t\t\toverlayX: this.invertHorizontalPos(overlayPosition.overlayX),\n\t\t\t\t\toverlayY: overlayPosition.overlayY,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: this.invertHorizontalPos(connectionPosition.originX),\n\t\t\t\t\toriginY: this.invertVerticalPos(connectionPosition.originY),\n\t\t\t\t\toverlayX: this.invertHorizontalPos(overlayPosition.overlayX),\n\t\t\t\t\toverlayY: this.invertVerticalPos(overlayPosition.overlayY),\n\t\t\t\t},\n\t\t\t]);\n\t}\n\n\tprivate invertVerticalPos(y: VerticalConnectionPos): VerticalConnectionPos {\n\t\tif (y === 'top') {\n\t\t\treturn 'bottom';\n\t\t} else if (y === 'bottom') {\n\t\t\treturn 'top';\n\t\t}\n\t\treturn y;\n\t}\n\n\tprivate invertHorizontalPos(x: HorizontalConnectionPos): HorizontalConnectionPos {\n\t\tif (x === 'end') {\n\t\t\treturn 'start';\n\t\t} else if (x === 'start') {\n\t\t\treturn 'end';\n\t\t}\n\t\treturn x;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { LuTooltipTriggerDirective } from './tooltip-trigger.directive';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n\timports: [LuTooltipTriggerDirective, OverlayModule],\n\texports: [LuTooltipTriggerDirective],\n})\nexport class LuTooltipTriggerModule {}\n","import { NgModule } from '@angular/core';\nimport { LuTooltipPanelModule } from './panel/index';\nimport { LuTooltipTriggerModule } from './trigger/index';\n\n@NgModule({\n\timports: [LuTooltipTriggerModule, LuTooltipPanelModule],\n\texports: [LuTooltipTriggerModule, LuTooltipPanelModule],\n})\nexport class LuTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-tooltip.mjs","sources":["../../../packages/ng/tooltip/animation/tooltip.animation.ts","../../../packages/ng/tooltip/panel/tooltip-panel.component.ts","../../../packages/ng/tooltip/panel/tooltip-panel.component.html","../../../packages/ng/tooltip/panel/tooltip-panel.module.ts","../../../packages/ng/tooltip/trigger/ellipsis.ruler.ts","../../../packages/ng/tooltip/trigger/tooltip-trigger.directive.ts","../../../packages/ng/tooltip/trigger/tooltip-trigger.module.ts","../../../packages/ng/tooltip/tooltip.module.ts","../../../packages/ng/tooltip/lucca-front-ng-tooltip.ts"],"sourcesContent":["import { trigger, state, style, animate, transition, AnimationTriggerMetadata } from '@angular/animations';\n\nexport const luTransformTooltip: AnimationTriggerMetadata = trigger('transformTooltip', [\n\tstate(\n\t\t'enter',\n\t\tstyle({\n\t\t\topacity: 1,\n\t\t\ttransform: `scale(1)`,\n\t\t}),\n\t),\n\ttransition('void => *', [\n\t\tstyle({\n\t\t\topacity: 0,\n\t\t\ttransform: `scale(0)`,\n\t\t}),\n\t\tanimate(`150ms cubic-bezier(0.25, 0.8, 0.25, 1)`),\n\t]),\n\ttransition('* => void', [animate('50ms 100ms linear', style({ opacity: 0 }))]),\n]);\n","import { HorizontalConnectionPos, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, DestroyRef, HostBinding, HostListener, inject, Signal } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { NgClass } from '@angular/common';\n\n@Component({\n\tselector: 'lu-tooltip-panel',\n\ttemplateUrl: './tooltip-panel.component.html',\n\tstyleUrls: ['./tooltip-panel.component.scss'],\n\tstandalone: true,\n\thost: {\n\t\trole: 'tooltip',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgClass],\n})\nexport class LuTooltipPanelComponent {\n\tdestroyRef = inject(DestroyRef);\n\n\tmouseEnter$ = new Subject<void>();\n\n\t@HostListener('mouseenter')\n\tmouseEnter(): void {\n\t\tthis.mouseEnter$.next();\n\t}\n\n\tmouseLeave$ = new Subject<void>();\n\n\t@HostListener('mouseleave')\n\tmouseLeave(): void {\n\t\tthis.mouseLeave$.next();\n\t}\n\n\tcontent: Signal<string | SafeHtml>;\n\n\t@HostBinding('attr.id')\n\tid: string;\n\n\tcontentPositionClasses: Record<string, boolean> = {};\n\n\tsetPanelPosition(posX: HorizontalConnectionPos, posY: VerticalConnectionPos): void {\n\t\tthis.contentPositionClasses = {\n\t\t\t'is-before': posX === 'end',\n\t\t\t'is-after': posX === 'start',\n\t\t\t'is-above': posY === 'bottom',\n\t\t\t'is-below': posY === 'top',\n\t\t};\n\t}\n}\n","<div class=\"tooltip\" [ngClass]=\"contentPositionClasses\" [innerHtml]=\"content()\"></div>\n","import { NgModule } from '@angular/core';\nimport { LuTooltipPanelComponent } from './tooltip-panel.component';\n\n@NgModule({\n\timports: [LuTooltipPanelComponent],\n\texports: [LuTooltipPanelComponent],\n})\nexport class LuTooltipPanelModule {}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\nimport { filter, firstValueFrom, shareReplay, timer } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class EllipsisRuler {\n\t// As EllipsisRuler is a singleton, we can use shareReplay so the first subscriber starts the timer and the last one stops it\n\t// The timer allows us to alternate between read and write phases\n\t#interval = timer(100, 100).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\t#readPhase = this.#interval.pipe(filter((n) => n % 2 === 0));\n\t#writePhase = this.#interval.pipe(filter((n) => n % 2 === 1));\n\n\t#document = inject(DOCUMENT);\n\treadonly parentMasked = this.#document.createElement('div');\n\n\tconstructor() {\n\t\tthis.parentMasked.classList.add('u-mask');\n\t\tthis.parentMasked.setAttribute('aria-hidden', 'true');\n\t\tthis.#document.body.appendChild(this.parentMasked);\n\t}\n\n\t/**\n\t * Hacky af but let's explain everything\n\t * This method checks for ellipsis by cloning the node and checking its width against original element.\n\t *\n\t * We used to do this using scrollWidth but the thing is, it's a rounded value. Sometimes,\n\t * you'd get true while it should be false and vice-versa, because of rounding.\n\t *\n\t * So we duplicate the properties we're interested in on the element to be tested to calculate its ideal size,\n\t * which we then compare with its current size.\n\t *\n\t * To avoid doing multiple reflow per check, we wait for the next microtask on each key step of the process:\n\t * - After computing element style\n\t * - After cloning the element and appending it to the DOM\n\t * - After computing the width of the cloned element\n\t * - After removing the cloned element from the DOM\n\t *\n\t * This way, we have 2 reflows per check, no matter how many elements are checked in a row.\n\t */\n\tasync hasEllipsis(element: HTMLElement): Promise<boolean> {\n\t\tlet elementStyle: CSSStyleDeclaration;\n\t\tlet bodyStyle: CSSStyleDeclaration;\n\n\t\tawait this.#readOperation(() => {\n\t\t\telementStyle = getComputedStyle(element);\n\t\t\tbodyStyle = getComputedStyle(document.body);\n\t\t});\n\n\t\tif (elementStyle.textOverflow !== 'ellipsis') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle } = elementStyle;\n\n\t\tconst fontSize = (Number(elementStyle.fontSize.replace('px', '')) / Number(bodyStyle.fontSize.replace('px', ''))).toString() + 'rem';\n\n\t\tlet elementCloned: HTMLDivElement;\n\n\t\tawait this.#writeOperation(() => {\n\t\t\telementCloned = this.#document.createElement('div');\n\n\t\t\tObject.assign(elementCloned.style, {\n\t\t\t\twidth: 'fit-content',\n\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\tposition: 'absolute',\n\t\t\t\tvisibility: 'hidden',\n\t\t\t\tpadding,\n\t\t\t\tborderWidth,\n\t\t\t\tborderStyle,\n\t\t\t\tboxSizing,\n\t\t\t\tfontFamily,\n\t\t\t\tfontWeight,\n\t\t\t\tfontStyle,\n\t\t\t\tfontSize,\n\t\t\t});\n\n\t\t\tthis.parentMasked.appendChild(elementCloned);\n\n\t\t\telementCloned.innerHTML = element.innerHTML;\n\t\t});\n\n\t\t// To avoid multiple reflows, we wait for the next microtask before calculating the width\n\n\t\ttry {\n\t\t\tlet clonedElementWidth: number;\n\t\t\tlet elementWidth: number;\n\n\t\t\tawait this.#readOperation(() => {\n\t\t\t\tclonedElementWidth = elementCloned.getBoundingClientRect().width;\n\t\t\t\telementWidth = element.getBoundingClientRect().width;\n\t\t\t});\n\n\t\t\treturn clonedElementWidth > elementWidth;\n\t\t} catch {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\tawait this.#writeOperation(() => {\n\t\t\t\tthis.parentMasked.removeChild(elementCloned);\n\t\t\t});\n\t\t}\n\t}\n\n\t// To avoid multiple reflows, we wait for the next read phase before computing/reading element style\n\tasync #readOperation(operation: () => void): Promise<void> {\n\t\tawait firstValueFrom(this.#readPhase);\n\t\toperation();\n\t}\n\n\t// To avoid multiple reflows, we wait for the next write before inserting/removing the cloned element\n\tasync #writeOperation(operation: () => void): Promise<void> {\n\t\tawait firstValueFrom(this.#writePhase);\n\t\toperation();\n\t}\n}\n","import { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, OriginConnectionPosition, Overlay, OverlayConnectionPosition, OverlayRef, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n\tAfterContentInit,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tHostBinding,\n\tHostListener,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tRenderer2,\n\tbooleanAttribute,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { LuPopoverPosition } from '@lucca-front/ng/popover';\nimport { BehaviorSubject, Observable, Subject, combineLatest, merge, startWith, switchMap, timer } from 'rxjs';\nimport { debounce, debounceTime, filter, map } from 'rxjs/operators';\nimport { LuTooltipPanelComponent } from '../panel';\nimport { EllipsisRuler } from './ellipsis.ruler';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[luTooltip]',\n\texportAs: 'luTooltip',\n\tstandalone: true,\n})\nexport class LuTooltipTriggerDirective implements AfterContentInit, OnDestroy {\n\t#overlay = inject(Overlay);\n\n\t#host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t#renderer = inject(Renderer2);\n\t#ruler = inject(EllipsisRuler);\n\t#zone = inject(NgZone, { optional: true });\n\n\t#destroyRef = inject(DestroyRef);\n\n\tluTooltip = input<string | SafeHtml>();\n\n\t#openDelay$ = new BehaviorSubject<number>(300);\n\n\t@Input({ transform: numberAttribute })\n\tset luTooltipEnterDelay(delay: number) {\n\t\tthis.#openDelay$.next(delay);\n\t}\n\n\t#closeDelay$ = new BehaviorSubject<number>(100);\n\n\t@Input({ transform: numberAttribute })\n\tset luTooltipLeaveDelay(delay: number) {\n\t\tthis.#closeDelay$.next(delay);\n\t}\n\n\tluTooltipDisabled = input(false, { transform: booleanAttribute });\n\n\t@Input({ transform: booleanAttribute })\n\tluTooltipOnlyForDisplay = false;\n\n\t@Input()\n\tluTooltipPosition: LuPopoverPosition = 'above';\n\n\tluTooltipWhenEllipsis = input(false, { transform: booleanAttribute });\n\n\tresize$ = new Observable((observer) => {\n\t\tconst resizeObserver = new ResizeObserver(() => {\n\t\t\tobserver.next();\n\t\t});\n\t\tresizeObserver.observe(this.#host.nativeElement);\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect();\n\t\t};\n\t});\n\n\t#hasEllipsis$ = combineLatest([\n\t\ttoObservable(\n\t\t\t// 1. Group necessary inputs\n\t\t\tcomputed(() => ({ whenEllipsis: this.luTooltipWhenEllipsis(), disabled: this.luTooltipDisabled() })),\n\t\t),\n\t\t// Resend resize events to trigger the check\n\t\tthis.resize$.pipe(debounceTime(150)),\n\t]).pipe(\n\t\t// 2. Keep only necessary inputs\n\t\tfilter(([{ whenEllipsis, disabled }]) => !disabled && whenEllipsis),\n\t\t// 3. Check for ellipsis\n\t\tswitchMap(() => this.runOutsideZoneJS(() => this.#ruler.hasEllipsis(this.#host.nativeElement))),\n\t);\n\n\t#hasEllipsis = toSignal(this.#hasEllipsis$, { initialValue: false });\n\n\topen$ = new Subject<void>();\n\n\tclose$ = new Subject<void>();\n\n\t@HostListener('mouseenter')\n\tonMouseEnter() {\n\t\tthis.open$.next();\n\t}\n\n\t@HostListener('mouseleave')\n\tonMouseLeave() {\n\t\tthis.close$.next();\n\t}\n\n\t@HostListener('focus')\n\tonFocus() {\n\t\tif (this.#host.nativeElement.getAttribute('aria-expanded') !== 'true') {\n\t\t\tthis.open$.next();\n\t\t}\n\t}\n\n\t@HostListener('blur')\n\tonBlur() {\n\t\tthis.close$.next();\n\t}\n\n\t#generatedId = `${this.#host.nativeElement.tagName.toLowerCase()}-tooltip-${nextId++}`;\n\n\t@HostBinding('attr.id')\n\t_id: string;\n\n\t@HostBinding('attr.aria-describedby')\n\tget ariaDescribedBy() {\n\t\tif (this.luTooltipDisabled() || this.luTooltipWhenEllipsis() || this.luTooltipOnlyForDisplay) {\n\t\t\treturn null;\n\t\t}\n\t\treturn `${this.#generatedId}-panel`;\n\t}\n\n\toverlayRef?: OverlayRef;\n\n\tconstructor() {\n\t\tcombineLatest([this.#openDelay$, this.#closeDelay$])\n\t\t\t.pipe(\n\t\t\t\tswitchMap(([openDelay, closeDelay]) => {\n\t\t\t\t\t// We only filter open events because even if it's disabled while opened,\n\t\t\t\t\t// \twe want the tooltip to be able to close itself no matter what\n\t\t\t\t\tconst openEvents$ = this.open$.pipe(\n\t\t\t\t\t\tfilter(() => {\n\t\t\t\t\t\t\tif (this.luTooltipDisabled()) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// If not disabled, let's check for ellipsis if needed\n\t\t\t\t\t\t\tif (this.luTooltipWhenEllipsis()) {\n\t\t\t\t\t\t\t\treturn this.#hasEllipsis();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// If it's not disabled and is not triggered based on ellipsis, just return true\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tmap(() => 'open'),\n\t\t\t\t\t);\n\t\t\t\t\treturn merge(openEvents$, this.close$.pipe(map(() => 'close'))).pipe(\n\t\t\t\t\t\tdebounce((event) => {\n\t\t\t\t\t\t\treturn timer(event === 'open' ? openDelay : closeDelay);\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t)\n\t\t\t.subscribe((event) => {\n\t\t\t\tif (event === 'open') {\n\t\t\t\t\tthis.openTooltip();\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeTooltip();\n\t\t\t\t}\n\t\t\t});\n\n\t\teffect(() => {\n\t\t\tif (!this.luTooltipDisabled() && (!this.luTooltipWhenEllipsis() || this.#hasEllipsis())) {\n\t\t\t\tthis.setAccessibilityProperties(0);\n\t\t\t} else {\n\t\t\t\tthis.setAccessibilityProperties(null);\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closeTooltip();\n\t}\n\n\tprivate openTooltip(): void {\n\t\t// If tooltip is already opened, don't do anything\n\t\tif (this.overlayRef) {\n\t\t\treturn;\n\t\t}\n\t\tconst position = this.legacyPositionBuilder();\n\t\tthis.overlayRef = this.#overlay.create({\n\t\t\tpositionStrategy: position,\n\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\tdisposeOnNavigation: true,\n\t\t});\n\t\tconst portal = new ComponentPortal(LuTooltipPanelComponent);\n\t\tconst ref = this.overlayRef.attach(portal);\n\t\tposition.positionChanges\n\t\t\t.pipe(\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t\tmap(({ connectionPair }) => connectionPair),\n\t\t\t\tstartWith(position.positions[0]),\n\t\t\t)\n\t\t\t.subscribe(({ overlayX, overlayY }) => {\n\t\t\t\tref.instance.setPanelPosition(overlayX, overlayY);\n\t\t\t});\n\t\tif (this.luTooltip()) {\n\t\t\tref.instance.content = this.luTooltip;\n\t\t} else if (this.luTooltipWhenEllipsis()) {\n\t\t\tref.instance.content = signal(this.#host.nativeElement.innerText);\n\t\t} else {\n\t\t\tref.instance.content = signal('');\n\t\t}\n\t\tref.instance.id = this.ariaDescribedBy;\n\t\t// On tooltip leave => trigger close\n\t\tref.instance.mouseLeave$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.close$.next());\n\t\t// On tooltip enter => trigger open to keep it opened\n\t\tref.instance.mouseEnter$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.open$.next());\n\t}\n\n\tprivate closeTooltip(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.detach();\n\t\t\tdelete this.overlayRef;\n\t\t}\n\t}\n\n\tprivate setAccessibilityProperties(tabindex: number | null): void {\n\t\tif (tabindex === null) {\n\t\t\tthis.#renderer.removeAttribute(this.#host.nativeElement, 'tabindex');\n\t\t\treturn;\n\t\t}\n\n\t\tconst tag = this.#host.nativeElement.tagName.toLowerCase();\n\t\tconst nativelyFocusableTags = ['a', 'button', 'input', 'select', 'textarea'];\n\t\tconst isNativelyFocusableTag = nativelyFocusableTags.includes(tag);\n\n\t\tconst hasATabIndex = this.#host.nativeElement.getAttribute('tabindex') !== null;\n\n\t\tif (!isNativelyFocusableTag && !hasATabIndex) {\n\t\t\tthis.#renderer.setAttribute(this.#host.nativeElement, 'tabindex', tabindex.toString());\n\t\t}\n\t}\n\n\tngAfterContentInit(): void {\n\t\tthis._id = this.#host.nativeElement.id || this.#generatedId;\n\t}\n\n\tprivate runOutsideZoneJS<T>(callback: () => T): T {\n\t\treturn this.#zone ? this.#zone.runOutsideAngular(callback) : callback();\n\t}\n\n\t/**********************\n\t *\n\t * LEGACY STUFF TO HANDLE EXISTING POSITIONS\n\t *\n\t ***********************/\n\n\tprivate legacyPositionBuilder(): FlexibleConnectedPositionStrategy {\n\t\tconst connectionPosition: OriginConnectionPosition = {\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t};\n\n\t\t// Position\n\t\tconst position = this.luTooltipPosition;\n\t\tif (position === 'above') {\n\t\t\tconnectionPosition.originY = 'top';\n\t\t} else if (position === 'below') {\n\t\t\tconnectionPosition.originY = 'bottom';\n\t\t} else if (position === 'before') {\n\t\t\tconnectionPosition.originX = 'start';\n\t\t} else if (position === 'after') {\n\t\t\tconnectionPosition.originX = 'end';\n\t\t}\n\n\t\t// Alignment\n\t\tif (position === 'above' || position === 'below') {\n\t\t\tconnectionPosition.originX = 'center';\n\t\t} else {\n\t\t\tconnectionPosition.originY = 'center';\n\t\t}\n\n\t\tconst overlayPosition: OverlayConnectionPosition = {\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t};\n\n\t\tif (position === 'above' || position === 'below') {\n\t\t\toverlayPosition.overlayX = connectionPosition.originX;\n\t\t\toverlayPosition.overlayY = position === 'above' ? 'bottom' : 'top';\n\t\t} else {\n\t\t\toverlayPosition.overlayX = position === 'before' ? 'end' : 'start';\n\t\t\toverlayPosition.overlayY = connectionPosition.originY;\n\t\t}\n\n\t\treturn this.#overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.#host)\n\t\t\t.withPositions([\n\t\t\t\t{\n\t\t\t\t\toriginX: connectionPosition.originX,\n\t\t\t\t\toriginY: connectionPosition.originY,\n\t\t\t\t\toverlayX: overlayPosition.overlayX,\n\t\t\t\t\toverlayY: overlayPosition.overlayY,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: connectionPosition.originX,\n\t\t\t\t\toriginY: this.invertVerticalPos(connectionPosition.originY),\n\t\t\t\t\toverlayX: overlayPosition.overlayX,\n\t\t\t\t\toverlayY: this.invertVerticalPos(overlayPosition.overlayY),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: this.invertHorizontalPos(connectionPosition.originX),\n\t\t\t\t\toriginY: connectionPosition.originY,\n\t\t\t\t\toverlayX: this.invertHorizontalPos(overlayPosition.overlayX),\n\t\t\t\t\toverlayY: overlayPosition.overlayY,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: this.invertHorizontalPos(connectionPosition.originX),\n\t\t\t\t\toriginY: this.invertVerticalPos(connectionPosition.originY),\n\t\t\t\t\toverlayX: this.invertHorizontalPos(overlayPosition.overlayX),\n\t\t\t\t\toverlayY: this.invertVerticalPos(overlayPosition.overlayY),\n\t\t\t\t},\n\t\t\t]);\n\t}\n\n\tprivate invertVerticalPos(y: VerticalConnectionPos): VerticalConnectionPos {\n\t\tif (y === 'top') {\n\t\t\treturn 'bottom';\n\t\t} else if (y === 'bottom') {\n\t\t\treturn 'top';\n\t\t}\n\t\treturn y;\n\t}\n\n\tprivate invertHorizontalPos(x: HorizontalConnectionPos): HorizontalConnectionPos {\n\t\tif (x === 'end') {\n\t\t\treturn 'start';\n\t\t} else if (x === 'start') {\n\t\t\treturn 'end';\n\t\t}\n\t\treturn x;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { LuTooltipTriggerDirective } from './tooltip-trigger.directive';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n\timports: [LuTooltipTriggerDirective, OverlayModule],\n\texports: [LuTooltipTriggerDirective],\n})\nexport class LuTooltipTriggerModule {}\n","import { NgModule } from '@angular/core';\nimport { LuTooltipPanelModule } from './panel/index';\nimport { LuTooltipTriggerModule } from './trigger/index';\n\n@NgModule({\n\timports: [LuTooltipTriggerModule, LuTooltipPanelModule],\n\texports: [LuTooltipTriggerModule, LuTooltipPanelModule],\n})\nexport class LuTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucca-front/ng",
3
- "version": "19.1.1",
3
+ "version": "19.1.2",
4
4
  "description": "A library of icons made by the team @Lucca",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,8 +26,8 @@
26
26
  "@angular/common": "^19.0.0",
27
27
  "@angular/core": "^19.0.0",
28
28
  "@angular/cdk": "^19.0.0",
29
- "@lucca-front/icons": "19.1.1",
30
- "@lucca-front/scss": "19.1.1",
29
+ "@lucca-front/icons": "19.1.2",
30
+ "@lucca-front/scss": "19.1.2",
31
31
  "isomorphic-dompurify": "^2.17.0",
32
32
  "date-fns": "^3.6.0",
33
33
  "rxjs": "^7.8.0"
@@ -49,17 +49,13 @@
49
49
  "types": "./a11y/index.d.ts",
50
50
  "default": "./fesm2022/lucca-front-ng-a11y.mjs"
51
51
  },
52
- "./button": {
53
- "types": "./button/index.d.ts",
54
- "default": "./fesm2022/lucca-front-ng-button.mjs"
55
- },
56
52
  "./animations": {
57
53
  "types": "./animations/index.d.ts",
58
54
  "default": "./fesm2022/lucca-front-ng-animations.mjs"
59
55
  },
60
- "./comment": {
61
- "types": "./comment/index.d.ts",
62
- "default": "./fesm2022/lucca-front-ng-comment.mjs"
56
+ "./button": {
57
+ "types": "./button/index.d.ts",
58
+ "default": "./fesm2022/lucca-front-ng-button.mjs"
63
59
  },
64
60
  "./core": {
65
61
  "types": "./core/index.d.ts",
@@ -69,6 +65,10 @@
69
65
  "types": "./callout/index.d.ts",
70
66
  "default": "./fesm2022/lucca-front-ng-callout.mjs"
71
67
  },
68
+ "./comment": {
69
+ "types": "./comment/index.d.ts",
70
+ "default": "./fesm2022/lucca-front-ng-comment.mjs"
71
+ },
72
72
  "./core-select": {
73
73
  "types": "./core-select/index.d.ts",
74
74
  "default": "./fesm2022/lucca-front-ng-core-select.mjs"
@@ -101,14 +101,14 @@
101
101
  "types": "./dropdown/index.d.ts",
102
102
  "default": "./fesm2022/lucca-front-ng-dropdown.mjs"
103
103
  },
104
- "./establishment": {
105
- "types": "./establishment/index.d.ts",
106
- "default": "./fesm2022/lucca-front-ng-establishment.mjs"
107
- },
108
104
  "./empty-state": {
109
105
  "types": "./empty-state/index.d.ts",
110
106
  "default": "./fesm2022/lucca-front-ng-empty-state.mjs"
111
107
  },
108
+ "./establishment": {
109
+ "types": "./establishment/index.d.ts",
110
+ "default": "./fesm2022/lucca-front-ng-establishment.mjs"
111
+ },
112
112
  "./fancy-box": {
113
113
  "types": "./fancy-box/index.d.ts",
114
114
  "default": "./fesm2022/lucca-front-ng-fancy-box.mjs"
@@ -121,22 +121,22 @@
121
121
  "types": "./formly/index.d.ts",
122
122
  "default": "./fesm2022/lucca-front-ng-formly.mjs"
123
123
  },
124
- "./icon": {
125
- "types": "./icon/index.d.ts",
126
- "default": "./fesm2022/lucca-front-ng-icon.mjs"
127
- },
128
- "./inline-message": {
129
- "types": "./inline-message/index.d.ts",
130
- "default": "./fesm2022/lucca-front-ng-inline-message.mjs"
131
- },
132
124
  "./forms": {
133
125
  "types": "./forms/index.d.ts",
134
126
  "default": "./fesm2022/lucca-front-ng-forms.mjs"
135
127
  },
128
+ "./icon": {
129
+ "types": "./icon/index.d.ts",
130
+ "default": "./fesm2022/lucca-front-ng-icon.mjs"
131
+ },
136
132
  "./input": {
137
133
  "types": "./input/index.d.ts",
138
134
  "default": "./fesm2022/lucca-front-ng-input.mjs"
139
135
  },
136
+ "./inline-message": {
137
+ "types": "./inline-message/index.d.ts",
138
+ "default": "./fesm2022/lucca-front-ng-inline-message.mjs"
139
+ },
140
140
  "./link": {
141
141
  "types": "./link/index.d.ts",
142
142
  "default": "./fesm2022/lucca-front-ng-link.mjs"
@@ -145,14 +145,14 @@
145
145
  "types": "./modal/index.d.ts",
146
146
  "default": "./fesm2022/lucca-front-ng-modal.mjs"
147
147
  },
148
- "./new-badge": {
149
- "types": "./new-badge/index.d.ts",
150
- "default": "./fesm2022/lucca-front-ng-new-badge.mjs"
151
- },
152
148
  "./multi-select": {
153
149
  "types": "./multi-select/index.d.ts",
154
150
  "default": "./fesm2022/lucca-front-ng-multi-select.mjs"
155
151
  },
152
+ "./new-badge": {
153
+ "types": "./new-badge/index.d.ts",
154
+ "default": "./fesm2022/lucca-front-ng-new-badge.mjs"
155
+ },
156
156
  "./number": {
157
157
  "types": "./number/index.d.ts",
158
158
  "default": "./fesm2022/lucca-front-ng-number.mjs"
@@ -193,14 +193,14 @@
193
193
  "types": "./popup-employee/index.d.ts",
194
194
  "default": "./fesm2022/lucca-front-ng-popup-employee.mjs"
195
195
  },
196
- "./safe-content": {
197
- "types": "./safe-content/index.d.ts",
198
- "default": "./fesm2022/lucca-front-ng-safe-content.mjs"
199
- },
200
196
  "./qualification": {
201
197
  "types": "./qualification/index.d.ts",
202
198
  "default": "./fesm2022/lucca-front-ng-qualification.mjs"
203
199
  },
200
+ "./safe-content": {
201
+ "types": "./safe-content/index.d.ts",
202
+ "default": "./fesm2022/lucca-front-ng-safe-content.mjs"
203
+ },
204
204
  "./scroll": {
205
205
  "types": "./scroll/index.d.ts",
206
206
  "default": "./fesm2022/lucca-front-ng-scroll.mjs"
@@ -213,14 +213,14 @@
213
213
  "types": "./sidepanel/index.d.ts",
214
214
  "default": "./fesm2022/lucca-front-ng-sidepanel.mjs"
215
215
  },
216
- "./skeleton": {
217
- "types": "./skeleton/index.d.ts",
218
- "default": "./fesm2022/lucca-front-ng-skeleton.mjs"
219
- },
220
216
  "./simple-select": {
221
217
  "types": "./simple-select/index.d.ts",
222
218
  "default": "./fesm2022/lucca-front-ng-simple-select.mjs"
223
219
  },
220
+ "./skeleton": {
221
+ "types": "./skeleton/index.d.ts",
222
+ "default": "./fesm2022/lucca-front-ng-skeleton.mjs"
223
+ },
224
224
  "./statusBadge": {
225
225
  "types": "./statusBadge/index.d.ts",
226
226
  "default": "./fesm2022/lucca-front-ng-statusBadge.mjs"
@@ -253,14 +253,14 @@
253
253
  "types": "./core-select/api/index.d.ts",
254
254
  "default": "./fesm2022/lucca-front-ng-core-select-api.mjs"
255
255
  },
256
- "./core-select/job-qualification": {
257
- "types": "./core-select/job-qualification/index.d.ts",
258
- "default": "./fesm2022/lucca-front-ng-core-select-job-qualification.mjs"
259
- },
260
256
  "./core-select/establishment": {
261
257
  "types": "./core-select/establishment/index.d.ts",
262
258
  "default": "./fesm2022/lucca-front-ng-core-select-establishment.mjs"
263
259
  },
260
+ "./core-select/job-qualification": {
261
+ "types": "./core-select/job-qualification/index.d.ts",
262
+ "default": "./fesm2022/lucca-front-ng-core-select-job-qualification.mjs"
263
+ },
264
264
  "./core-select/user": {
265
265
  "types": "./core-select/user/index.d.ts",
266
266
  "default": "./fesm2022/lucca-front-ng-core-select-user.mjs"
@@ -29,6 +29,7 @@ export declare class LuTooltipTriggerDirective implements AfterContentInit, OnDe
29
29
  private closeTooltip;
30
30
  private setAccessibilityProperties;
31
31
  ngAfterContentInit(): void;
32
+ private runOutsideZoneJS;
32
33
  /**********************
33
34
  *
34
35
  * LEGACY STUFF TO HANDLE EXISTING POSITIONS