@lucca-front/ng 18.3.0 → 18.3.1
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.
- package/core/type/style.d.ts +1 -1
- package/core-select/user/users.directive.d.ts +2 -1
- package/esm2022/callout/callout-disclosure/callout-disclosure.component.mjs +3 -3
- package/esm2022/comment/comment/comment.component.mjs +3 -3
- package/esm2022/core/portal/portal.directive.mjs +8 -3
- package/esm2022/core/type/style.mjs +1 -1
- package/esm2022/core-select/user/user-option.component.mjs +3 -3
- package/esm2022/core-select/user/users.directive.mjs +16 -23
- package/esm2022/department/select/feeder/department-feeder.component.mjs +2 -2
- package/esm2022/department/select/input/department-select-input.component.mjs +2 -1
- package/esm2022/department/service/department-v4.service.mjs +2 -2
- package/esm2022/dialog/dialog/dialog.component.mjs +2 -2
- package/esm2022/dialog/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2022/form-field/form-field.component.mjs +3 -3
- package/esm2022/multi-select/input/select-all/with-select-all.directive.mjs +10 -9
- package/esm2022/multi-select/public-api.mjs +2 -1
- package/esm2022/multi-select/select.model.mjs +2 -2
- package/esm2022/multi-select/select.utils.mjs +32 -0
- package/esm2022/tooltip/trigger/ellipsis.ruler.mjs +59 -0
- package/esm2022/tooltip/trigger/tooltip-trigger.directive.mjs +8 -52
- package/fesm2022/lucca-front-ng-callout.mjs +2 -2
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-comment.mjs +2 -2
- package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-user.mjs +21 -28
- package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core.mjs +7 -2
- package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-department.mjs +3 -2
- package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dialog.mjs +4 -4
- package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +2 -2
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +44 -10
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tooltip.mjs +62 -51
- package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
- package/multi-select/public-api.d.ts +2 -0
- package/multi-select/select.utils.d.ts +14 -0
- package/package.json +31 -31
- package/tooltip/trigger/ellipsis.ruler.d.ts +20 -0
- package/tooltip/trigger/tooltip-trigger.directive.d.ts +0 -13
|
@@ -1,8 +1,8 @@
|
|
|
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, ElementRef, Renderer2, ChangeDetectorRef, numberAttribute, booleanAttribute, Directive, Input } from '@angular/core';
|
|
3
|
+
import { inject, DestroyRef, Component, ChangeDetectionStrategy, HostListener, HostBinding, NgModule, Injectable, ElementRef, Renderer2, ChangeDetectorRef, numberAttribute, booleanAttribute, Directive, Input } from '@angular/core';
|
|
4
4
|
import { Subject, BehaviorSubject, Observable, combineLatest, switchMap, merge, timer, startWith } from 'rxjs';
|
|
5
|
-
import { NgClass } from '@angular/common';
|
|
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 { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
@@ -76,11 +76,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
76
76
|
}]
|
|
77
77
|
}] });
|
|
78
78
|
|
|
79
|
+
class EllipsisRuler {
|
|
80
|
+
#document;
|
|
81
|
+
constructor() {
|
|
82
|
+
this.#document = inject(DOCUMENT);
|
|
83
|
+
this.elementCloned = this.#document.createElement('div');
|
|
84
|
+
this.parentMasked = this.#document.createElement('div');
|
|
85
|
+
this.parentMasked.classList.add('u-mask');
|
|
86
|
+
this.parentMasked.setAttribute('aria-hidden', 'true');
|
|
87
|
+
this.elementCloned.style.width = 'fit-content';
|
|
88
|
+
this.elementCloned.style.whiteSpace = 'nowrap';
|
|
89
|
+
this.parentMasked.appendChild(this.elementCloned);
|
|
90
|
+
this.#document.body.appendChild(this.parentMasked);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Hacky af but let's explain everything
|
|
94
|
+
* This method checks for ellipsis by cloning the node and checking its width against original element.
|
|
95
|
+
*
|
|
96
|
+
* We used to do this using scrollWidth but the thing is, it's a rounded value. Sometimes,
|
|
97
|
+
* you'd get true while it should be false and vice-versa, because of rounding.
|
|
98
|
+
*
|
|
99
|
+
* So we duplicate the properties we're interested in on the element to be tested to calculate its ideal size,
|
|
100
|
+
* which we then compare with its current size.
|
|
101
|
+
*/
|
|
102
|
+
hasEllipsis(element) {
|
|
103
|
+
const elementStyle = window.getComputedStyle(element);
|
|
104
|
+
if (elementStyle.textOverflow !== 'ellipsis') {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
Object.assign(this.elementCloned.style, {
|
|
108
|
+
padding: elementStyle.padding,
|
|
109
|
+
borderWidth: elementStyle.borderWidth,
|
|
110
|
+
borderStyle: elementStyle.borderStyle,
|
|
111
|
+
boxSizing: elementStyle.boxSizing,
|
|
112
|
+
fontFamily: elementStyle.fontFamily,
|
|
113
|
+
fontWeight: elementStyle.fontWeight,
|
|
114
|
+
fontStyle: elementStyle.fontStyle,
|
|
115
|
+
fontSize: (Number(elementStyle.fontSize.replace('px', '')) / Number(window.getComputedStyle(document.body).fontSize.replace('px', ''))).toString() + 'rem',
|
|
116
|
+
});
|
|
117
|
+
this.elementCloned.innerHTML = element.innerHTML;
|
|
118
|
+
try {
|
|
119
|
+
const elementClonedWidth = this.elementCloned.getBoundingClientRect().width;
|
|
120
|
+
const elementWidth = element.getBoundingClientRect().width;
|
|
121
|
+
return elementClonedWidth > elementWidth;
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: EllipsisRuler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
128
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: EllipsisRuler, providedIn: 'root' }); }
|
|
129
|
+
}
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: EllipsisRuler, decorators: [{
|
|
131
|
+
type: Injectable,
|
|
132
|
+
args: [{ providedIn: 'root' }]
|
|
133
|
+
}], ctorParameters: () => [] });
|
|
134
|
+
|
|
79
135
|
let nextId = 0;
|
|
80
136
|
class LuTooltipTriggerDirective {
|
|
81
137
|
#overlay;
|
|
82
138
|
#host;
|
|
83
139
|
#renderer;
|
|
140
|
+
#ruler;
|
|
84
141
|
#destroyRef;
|
|
85
142
|
#cdr;
|
|
86
143
|
#openDelay$;
|
|
@@ -123,6 +180,7 @@ class LuTooltipTriggerDirective {
|
|
|
123
180
|
this.#overlay = inject(Overlay);
|
|
124
181
|
this.#host = inject(ElementRef);
|
|
125
182
|
this.#renderer = inject(Renderer2);
|
|
183
|
+
this.#ruler = inject(EllipsisRuler);
|
|
126
184
|
this.#destroyRef = inject(DestroyRef);
|
|
127
185
|
this.#cdr = inject(ChangeDetectorRef);
|
|
128
186
|
this.#openDelay$ = new BehaviorSubject(300);
|
|
@@ -153,7 +211,7 @@ class LuTooltipTriggerDirective {
|
|
|
153
211
|
}
|
|
154
212
|
// If not disabled, let's check for ellipsis if needed
|
|
155
213
|
if (this.luTooltipWhenEllipsis) {
|
|
156
|
-
return this.hasEllipsis();
|
|
214
|
+
return this.#ruler.hasEllipsis(this.#host.nativeElement);
|
|
157
215
|
}
|
|
158
216
|
// If it's not disabled and is not triggered based on ellipsis, just return true
|
|
159
217
|
return true;
|
|
@@ -215,7 +273,7 @@ class LuTooltipTriggerDirective {
|
|
|
215
273
|
}
|
|
216
274
|
}
|
|
217
275
|
setAccessibilityProperties(tabindex) {
|
|
218
|
-
if (this.#disabled || (this.luTooltipWhenEllipsis && !this.hasEllipsis())) {
|
|
276
|
+
if (this.#disabled || (this.luTooltipWhenEllipsis && !this.#ruler.hasEllipsis(this.#host.nativeElement))) {
|
|
219
277
|
this.#renderer.removeAttribute(this.#host.nativeElement, 'tabindex');
|
|
220
278
|
return;
|
|
221
279
|
}
|
|
@@ -227,53 +285,6 @@ class LuTooltipTriggerDirective {
|
|
|
227
285
|
this.#renderer.setAttribute(this.#host.nativeElement, 'tabindex', tabindex.toString());
|
|
228
286
|
}
|
|
229
287
|
}
|
|
230
|
-
/**
|
|
231
|
-
* Hacky af but let's explain everything
|
|
232
|
-
* This method checks for ellipsis by cloning the node and checking its width against original element.
|
|
233
|
-
*
|
|
234
|
-
* We used to do this using scrollWidth but the thing is, it's a rounded value. Sometimes,
|
|
235
|
-
* you'd get true while it should be false and vice-versa, because of rounding.
|
|
236
|
-
*
|
|
237
|
-
* So we duplicate the properties we're interested in on the element to be tested to calculate its ideal size,
|
|
238
|
-
* which we then compare with its current size.
|
|
239
|
-
*
|
|
240
|
-
* @private
|
|
241
|
-
*/
|
|
242
|
-
hasEllipsis() {
|
|
243
|
-
if (window.getComputedStyle(this.#host.nativeElement).textOverflow !== 'ellipsis') {
|
|
244
|
-
return false;
|
|
245
|
-
}
|
|
246
|
-
const element = this.#host.nativeElement;
|
|
247
|
-
const elementCloned = this.#renderer.createElement('div');
|
|
248
|
-
const parentMasked = this.#renderer.createElement('div');
|
|
249
|
-
const elementStyle = window.getComputedStyle(element);
|
|
250
|
-
this.#renderer.addClass(parentMasked, 'u-mask');
|
|
251
|
-
this.#renderer.setAttribute(parentMasked, 'aria-hidden', 'true');
|
|
252
|
-
this.#renderer.setStyle(elementCloned, 'width', 'fit-content');
|
|
253
|
-
this.#renderer.setStyle(elementCloned, 'padding', elementStyle.padding);
|
|
254
|
-
this.#renderer.setStyle(elementCloned, 'borderWidth', elementStyle.borderWidth);
|
|
255
|
-
this.#renderer.setStyle(elementCloned, 'borderStyle', elementStyle.borderStyle);
|
|
256
|
-
this.#renderer.setStyle(elementCloned, 'boxSizing', elementStyle.boxSizing);
|
|
257
|
-
this.#renderer.setStyle(elementCloned, 'fontFamily', elementStyle.fontFamily);
|
|
258
|
-
this.#renderer.setStyle(elementCloned, 'fontWeight', elementStyle.fontWeight);
|
|
259
|
-
this.#renderer.setStyle(elementCloned, 'fontStyle', elementStyle.fontStyle);
|
|
260
|
-
this.#renderer.setStyle(elementCloned, 'whiteSpace', 'nowrap');
|
|
261
|
-
this.#renderer.setStyle(elementCloned, 'fontSize', (Number(elementStyle.fontSize.replace('px', '')) / Number(window.getComputedStyle(document.body).fontSize.replace('px', ''))).toString() + 'rem');
|
|
262
|
-
elementCloned.innerHTML = element.innerHTML;
|
|
263
|
-
this.#renderer.appendChild(parentMasked, elementCloned);
|
|
264
|
-
this.#renderer.appendChild(document.body, parentMasked);
|
|
265
|
-
try {
|
|
266
|
-
const elementClonedWidth = elementCloned.getBoundingClientRect().width;
|
|
267
|
-
const elementWidth = element.getBoundingClientRect().width;
|
|
268
|
-
return elementClonedWidth > elementWidth;
|
|
269
|
-
}
|
|
270
|
-
catch (e) {
|
|
271
|
-
return false;
|
|
272
|
-
}
|
|
273
|
-
finally {
|
|
274
|
-
parentMasked.remove();
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
288
|
ngAfterContentInit() {
|
|
278
289
|
this.setAccessibilityProperties(0);
|
|
279
290
|
this._id = this.#host.nativeElement.id || this.#generatedId;
|
|
@@ -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/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 } 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: 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 { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, OriginConnectionPosition, Overlay, OverlayConnectionPosition, OverlayRef, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n\tAfterContentInit,\n\tbooleanAttribute,\n\tChangeDetectorRef,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tInput,\n\tnumberAttribute,\n\tOnDestroy,\n\tRenderer2,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { LuPopoverPosition } from '@lucca-front/ng/popover';\nimport { BehaviorSubject, combineLatest, merge, Observable, startWith, Subject, switchMap, timer } from 'rxjs';\nimport { debounce, debounceTime, filter, map } from 'rxjs/operators';\nimport { LuTooltipPanelComponent } from '../panel';\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\n\t#destroyRef = inject(DestroyRef);\n\n\t#cdr = inject(ChangeDetectorRef);\n\n\t@Input()\n\tluTooltip: 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\t#disabled = false;\n\n\t@Input({ transform: booleanAttribute })\n\tset luTooltipDisabled(disabled: boolean) {\n\t\tthis.#disabled = disabled;\n\t\tif (disabled) {\n\t\t\tthis.setAccessibilityProperties(null);\n\t\t}\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\tluTooltipOnlyForDisplay = false;\n\n\t@Input()\n\tluTooltipPosition: LuPopoverPosition = 'above';\n\n\t@Input({ transform: booleanAttribute })\n\tluTooltipWhenEllipsis = false;\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\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.#disabled || 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.#disabled) {\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\tthis.resize$.pipe(takeUntilDestroyed(this.#destroyRef), debounceTime(150)).subscribe(() => {\n\t\t\tthis.setAccessibilityProperties(0);\n\t\t\tthis.#cdr.markForCheck();\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 = this.#host.nativeElement.innerText;\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 (this.#disabled || (this.luTooltipWhenEllipsis && !this.hasEllipsis())) {\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 isNatevelyFocusableTag = nativelyFocusableTags.includes(tag);\n\n\t\tconst hasATabIndex = this.#host.nativeElement.getAttribute('tabindex') !== null;\n\n\t\tif (!isNatevelyFocusableTag && !hasATabIndex) {\n\t\t\tthis.#renderer.setAttribute(this.#host.nativeElement, 'tabindex', tabindex.toString());\n\t\t}\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 * @private\n\t */\n\tprivate hasEllipsis(): boolean {\n\t\tif (window.getComputedStyle(this.#host.nativeElement).textOverflow !== 'ellipsis') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst element = this.#host.nativeElement;\n\t\tconst elementCloned = this.#renderer.createElement('div') as HTMLDivElement;\n\t\tconst parentMasked = this.#renderer.createElement('div') as HTMLDivElement;\n\t\tconst elementStyle = window.getComputedStyle(element);\n\n\t\tthis.#renderer.addClass(parentMasked, 'u-mask');\n\t\tthis.#renderer.setAttribute(parentMasked, 'aria-hidden', 'true');\n\n\t\tthis.#renderer.setStyle(elementCloned, 'width', 'fit-content');\n\n\t\tthis.#renderer.setStyle(elementCloned, 'padding', elementStyle.padding);\n\t\tthis.#renderer.setStyle(elementCloned, 'borderWidth', elementStyle.borderWidth);\n\t\tthis.#renderer.setStyle(elementCloned, 'borderStyle', elementStyle.borderStyle);\n\t\tthis.#renderer.setStyle(elementCloned, 'boxSizing', elementStyle.boxSizing);\n\t\tthis.#renderer.setStyle(elementCloned, 'fontFamily', elementStyle.fontFamily);\n\t\tthis.#renderer.setStyle(elementCloned, 'fontWeight', elementStyle.fontWeight);\n\t\tthis.#renderer.setStyle(elementCloned, 'fontStyle', elementStyle.fontStyle);\n\t\tthis.#renderer.setStyle(elementCloned, 'whiteSpace', 'nowrap');\n\t\tthis.#renderer.setStyle(\n\t\t\telementCloned,\n\t\t\t'fontSize',\n\t\t\t(Number(elementStyle.fontSize.replace('px', '')) / Number(window.getComputedStyle(document.body).fontSize.replace('px', ''))).toString() + 'rem',\n\t\t);\n\n\t\telementCloned.innerHTML = element.innerHTML;\n\n\t\tthis.#renderer.appendChild(parentMasked, elementCloned);\n\t\tthis.#renderer.appendChild(document.body, parentMasked);\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 (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\tparentMasked.remove();\n\t\t}\n\t}\n\n\tngAfterContentInit(): void {\n\t\tthis.setAccessibilityProperties(0);\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":";;;;;;;;;;AAEa,MAAA,kBAAkB,GAA6B,OAAO,CAAC,kBAAkB,EAAE;AACvF,IAAA,KAAK,CACJ,OAAO,EACP,KAAK,CAAC;AACL,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,SAAS,EAAE,CAAU,QAAA,CAAA;AACrB,KAAA,CAAC,CACF;IACD,UAAU,CAAC,WAAW,EAAE;AACvB,QAAA,KAAK,CAAC;AACL,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,CAAU,QAAA,CAAA;SACrB,CAAC;QACF,OAAO,CAAC,wCAAwC,CAAC;KACjD,CAAC;AACF,IAAA,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAA;;MCDY,uBAAuB,CAAA;AAXpC,IAAA,WAAA,GAAA;AAYC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEhC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;AAOlC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;QAYlC,IAAsB,CAAA,sBAAA,GAA4B,EAAE,CAAC;AAUrD,KAAA;IA1BA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACxB;IAKD,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACxB;IASD,gBAAgB,CAAC,IAA6B,EAAE,IAA2B,EAAA;QAC1E,IAAI,CAAC,sBAAsB,GAAG;YAC7B,WAAW,EAAE,IAAI,KAAK,KAAK;YAC3B,UAAU,EAAE,IAAI,KAAK,OAAO;YAC5B,UAAU,EAAE,IAAI,KAAK,QAAQ;YAC7B,UAAU,EAAE,IAAI,KAAK,KAAK;SAC1B,CAAC;KACF;8GA/BW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBpC,8FACA,EAAA,MAAA,EAAA,CAAA,olDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcW,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEL,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;+BACC,kBAAkB,EAAA,UAAA,EAGhB,IAAI,EACV,IAAA,EAAA;AACL,wBAAA,IAAI,EAAE,SAAS;AACf,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,olDAAA,CAAA,EAAA,CAAA;8BAQlB,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,YAAY,CAAA;gBAQ1B,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,YAAY,CAAA;gBAQ1B,EAAE,EAAA,CAAA;sBADD,WAAW;uBAAC,SAAS,CAAA;;;ME7BV,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAApB,oBAAoB,EAAA,OAAA,EAAA,CAHtB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAErB,oBAAoB,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,iBAAA,CAAA;;;ACkBD,IAAI,MAAM,GAAG,CAAC,CAAC;MAOF,yBAAyB,CAAA;AACrC,IAAA,QAAQ,CAAmB;AAE3B,IAAA,KAAK,CAA+C;AAEpD,IAAA,SAAS,CAAqB;AAE9B,IAAA,WAAW,CAAsB;AAEjC,IAAA,IAAI,CAA6B;AAKjC,IAAA,WAAW,CAAoC;IAE/C,IACI,mBAAmB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,YAAY,CAAoC;IAEhD,IACI,mBAAmB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,SAAS,CAAS;IAElB,IACI,iBAAiB,CAAC,QAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;SACtC;KACD;IA0BD,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KAClB;IAGD,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACnB;IAGD,OAAO,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,EAAE;AACtE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAClB;KACD;IAGD,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACnB;AAED,IAAA,YAAY,CAA2E;AAKvF,IAAA,IACI,eAAe,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACjF,YAAA,OAAO,IAAI,CAAC;SACZ;AACD,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,YAAY,QAAQ,CAAC;KACpC;AAID,IAAA,WAAA,GAAA;AAjGA,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAE3B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AAEpD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAE9B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAKjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,GAAG,CAAC,CAAC;AAO/C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAS,GAAG,CAAC,CAAC;QAOhD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAWlB,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAGhC,IAAiB,CAAA,iBAAA,GAAsB,OAAO,CAAC;QAG/C,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAE9B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACrC,YAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;gBAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjB,aAAC,CAAC,CAAC;YACH,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACjD,YAAA,OAAO,MAAK;gBACX,cAAc,CAAC,UAAU,EAAE,CAAC;AAC7B,aAAC,CAAC;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAQ,CAAC;AAE5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAQ,CAAC;AAwB7B,QAAA,IAAA,CAAA,YAAY,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA,SAAA,EAAY,MAAM,EAAE,EAAE,CAAC;QAgBtF,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aAClD,IAAI,CACJ,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAI;;;YAGrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC,MAAM,CAAC,MAAK;AACX,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AACnB,oBAAA,OAAO,KAAK,CAAC;iBACb;;AAED,gBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/B,oBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC1B;;AAED,gBAAA,OAAO,IAAI,CAAC;aACZ,CAAC,EACF,GAAG,CAAC,MAAM,MAAM,CAAC,CACjB,CAAC;YACF,OAAO,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CACnE,QAAQ,CAAC,CAAC,KAAK,KAAI;AAClB,gBAAA,OAAO,KAAK,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;aACxD,CAAC,CACF,CAAC;SACF,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACpC;AACA,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACpB,YAAA,IAAI,KAAK,KAAK,MAAM,EAAE;gBACrB,IAAI,CAAC,WAAW,EAAE,CAAC;aACnB;iBAAM;gBACN,IAAI,CAAC,YAAY,EAAE,CAAC;aACpB;AACF,SAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACzF,YAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1B,SAAC,CAAC,CAAC;KACH;IAED,WAAW,GAAA;QACV,IAAI,CAAC,YAAY,EAAE,CAAC;KACpB;IAEO,WAAW,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACP;AACD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtC,YAAA,gBAAgB,EAAE,QAAQ;YAC1B,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACtD,YAAA,mBAAmB,EAAE,IAAI;AACzB,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,uBAAuB,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAA,QAAQ,CAAC,eAAe;AACtB,aAAA,IAAI,CACJ,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,cAAc,CAAC,EAC3C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAChC;aACA,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAI;YACrC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YACnB,GAAG,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;SACtC;AAAM,aAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACtC,YAAA,GAAG,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;SAC1D;QACD,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;;AAEvC,QAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;;AAE/G,QAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9G;IAEO,YAAY,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC;SACvB;KACD;AAEO,IAAA,0BAA0B,CAAC,QAAuB,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YACrE,OAAO;SACP;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC3D,QAAA,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAEnE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AAEhF,QAAA,IAAI,CAAC,sBAAsB,IAAI,CAAC,YAAY,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvF;KACD;AAED;;;;;;;;;;;AAWG;IACK,WAAW,GAAA;AAClB,QAAA,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,YAAY,KAAK,UAAU,EAAE;AAClF,YAAA,OAAO,KAAK,CAAC;SACb;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;QAC3E,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QAEjE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,QAAQ,CACtB,aAAa,EACb,UAAU,EACV,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAChJ,CAAC;AAEF,QAAA,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAE5C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAExD,QAAA,IAAI;YACH,MAAM,kBAAkB,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YACvE,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YAE3D,OAAO,kBAAkB,GAAG,YAAY,CAAC;SACzC;QAAC,OAAO,CAAC,EAAE;AACX,YAAA,OAAO,KAAK,CAAC;SACb;gBAAS;YACT,YAAY,CAAC,MAAM,EAAE,CAAC;SACtB;KACD;IAED,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;KAC5D;AAED;;;;AAIyB;IAEjB,qBAAqB,GAAA;AAC5B,QAAA,MAAM,kBAAkB,GAA6B;AACpD,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,KAAK;SACd,CAAC;;AAGF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACxC,QAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AACzB,YAAA,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;SACnC;AAAM,aAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AAChC,YAAA,kBAAkB,CAAC,OAAO,GAAG,QAAQ,CAAC;SACtC;AAAM,aAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACjC,YAAA,kBAAkB,CAAC,OAAO,GAAG,OAAO,CAAC;SACrC;AAAM,aAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AAChC,YAAA,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;SACnC;;QAGD,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE;AACjD,YAAA,kBAAkB,CAAC,OAAO,GAAG,QAAQ,CAAC;SACtC;aAAM;AACN,YAAA,kBAAkB,CAAC,OAAO,GAAG,QAAQ,CAAC;SACtC;AAED,QAAA,MAAM,eAAe,GAA8B;AAClD,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,KAAK;SACf,CAAC;QAEF,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE;AACjD,YAAA,eAAe,CAAC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC;AACtD,YAAA,eAAe,CAAC,QAAQ,GAAG,QAAQ,KAAK,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;SACnE;aAAM;AACN,YAAA,eAAe,CAAC,QAAQ,GAAG,QAAQ,KAAK,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AACnE,YAAA,eAAe,CAAC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC;SACtD;QAED,OAAO,IAAI,CAAC,QAAQ;AAClB,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,aAAA,aAAa,CAAC;AACd,YAAA;gBACC,OAAO,EAAE,kBAAkB,CAAC,OAAO;gBACnC,OAAO,EAAE,kBAAkB,CAAC,OAAO;gBACnC,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,QAAQ,EAAE,eAAe,CAAC,QAAQ;AAClC,aAAA;AACD,YAAA;gBACC,OAAO,EAAE,kBAAkB,CAAC,OAAO;gBACnC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBAC3D,QAAQ,EAAE,eAAe,CAAC,QAAQ;gBAClC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1D,aAAA;AACD,YAAA;gBACC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBAC7D,OAAO,EAAE,kBAAkB,CAAC,OAAO;gBACnC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC5D,QAAQ,EAAE,eAAe,CAAC,QAAQ;AAClC,aAAA;AACD,YAAA;gBACC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBAC7D,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBAC3D,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,CAAC;gBAC5D,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC1D,aAAA;AACD,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,iBAAiB,CAAC,CAAwB,EAAA;AACjD,QAAA,IAAI,CAAC,KAAK,KAAK,EAAE;AAChB,YAAA,OAAO,QAAQ,CAAC;SAChB;AAAM,aAAA,IAAI,CAAC,KAAK,QAAQ,EAAE;AAC1B,YAAA,OAAO,KAAK,CAAC;SACb;AACD,QAAA,OAAO,CAAC,CAAC;KACT;AAEO,IAAA,mBAAmB,CAAC,CAA0B,EAAA;AACrD,QAAA,IAAI,CAAC,KAAK,KAAK,EAAE;AAChB,YAAA,OAAO,OAAO,CAAC;SACf;AAAM,aAAA,IAAI,CAAC,KAAK,OAAO,EAAE;AACzB,YAAA,OAAO,KAAK,CAAC;SACb;AACD,QAAA,OAAO,CAAC,CAAC;KACT;8GApWW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAgBjB,eAAe,CAOf,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAAA,eAAe,iEAOf,gBAAgB,CAAA,EAAA,uBAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAQhB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,EAMhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FA5CxB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;wDAaA,SAAS,EAAA,CAAA;sBADR,KAAK;gBAMF,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;gBAQjC,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;gBAQjC,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAStC,uBAAuB,EAAA,CAAA;sBADtB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAItC,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAkBtC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,CAAA;gBAM1B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,CAAA;gBAM1B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;gBAQrB,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,CAAA;gBAQpB,GAAG,EAAA,CAAA;sBADF,WAAW;uBAAC,SAAS,CAAA;gBAIlB,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,uBAAuB,CAAA;;;MC/GxB,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAHxB,OAAA,EAAA,CAAA,yBAAyB,EAAE,aAAa,aACxC,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAHG,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGtC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE,CAAC,yBAAyB,EAAE,aAAa,CAAC;oBACnD,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACpC,iBAAA,CAAA;;;MCCY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHjB,sBAAsB,EAAE,oBAAoB,CAC5C,EAAA,OAAA,EAAA,CAAA,sBAAsB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAE1C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHjB,sBAAsB,EAAE,oBAAoB,EAC5C,sBAAsB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAE1C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;AACvD,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;AACvD,iBAAA,CAAA;;;ACPD;;AAEG;;;;"}
|
|
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 } 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: 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 elementCloned = this.#document.createElement('div');\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\n\t\tthis.elementCloned.style.width = 'fit-content';\n\t\tthis.elementCloned.style.whiteSpace = 'nowrap';\n\n\t\tthis.parentMasked.appendChild(this.elementCloned);\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\thasEllipsis(element: HTMLElement): boolean {\n\t\tconst elementStyle = window.getComputedStyle(element);\n\n\t\tif (elementStyle.textOverflow !== 'ellipsis') {\n\t\t\treturn false;\n\t\t}\n\n\t\tObject.assign(this.elementCloned.style, {\n\t\t\tpadding: elementStyle.padding,\n\t\t\tborderWidth: elementStyle.borderWidth,\n\t\t\tborderStyle: elementStyle.borderStyle,\n\t\t\tboxSizing: elementStyle.boxSizing,\n\t\t\tfontFamily: elementStyle.fontFamily,\n\t\t\tfontWeight: elementStyle.fontWeight,\n\t\t\tfontStyle: elementStyle.fontStyle,\n\t\t\tfontSize: (Number(elementStyle.fontSize.replace('px', '')) / Number(window.getComputedStyle(document.body).fontSize.replace('px', ''))).toString() + 'rem',\n\t\t});\n\n\t\tthis.elementCloned.innerHTML = element.innerHTML;\n\n\t\ttry {\n\t\t\tconst elementClonedWidth = this.elementCloned.getBoundingClientRect().width;\n\t\t\tconst elementWidth = element.getBoundingClientRect().width;\n\n\t\t\treturn elementClonedWidth > elementWidth;\n\t\t} catch (e) {\n\t\t\treturn false;\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\tChangeDetectorRef,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tHostBinding,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tRenderer2,\n\tbooleanAttribute,\n\tinject,\n\tnumberAttribute,\n} from '@angular/core';\nimport { takeUntilDestroyed } 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\t#cdr = inject(ChangeDetectorRef);\n\n\t@Input()\n\tluTooltip: 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\t#disabled = false;\n\n\t@Input({ transform: booleanAttribute })\n\tset luTooltipDisabled(disabled: boolean) {\n\t\tthis.#disabled = disabled;\n\t\tif (disabled) {\n\t\t\tthis.setAccessibilityProperties(null);\n\t\t}\n\t}\n\n\t@Input({ transform: booleanAttribute })\n\tluTooltipOnlyForDisplay = false;\n\n\t@Input()\n\tluTooltipPosition: LuPopoverPosition = 'above';\n\n\t@Input({ transform: booleanAttribute })\n\tluTooltipWhenEllipsis = false;\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\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.#disabled || 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.#disabled) {\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.#ruler.hasEllipsis(this.#host.nativeElement);\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\tthis.resize$.pipe(takeUntilDestroyed(this.#destroyRef), debounceTime(150)).subscribe(() => {\n\t\t\tthis.setAccessibilityProperties(0);\n\t\t\tthis.#cdr.markForCheck();\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 = this.#host.nativeElement.innerText;\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 (this.#disabled || (this.luTooltipWhenEllipsis && !this.#ruler.hasEllipsis(this.#host.nativeElement))) {\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 isNatevelyFocusableTag = nativelyFocusableTags.includes(tag);\n\n\t\tconst hasATabIndex = this.#host.nativeElement.getAttribute('tabindex') !== null;\n\n\t\tif (!isNatevelyFocusableTag && !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.setAccessibilityProperties(0);\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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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LuMultiSelection } from './select.model';
|
|
2
|
+
export declare function selectionToQueryParams<T, Key extends string>(key: Key, value: LuMultiSelection<T>, selector: (value: T) => unknown): Partial<Record<Key | `-${Key}`, string>>;
|
|
3
|
+
/**
|
|
4
|
+
* Transforms a selection from withSelectAll, the complete list of options and a getKey function to a list of options.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const selection = { mode: 'exclude', values: [{ id: 1, name: 'foo' }] };
|
|
9
|
+
* const allOptions = [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' }];
|
|
10
|
+
*
|
|
11
|
+
* const selectedOptions = selectionToOptions(selection, allOptions, (o) => o.id);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare function selectionToOptions<T>(selection: LuMultiSelection<T>, options: T[], getKeyFn: (value: T) => unknown): T[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucca-front/ng",
|
|
3
|
-
"version": "18.3.
|
|
3
|
+
"version": "18.3.1",
|
|
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": "^18.0.0",
|
|
27
27
|
"@angular/core": "^18.0.0",
|
|
28
28
|
"@angular/cdk": "^18.0.0",
|
|
29
|
-
"@lucca-front/icons": "18.3.
|
|
30
|
-
"@lucca-front/scss": "18.3.
|
|
29
|
+
"@lucca-front/icons": "18.3.1",
|
|
30
|
+
"@lucca-front/scss": "18.3.1",
|
|
31
31
|
"@types/dompurify": "^3.0.0",
|
|
32
32
|
"isomorphic-dompurify": "^2.11.0",
|
|
33
33
|
"date-fns": "^3.6.0",
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
"esm": "./esm2022/a11y/lucca-front-ng-a11y.mjs",
|
|
55
55
|
"default": "./fesm2022/lucca-front-ng-a11y.mjs"
|
|
56
56
|
},
|
|
57
|
-
"./
|
|
58
|
-
"types": "./
|
|
59
|
-
"esm2022": "./esm2022/
|
|
60
|
-
"esm": "./esm2022/
|
|
61
|
-
"default": "./fesm2022/lucca-front-ng-
|
|
57
|
+
"./api": {
|
|
58
|
+
"types": "./api/index.d.ts",
|
|
59
|
+
"esm2022": "./esm2022/api/lucca-front-ng-api.mjs",
|
|
60
|
+
"esm": "./esm2022/api/lucca-front-ng-api.mjs",
|
|
61
|
+
"default": "./fesm2022/lucca-front-ng-api.mjs"
|
|
62
62
|
},
|
|
63
63
|
"./button": {
|
|
64
64
|
"types": "./button/index.d.ts",
|
|
@@ -66,17 +66,23 @@
|
|
|
66
66
|
"esm": "./esm2022/button/lucca-front-ng-button.mjs",
|
|
67
67
|
"default": "./fesm2022/lucca-front-ng-button.mjs"
|
|
68
68
|
},
|
|
69
|
+
"./animations": {
|
|
70
|
+
"types": "./animations/index.d.ts",
|
|
71
|
+
"esm2022": "./esm2022/animations/lucca-front-ng-animations.mjs",
|
|
72
|
+
"esm": "./esm2022/animations/lucca-front-ng-animations.mjs",
|
|
73
|
+
"default": "./fesm2022/lucca-front-ng-animations.mjs"
|
|
74
|
+
},
|
|
69
75
|
"./callout": {
|
|
70
76
|
"types": "./callout/index.d.ts",
|
|
71
77
|
"esm2022": "./esm2022/callout/lucca-front-ng-callout.mjs",
|
|
72
78
|
"esm": "./esm2022/callout/lucca-front-ng-callout.mjs",
|
|
73
79
|
"default": "./fesm2022/lucca-front-ng-callout.mjs"
|
|
74
80
|
},
|
|
75
|
-
"./
|
|
76
|
-
"types": "./
|
|
77
|
-
"esm2022": "./esm2022/
|
|
78
|
-
"esm": "./esm2022/
|
|
79
|
-
"default": "./fesm2022/lucca-front-ng-
|
|
81
|
+
"./core": {
|
|
82
|
+
"types": "./core/index.d.ts",
|
|
83
|
+
"esm2022": "./esm2022/core/lucca-front-ng-core.mjs",
|
|
84
|
+
"esm": "./esm2022/core/lucca-front-ng-core.mjs",
|
|
85
|
+
"default": "./fesm2022/lucca-front-ng-core.mjs"
|
|
80
86
|
},
|
|
81
87
|
"./comment": {
|
|
82
88
|
"types": "./comment/index.d.ts",
|
|
@@ -84,12 +90,6 @@
|
|
|
84
90
|
"esm": "./esm2022/comment/lucca-front-ng-comment.mjs",
|
|
85
91
|
"default": "./fesm2022/lucca-front-ng-comment.mjs"
|
|
86
92
|
},
|
|
87
|
-
"./core": {
|
|
88
|
-
"types": "./core/index.d.ts",
|
|
89
|
-
"esm2022": "./esm2022/core/lucca-front-ng-core.mjs",
|
|
90
|
-
"esm": "./esm2022/core/lucca-front-ng-core.mjs",
|
|
91
|
-
"default": "./fesm2022/lucca-front-ng-core.mjs"
|
|
92
|
-
},
|
|
93
93
|
"./core-select": {
|
|
94
94
|
"types": "./core-select/index.d.ts",
|
|
95
95
|
"esm2022": "./esm2022/core-select/lucca-front-ng-core-select.mjs",
|
|
@@ -114,18 +114,18 @@
|
|
|
114
114
|
"esm": "./esm2022/department/lucca-front-ng-department.mjs",
|
|
115
115
|
"default": "./fesm2022/lucca-front-ng-department.mjs"
|
|
116
116
|
},
|
|
117
|
-
"./dialog": {
|
|
118
|
-
"types": "./dialog/index.d.ts",
|
|
119
|
-
"esm2022": "./esm2022/dialog/lucca-front-ng-dialog.mjs",
|
|
120
|
-
"esm": "./esm2022/dialog/lucca-front-ng-dialog.mjs",
|
|
121
|
-
"default": "./fesm2022/lucca-front-ng-dialog.mjs"
|
|
122
|
-
},
|
|
123
117
|
"./dropdown": {
|
|
124
118
|
"types": "./dropdown/index.d.ts",
|
|
125
119
|
"esm2022": "./esm2022/dropdown/lucca-front-ng-dropdown.mjs",
|
|
126
120
|
"esm": "./esm2022/dropdown/lucca-front-ng-dropdown.mjs",
|
|
127
121
|
"default": "./fesm2022/lucca-front-ng-dropdown.mjs"
|
|
128
122
|
},
|
|
123
|
+
"./dialog": {
|
|
124
|
+
"types": "./dialog/index.d.ts",
|
|
125
|
+
"esm2022": "./esm2022/dialog/lucca-front-ng-dialog.mjs",
|
|
126
|
+
"esm": "./esm2022/dialog/lucca-front-ng-dialog.mjs",
|
|
127
|
+
"default": "./fesm2022/lucca-front-ng-dialog.mjs"
|
|
128
|
+
},
|
|
129
129
|
"./empty-state": {
|
|
130
130
|
"types": "./empty-state/index.d.ts",
|
|
131
131
|
"esm2022": "./esm2022/empty-state/lucca-front-ng-empty-state.mjs",
|
|
@@ -252,18 +252,18 @@
|
|
|
252
252
|
"esm": "./esm2022/popup-employee/lucca-front-ng-popup-employee.mjs",
|
|
253
253
|
"default": "./fesm2022/lucca-front-ng-popup-employee.mjs"
|
|
254
254
|
},
|
|
255
|
-
"./safe-content": {
|
|
256
|
-
"types": "./safe-content/index.d.ts",
|
|
257
|
-
"esm2022": "./esm2022/safe-content/lucca-front-ng-safe-content.mjs",
|
|
258
|
-
"esm": "./esm2022/safe-content/lucca-front-ng-safe-content.mjs",
|
|
259
|
-
"default": "./fesm2022/lucca-front-ng-safe-content.mjs"
|
|
260
|
-
},
|
|
261
255
|
"./qualification": {
|
|
262
256
|
"types": "./qualification/index.d.ts",
|
|
263
257
|
"esm2022": "./esm2022/qualification/lucca-front-ng-qualification.mjs",
|
|
264
258
|
"esm": "./esm2022/qualification/lucca-front-ng-qualification.mjs",
|
|
265
259
|
"default": "./fesm2022/lucca-front-ng-qualification.mjs"
|
|
266
260
|
},
|
|
261
|
+
"./safe-content": {
|
|
262
|
+
"types": "./safe-content/index.d.ts",
|
|
263
|
+
"esm2022": "./esm2022/safe-content/lucca-front-ng-safe-content.mjs",
|
|
264
|
+
"esm": "./esm2022/safe-content/lucca-front-ng-safe-content.mjs",
|
|
265
|
+
"default": "./fesm2022/lucca-front-ng-safe-content.mjs"
|
|
266
|
+
},
|
|
267
267
|
"./scroll": {
|
|
268
268
|
"types": "./scroll/index.d.ts",
|
|
269
269
|
"esm2022": "./esm2022/scroll/lucca-front-ng-scroll.mjs",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class EllipsisRuler {
|
|
3
|
+
#private;
|
|
4
|
+
readonly elementCloned: HTMLDivElement;
|
|
5
|
+
readonly parentMasked: HTMLDivElement;
|
|
6
|
+
constructor();
|
|
7
|
+
/**
|
|
8
|
+
* Hacky af but let's explain everything
|
|
9
|
+
* This method checks for ellipsis by cloning the node and checking its width against original element.
|
|
10
|
+
*
|
|
11
|
+
* We used to do this using scrollWidth but the thing is, it's a rounded value. Sometimes,
|
|
12
|
+
* you'd get true while it should be false and vice-versa, because of rounding.
|
|
13
|
+
*
|
|
14
|
+
* So we duplicate the properties we're interested in on the element to be tested to calculate its ideal size,
|
|
15
|
+
* which we then compare with its current size.
|
|
16
|
+
*/
|
|
17
|
+
hasEllipsis(element: HTMLElement): boolean;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EllipsisRuler, never>;
|
|
19
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EllipsisRuler>;
|
|
20
|
+
}
|
|
@@ -28,19 +28,6 @@ export declare class LuTooltipTriggerDirective implements AfterContentInit, OnDe
|
|
|
28
28
|
private openTooltip;
|
|
29
29
|
private closeTooltip;
|
|
30
30
|
private setAccessibilityProperties;
|
|
31
|
-
/**
|
|
32
|
-
* Hacky af but let's explain everything
|
|
33
|
-
* This method checks for ellipsis by cloning the node and checking its width against original element.
|
|
34
|
-
*
|
|
35
|
-
* We used to do this using scrollWidth but the thing is, it's a rounded value. Sometimes,
|
|
36
|
-
* you'd get true while it should be false and vice-versa, because of rounding.
|
|
37
|
-
*
|
|
38
|
-
* So we duplicate the properties we're interested in on the element to be tested to calculate its ideal size,
|
|
39
|
-
* which we then compare with its current size.
|
|
40
|
-
*
|
|
41
|
-
* @private
|
|
42
|
-
*/
|
|
43
|
-
private hasEllipsis;
|
|
44
31
|
ngAfterContentInit(): void;
|
|
45
32
|
/**********************
|
|
46
33
|
*
|