@lucca-front/ng 21.4.3-rc.1 → 21.4.4
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/fesm2022/lucca-front-ng-a11y.mjs +23 -16
- package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-activity-feed.mjs +27 -18
- package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-api.mjs +42 -42
- package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-app-layout.mjs +4 -4
- package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-box.mjs +5 -4
- package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs +12 -9
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-bubble-icon.mjs +19 -11
- package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-bubble-illustration.mjs +13 -8
- package/fesm2022/lucca-front-ng-bubble-illustration.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-callout.mjs +90 -57
- package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-chip.mjs +21 -12
- package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-clear.mjs +11 -7
- package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-code.mjs +3 -3
- package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-color.mjs +9 -6
- package/fesm2022/lucca-front-ng-color.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-comment.mjs +44 -27
- package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-container.mjs +7 -5
- package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-api.mjs +31 -20
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-department.mjs +22 -14
- package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs +21 -15
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +12 -9
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +9 -6
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-user.mjs +73 -53
- package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select.mjs +144 -79
- package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core.mjs +55 -18
- package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-data-table.mjs +105 -67
- package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date.mjs +45 -43
- package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-date2.mjs +188 -106
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-department.mjs +26 -25
- package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dialog.mjs +87 -61
- package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-divider.mjs +7 -5
- package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-dropdown.mjs +42 -41
- package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-empty-state.mjs +49 -29
- package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-error-page.mjs +10 -7
- package/fesm2022/lucca-front-ng-error-page.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-establishment.mjs +36 -35
- package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-fancy-box.mjs +17 -10
- package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-file-upload.mjs +94 -51
- package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-filter-pills.mjs +84 -52
- package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-footer.mjs +10 -7
- package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +90 -55
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-header.mjs +5 -4
- package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-label.mjs +15 -9
- package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form.mjs +3 -3
- package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-formly.mjs +58 -58
- package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +33 -20
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +6 -6
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +168 -91
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +244 -149
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-gauge.mjs +23 -13
- package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-grid.mjs +24 -15
- package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-data.mjs +26 -15
- package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-text.mjs +7 -5
- package/fesm2022/lucca-front-ng-highlight-text.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +35 -23
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-impersonation.mjs +14 -9
- package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-index-table.mjs +64 -48
- package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-inline-message.mjs +9 -6
- package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-input.mjs +27 -24
- package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-link.mjs +49 -21
- package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listbox.mjs +25 -17
- package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listing.mjs +14 -10
- package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-loading.mjs +7 -5
- package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-main-layout.mjs +6 -6
- package/fesm2022/lucca-front-ng-main-layout.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-mobile-push.mjs +5 -4
- package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-modal.mjs +24 -23
- package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-multi-select.mjs +204 -133
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-new-badge.mjs +5 -4
- package/fesm2022/lucca-front-ng-new-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-number-format.mjs +14 -10
- package/fesm2022/lucca-front-ng-number-format.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-number.mjs +7 -7
- package/fesm2022/lucca-front-ng-number.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-numeric-badge.mjs +23 -12
- package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-option.mjs +136 -132
- package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-page-header.mjs +11 -7
- package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-pagination.mjs +13 -8
- package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-plg-push.mjs +9 -6
- package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popover.mjs +19 -18
- package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popover2.mjs +36 -23
- package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-popup.mjs +10 -10
- package/fesm2022/lucca-front-ng-popup.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-progress-bar.mjs +7 -5
- package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-progress-stepper.mjs +16 -11
- package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-read-more.mjs +35 -17
- package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-resource-card.mjs +19 -16
- package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
- package/fesm2022/lucca-front-ng-safe-content.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-scroll-box.mjs +7 -5
- package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-scroll.mjs +14 -10
- package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +18 -12
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-segmented-control.mjs +10 -8
- package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-select.mjs +14 -14
- package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
- package/fesm2022/lucca-front-ng-sidepanel.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-simple-select.mjs +27 -35
- package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-skeleton.mjs +65 -46
- package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +16 -11
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon.mjs +11 -7
- package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-sortable-list.mjs +13 -10
- package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-status-badge.mjs +9 -6
- package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-table-of-content.mjs +8 -7
- package/fesm2022/lucca-front-ng-table-of-content.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tag.mjs +15 -9
- package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-text-flow.mjs +3 -3
- package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-time.mjs +142 -83
- package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-title.mjs +27 -14
- package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-toast.mjs +16 -13
- package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tooltip.mjs +63 -39
- package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tree-select.mjs +20 -13
- package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user-popover.mjs +25 -20
- package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-user.mjs +94 -77
- package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-vertical-navigation.mjs +32 -22
- package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -1
- package/package.json +8 -8
- package/schematics/action-icon/index.js +34 -1
- package/schematics/action-icon/migration.spec.js +38 -5
- package/schematics/alignment-utilities/migration.spec.js +38 -5
- package/schematics/cdn-urls/migration.spec.js +38 -5
- package/schematics/class-prefix/migration.spec.js +38 -5
- package/schematics/color-text/migration.spec.js +38 -5
- package/schematics/component-path/migration.spec.js +38 -5
- package/schematics/deprecated-resolver/migration.spec.js +36 -3
- package/schematics/empty-state-title/migration.spec.js +36 -3
- package/schematics/lib/css-mapper.js +36 -3
- package/schematics/lib/lf-schematic-context.js +34 -1
- package/schematics/lib/local-deps/postcss.js +34 -1
- package/schematics/lib/migration-test.js +11 -3
- package/schematics/lu-button/migration.spec.js +35 -2
- package/schematics/lu-container/migration.spec.js +35 -2
- package/schematics/lu-grid/migration.js +24 -16
- package/schematics/lu-grid/migration.spec.js +35 -2
- package/schematics/lu-icon/migration.spec.js +35 -2
- package/schematics/lu-loading/migration.spec.js +35 -2
- package/schematics/lu-select/migration.spec.js +35 -2
- package/schematics/lu-text-input/migration.spec.js +35 -2
- package/schematics/new-icons/index.js +35 -2
- package/schematics/new-icons/migration.spec.js +38 -5
- package/schematics/palettes/index.js +28 -8
- package/schematics/palettes/migration.spec.js +38 -5
- package/schematics/tokens-radius/migration.spec.js +38 -5
- package/schematics/tokens-spacing/migration.spec.js +38 -5
- package/schematics/tokens-typo/migration.spec.js +38 -5
- package/types/lucca-front-ng-comment.d.ts +2 -1
- package/types/lucca-front-ng-core-select.d.ts +13 -1
- package/types/lucca-front-ng-core.d.ts +20 -1
- package/types/lucca-front-ng-dialog.d.ts +4 -3
- package/types/lucca-front-ng-file-upload.d.ts +3 -1
- package/types/lucca-front-ng-filter-pills.d.ts +1 -0
- package/types/lucca-front-ng-forms-phone-number-input.d.ts +3 -3
- package/types/lucca-front-ng-forms-rich-text-input.d.ts +5 -1
- package/types/lucca-front-ng-forms.d.ts +14 -5
- package/types/lucca-front-ng-input.d.ts +2 -1
- package/types/lucca-front-ng-multi-select.d.ts +29 -5
- package/types/lucca-front-ng-numeric-badge.d.ts +1 -0
- package/types/lucca-front-ng-read-more.d.ts +6 -1
- package/types/lucca-front-ng-simple-select.d.ts +1 -3
- package/types/lucca-front-ng-sortable-list.d.ts +2 -1
- package/types/lucca-front-ng-title.d.ts +6 -5
|
@@ -6,7 +6,7 @@ import { Overlay, OverlayModule } from '@angular/cdk/overlay';
|
|
|
6
6
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
7
7
|
import { DOCUMENT } from '@angular/common';
|
|
8
8
|
import { toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
|
-
import { isNotNil, ɵeffectWithDeps as _effectWithDeps, isNil } from '@lucca-front/ng/core';
|
|
9
|
+
import { isNotNil, ɵeffectWithDeps as _effectWithDeps, getPushPanelViewportMargin, isNil } from '@lucca-front/ng/core';
|
|
10
10
|
import { filter, debounce, tap, map } from 'rxjs/operators';
|
|
11
11
|
|
|
12
12
|
const luTransformTooltip = trigger('transformTooltip', [
|
|
@@ -29,8 +29,10 @@ class LuTooltipPanelComponent {
|
|
|
29
29
|
this.destroyRef = inject(DestroyRef);
|
|
30
30
|
this.mouseEnter$ = new Subject();
|
|
31
31
|
this.mouseLeave$ = new Subject();
|
|
32
|
-
this.content = signal(null,
|
|
33
|
-
|
|
32
|
+
this.content = signal(null, /* @ts-ignore */
|
|
33
|
+
...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
|
|
34
|
+
this.contentPositionClasses = signal({}, /* @ts-ignore */
|
|
35
|
+
...(ngDevMode ? [{ debugName: "contentPositionClasses" }] : /* istanbul ignore next */ []));
|
|
34
36
|
}
|
|
35
37
|
setPanelPosition(posX, posY) {
|
|
36
38
|
this.contentPositionClasses.set({
|
|
@@ -40,16 +42,16 @@ class LuTooltipPanelComponent {
|
|
|
40
42
|
'is-below': posY === 'top',
|
|
41
43
|
});
|
|
42
44
|
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: LuTooltipPanelComponent, isStandalone: true, selector: "lu-tooltip-panel", host: { attributes: { "role": "tooltip" }, listeners: { "mouseenter": "mouseEnter$.next()", "mouseleave": "mouseLeave$.next()" } }, ngImport: i0, template: "@if (content(); as content) {\n\t<div class=\"tooltip\" [class]=\"contentPositionClasses()\" [innerHtml]=\"content\"></div>\n}\n", styles: ["@layer components{.tooltip{--components-tooltip-background-color: var(--palettes-neutral-900);--components-tooltip-color: var(--pr-t-color-text-reverse);--components-tooltip-max-width: 15rem;--components-tooltip-transformOrigin: center;--components-tooltip-margin: 0;background-color:var(--components-tooltip-background-color);color:var(--components-tooltip-color);padding-block:var(--pr-t-spacings-50);padding-inline:var(--pr-t-spacings-100);max-inline-size:var(--components-tooltip-max-width);border-radius:var(--pr-t-border-radius-default);font:var(--pr-t-font-body-XS);transform-origin:var(--components-tooltip-transformOrigin);margin:var(--components-tooltip-margin);text-align:center;inline-size:fit-content;animation-name:scaleIn;animation-duration:var(--commons-animations-durations-fast);animation-iteration-count:1;overflow-wrap:break-word}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}.tooltip:empty{display:none}@supports (background-image: -webkit-named-image(i)){@media(hover:hover){.tooltip_trigger.is-whenEllipsis:after{content:\"\";display:block}}}}@layer mods{.tooltip.is-above{--components-tooltip-transformOrigin: bottom center}.tooltip.is-below{--components-tooltip-transformOrigin: top center}.tooltip.is-before{--components-tooltip-transformOrigin: center right}.tooltip.is-before.is-above{--components-tooltip-transformOrigin: bottom right}.tooltip.is-before.is-below{--components-tooltip-transformOrigin: top right}.tooltip.is-after{--components-tooltip-transformOrigin: center left}.tooltip.is-after.is-above{--components-tooltip-transformOrigin: bottom left}.tooltip.is-after.is-below{--components-tooltip-transformOrigin: top left}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
45
47
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipPanelComponent, decorators: [{
|
|
47
49
|
type: Component,
|
|
48
50
|
args: [{ selector: 'lu-tooltip-panel', host: {
|
|
49
51
|
role: 'tooltip',
|
|
50
52
|
'(mouseenter)': 'mouseEnter$.next()',
|
|
51
53
|
'(mouseleave)': 'mouseLeave$.next()',
|
|
52
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (content(); as content) {\n\t<div class=\"tooltip\" [class]=\"contentPositionClasses()\" [innerHtml]=\"content\"></div>\n}\n", styles: ["@layer components{.tooltip{--components-tooltip-background-color: var(--palettes-neutral-900);--components-tooltip-color: var(--pr-t-color-text-reverse);--components-tooltip-max-width: 15rem;--components-tooltip-transformOrigin: center;--components-tooltip-margin: 0;background-color:var(--components-tooltip-background-color);color:var(--components-tooltip-color);padding-block:var(--pr-t-spacings-50);padding-inline:var(--pr-t-spacings-100);max-inline-size:var(--components-tooltip-max-width);border-radius:var(--pr-t-border-radius-default);font:var(--pr-t-font-body-XS);transform-origin:var(--components-tooltip-transformOrigin);margin:var(--components-tooltip-margin);text-align:center;inline-size:fit-content;animation-name:scaleIn;animation-duration:var(--commons-animations-durations-fast);animation-iteration-count:1;overflow-wrap:break-word}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}.tooltip:empty{display:none}@supports (background-image: -webkit-named-image(i)){@media(hover:hover){
|
|
54
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (content(); as content) {\n\t<div class=\"tooltip\" [class]=\"contentPositionClasses()\" [innerHtml]=\"content\"></div>\n}\n", styles: ["@layer components{.tooltip{--components-tooltip-background-color: var(--palettes-neutral-900);--components-tooltip-color: var(--pr-t-color-text-reverse);--components-tooltip-max-width: 15rem;--components-tooltip-transformOrigin: center;--components-tooltip-margin: 0;background-color:var(--components-tooltip-background-color);color:var(--components-tooltip-color);padding-block:var(--pr-t-spacings-50);padding-inline:var(--pr-t-spacings-100);max-inline-size:var(--components-tooltip-max-width);border-radius:var(--pr-t-border-radius-default);font:var(--pr-t-font-body-XS);transform-origin:var(--components-tooltip-transformOrigin);margin:var(--components-tooltip-margin);text-align:center;inline-size:fit-content;animation-name:scaleIn;animation-duration:var(--commons-animations-durations-fast);animation-iteration-count:1;overflow-wrap:break-word}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}.tooltip:empty{display:none}@supports (background-image: -webkit-named-image(i)){@media(hover:hover){.tooltip_trigger.is-whenEllipsis:after{content:\"\";display:block}}}}@layer mods{.tooltip.is-above{--components-tooltip-transformOrigin: bottom center}.tooltip.is-below{--components-tooltip-transformOrigin: top center}.tooltip.is-before{--components-tooltip-transformOrigin: center right}.tooltip.is-before.is-above{--components-tooltip-transformOrigin: bottom right}.tooltip.is-before.is-below{--components-tooltip-transformOrigin: top right}.tooltip.is-after{--components-tooltip-transformOrigin: center left}.tooltip.is-after.is-above{--components-tooltip-transformOrigin: bottom left}.tooltip.is-after.is-below{--components-tooltip-transformOrigin: top left}}\n"] }]
|
|
53
55
|
}] });
|
|
54
56
|
|
|
55
57
|
/**
|
|
@@ -85,10 +87,10 @@ class TooltipVisibilityObserver {
|
|
|
85
87
|
}
|
|
86
88
|
}, { rootMargin: '100px' }));
|
|
87
89
|
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
89
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
90
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TooltipVisibilityObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
91
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TooltipVisibilityObserver, providedIn: 'root' }); }
|
|
90
92
|
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TooltipVisibilityObserver, decorators: [{
|
|
92
94
|
type: Injectable,
|
|
93
95
|
args: [{ providedIn: 'root' }]
|
|
94
96
|
}] });
|
|
@@ -107,8 +109,9 @@ class LuTooltipTriggerDirective {
|
|
|
107
109
|
#measureTrigger;
|
|
108
110
|
// guards the one-time setup of the persistent resize/mutation observers
|
|
109
111
|
#measurementObserversArmed;
|
|
110
|
-
// the IntersectionObserver callback
|
|
111
|
-
// the destroyed injector (NG0911)
|
|
112
|
+
// the IntersectionObserver callback and a debounced 'open' action (see openTooltip) can
|
|
113
|
+
// fire after the view is destroyed; avoid touching the destroyed injector (NG0911) or
|
|
114
|
+
// recreating the overlay when that happens
|
|
112
115
|
#destroyed;
|
|
113
116
|
// written only from the `read` phase of the afterRenderEffect below
|
|
114
117
|
#hasEllipsis;
|
|
@@ -134,41 +137,53 @@ class LuTooltipTriggerDirective {
|
|
|
134
137
|
this.#destroyRef = inject(DestroyRef);
|
|
135
138
|
this.#visibilityObserver = inject(TooltipVisibilityObserver);
|
|
136
139
|
this.luTooltipInput = input('', { ...(ngDevMode ? { debugName: "luTooltipInput" } : /* istanbul ignore next */ {}), alias: 'luTooltip' });
|
|
137
|
-
this.luTooltip = linkedSignal(() => this.luTooltipInput(),
|
|
140
|
+
this.luTooltip = linkedSignal(() => this.luTooltipInput(), /* @ts-ignore */
|
|
141
|
+
...(ngDevMode ? [{ debugName: "luTooltip" }] : /* istanbul ignore next */ []));
|
|
138
142
|
this.luTooltipEnterDelay = input(300, { ...(ngDevMode ? { debugName: "luTooltipEnterDelay" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
139
143
|
this.luTooltipLeaveDelay = input(100, { ...(ngDevMode ? { debugName: "luTooltipLeaveDelay" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
140
144
|
this.luTooltipDisabled = input(false, { ...(ngDevMode ? { debugName: "luTooltipDisabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
141
145
|
this.luTooltipOnlyForDisplay = input(false, { ...(ngDevMode ? { debugName: "luTooltipOnlyForDisplay" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
142
|
-
this.luTooltipPosition = input('above',
|
|
146
|
+
this.luTooltipPosition = input('above', /* @ts-ignore */
|
|
147
|
+
...(ngDevMode ? [{ debugName: "luTooltipPosition" }] : /* istanbul ignore next */ []));
|
|
143
148
|
this.luTooltipWhenEllipsisInput = input(false, { ...(ngDevMode ? { debugName: "luTooltipWhenEllipsisInput" } : /* istanbul ignore next */ {}), alias: 'luTooltipWhenEllipsis', transform: booleanAttribute });
|
|
144
|
-
this.luTooltipWhenEllipsis = linkedSignal(() => this.luTooltipWhenEllipsisInput(),
|
|
145
|
-
|
|
146
|
-
this.
|
|
149
|
+
this.luTooltipWhenEllipsis = linkedSignal(() => this.luTooltipWhenEllipsisInput(), /* @ts-ignore */
|
|
150
|
+
...(ngDevMode ? [{ debugName: "luTooltipWhenEllipsis" }] : /* istanbul ignore next */ []));
|
|
151
|
+
this.luTooltipAnchor = input(this.#host, /* @ts-ignore */
|
|
152
|
+
...(ngDevMode ? [{ debugName: "luTooltipAnchor" }] : /* istanbul ignore next */ []));
|
|
153
|
+
this.id = input(`${this.#host.nativeElement.tagName.toLowerCase()}-tooltip-${nextId++}`, /* @ts-ignore */
|
|
154
|
+
...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
147
155
|
this.ariaDescribedBy = computed(() => {
|
|
148
156
|
if (this.luTooltipDisabled() || this.luTooltipWhenEllipsis() || this.luTooltipOnlyForDisplay()) {
|
|
149
157
|
return null;
|
|
150
158
|
}
|
|
151
159
|
return `${this.id()}-panel`;
|
|
152
|
-
},
|
|
160
|
+
}, /* @ts-ignore */
|
|
161
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBy" }] : /* istanbul ignore next */ []));
|
|
153
162
|
// 0 until the element first appears; bumped for the initial measurement and on every real
|
|
154
163
|
// size/content change. Scrolling in and out of view does NOT bump it (see #armMeasurementObservers).
|
|
155
|
-
this.#measureTrigger = signal(0,
|
|
164
|
+
this.#measureTrigger = signal(0, /* @ts-ignore */
|
|
165
|
+
...(ngDevMode ? [{ debugName: "#measureTrigger" }] : /* istanbul ignore next */ []));
|
|
156
166
|
// guards the one-time setup of the persistent resize/mutation observers
|
|
157
167
|
this.#measurementObserversArmed = false;
|
|
158
|
-
// the IntersectionObserver callback
|
|
159
|
-
// the destroyed injector (NG0911)
|
|
168
|
+
// the IntersectionObserver callback and a debounced 'open' action (see openTooltip) can
|
|
169
|
+
// fire after the view is destroyed; avoid touching the destroyed injector (NG0911) or
|
|
170
|
+
// recreating the overlay when that happens
|
|
160
171
|
this.#destroyed = false;
|
|
161
172
|
// written only from the `read` phase of the afterRenderEffect below
|
|
162
|
-
this.#hasEllipsis = signal(false,
|
|
173
|
+
this.#hasEllipsis = signal(false, /* @ts-ignore */
|
|
174
|
+
...(ngDevMode ? [{ debugName: "#hasEllipsis" }] : /* istanbul ignore next */ []));
|
|
163
175
|
// Each measurement phase hands over to the next one through these signals rather than through
|
|
164
176
|
// the value `afterRenderEffect` pipes between phases. A phase only receives that value when the
|
|
165
177
|
// phases before it ran in the same pass; a directive created while the after-render hooks are
|
|
166
178
|
// running starts mid-pipeline and gets Angular's `registerCleanupFn` as its first argument
|
|
167
179
|
// instead. Calling it then registers `undefined` as a cleanup function, which throws
|
|
168
180
|
// `fn is not a function` when the view is destroyed, far away from the cause.
|
|
169
|
-
this.#measurementRequest = signal(null,
|
|
170
|
-
|
|
171
|
-
this.#
|
|
181
|
+
this.#measurementRequest = signal(null, /* @ts-ignore */
|
|
182
|
+
...(ngDevMode ? [{ debugName: "#measurementRequest" }] : /* istanbul ignore next */ []));
|
|
183
|
+
this.#preparedMeasurement = signal(null, /* @ts-ignore */
|
|
184
|
+
...(ngDevMode ? [{ debugName: "#preparedMeasurement" }] : /* istanbul ignore next */ []));
|
|
185
|
+
this.#action = signal(null, /* @ts-ignore */
|
|
186
|
+
...(ngDevMode ? [{ debugName: "#action" }] : /* istanbul ignore next */ []));
|
|
172
187
|
this.#realAction = linkedSignal({ ...(ngDevMode ? { debugName: "#realAction" } : /* istanbul ignore next */ {}), source: this.#action,
|
|
173
188
|
computation: (action, previous) => {
|
|
174
189
|
if (!action || action === 'close') {
|
|
@@ -284,9 +299,11 @@ class LuTooltipTriggerDirective {
|
|
|
284
299
|
// A `CSSStyleDeclaration` is live: reading one property from it in the write phase, after
|
|
285
300
|
// another tooltip has already mutated the DOM, forces a full style recalculation — once per
|
|
286
301
|
// tooltip on the page. Every value is therefore copied out here.
|
|
287
|
-
const { textOverflow, padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } = getComputedStyle(host);
|
|
302
|
+
const { textOverflow, display, padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } = getComputedStyle(host);
|
|
288
303
|
// No need to run a test if the element is not truncated
|
|
289
|
-
if
|
|
304
|
+
// or if its `display` property is set to `inline`
|
|
305
|
+
// (especially for Safari, which still calculates a width, unlike other browsers)
|
|
306
|
+
if (textOverflow !== 'ellipsis' || display === 'inline') {
|
|
290
307
|
return null;
|
|
291
308
|
}
|
|
292
309
|
return { host, cloneStyles: { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } };
|
|
@@ -355,7 +372,11 @@ class LuTooltipTriggerDirective {
|
|
|
355
372
|
}
|
|
356
373
|
}
|
|
357
374
|
openTooltip() {
|
|
358
|
-
|
|
375
|
+
// A pending debounced 'open' is flushed when `toObservable(#realAction)` completes on
|
|
376
|
+
// destroy (`debounce` re-emits the held value on completion), i.e. AFTER ngOnDestroy has
|
|
377
|
+
// disposed the overlay. Opening then would recreate an overlay anchored to a detached
|
|
378
|
+
// host — pinned to the viewport's top-left corner — that nothing would ever dispose.
|
|
379
|
+
if (this.#destroyed || this.overlayRef?.hasAttached()) {
|
|
359
380
|
return;
|
|
360
381
|
}
|
|
361
382
|
const position = this.legacyPositionBuilder();
|
|
@@ -457,6 +478,7 @@ class LuTooltipTriggerDirective {
|
|
|
457
478
|
return this.#overlay
|
|
458
479
|
.position()
|
|
459
480
|
.flexibleConnectedTo(this.#resolveAnchor())
|
|
481
|
+
.withViewportMargin(getPushPanelViewportMargin(this.#host.nativeElement))
|
|
460
482
|
.withPositions([
|
|
461
483
|
{
|
|
462
484
|
originX: connectionPosition.originX,
|
|
@@ -514,10 +536,10 @@ class LuTooltipTriggerDirective {
|
|
|
514
536
|
}
|
|
515
537
|
return x;
|
|
516
538
|
}
|
|
517
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
518
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
539
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
540
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: LuTooltipTriggerDirective, isStandalone: true, selector: "[luTooltip]", inputs: { luTooltipInput: { classPropertyName: "luTooltipInput", publicName: "luTooltip", isSignal: true, isRequired: false, transformFunction: null }, luTooltipEnterDelay: { classPropertyName: "luTooltipEnterDelay", publicName: "luTooltipEnterDelay", isSignal: true, isRequired: false, transformFunction: null }, luTooltipLeaveDelay: { classPropertyName: "luTooltipLeaveDelay", publicName: "luTooltipLeaveDelay", isSignal: true, isRequired: false, transformFunction: null }, luTooltipDisabled: { classPropertyName: "luTooltipDisabled", publicName: "luTooltipDisabled", isSignal: true, isRequired: false, transformFunction: null }, luTooltipOnlyForDisplay: { classPropertyName: "luTooltipOnlyForDisplay", publicName: "luTooltipOnlyForDisplay", isSignal: true, isRequired: false, transformFunction: null }, luTooltipPosition: { classPropertyName: "luTooltipPosition", publicName: "luTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, luTooltipWhenEllipsisInput: { classPropertyName: "luTooltipWhenEllipsisInput", publicName: "luTooltipWhenEllipsis", isSignal: true, isRequired: false, transformFunction: null }, luTooltipAnchor: { classPropertyName: "luTooltipAnchor", publicName: "luTooltipAnchor", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()", "keydown.escape": "onEscape($event)" }, properties: { "attr.aria-describedby": "ariaDescribedBy()", "attr.id": "id()", "class.is-whenEllipsis": "luTooltipWhenEllipsis()" }, classAttribute: "tooltip_trigger" }, exportAs: ["luTooltip"], ngImport: i0 }); }
|
|
519
541
|
}
|
|
520
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
542
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipTriggerDirective, decorators: [{
|
|
521
543
|
type: Directive,
|
|
522
544
|
args: [{
|
|
523
545
|
selector: '[luTooltip]',
|
|
@@ -530,6 +552,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
530
552
|
'(focus)': 'onFocus()',
|
|
531
553
|
'(blur)': 'onBlur()',
|
|
532
554
|
'(keydown.escape)': 'onEscape($event)',
|
|
555
|
+
class: 'tooltip_trigger',
|
|
556
|
+
'[class.is-whenEllipsis]': 'luTooltipWhenEllipsis()',
|
|
533
557
|
},
|
|
534
558
|
}]
|
|
535
559
|
}], ctorParameters: () => [], propDecorators: { luTooltipInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltip", required: false }] }], luTooltipEnterDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltipEnterDelay", required: false }] }], luTooltipLeaveDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltipLeaveDelay", required: false }] }], luTooltipDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltipDisabled", required: false }] }], luTooltipOnlyForDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltipOnlyForDisplay", required: false }] }], luTooltipPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltipPosition", required: false }] }], luTooltipWhenEllipsisInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltipWhenEllipsis", required: false }] }], luTooltipAnchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "luTooltipAnchor", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }] } });
|
|
@@ -538,11 +562,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
538
562
|
* @deprecated use `LuTooltipTriggerDirective` instead
|
|
539
563
|
*/
|
|
540
564
|
class LuTooltipTriggerModule {
|
|
541
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
542
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
543
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
565
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipTriggerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
566
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipTriggerModule, imports: [LuTooltipTriggerDirective, OverlayModule], exports: [LuTooltipTriggerDirective] }); }
|
|
567
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipTriggerModule, imports: [OverlayModule] }); }
|
|
544
568
|
}
|
|
545
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
569
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipTriggerModule, decorators: [{
|
|
546
570
|
type: NgModule,
|
|
547
571
|
args: [{
|
|
548
572
|
imports: [LuTooltipTriggerDirective, OverlayModule],
|
|
@@ -554,11 +578,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
554
578
|
* @deprecated use `LuTooltipTriggerDirective, LuTooltipPanelComponent` instead
|
|
555
579
|
*/
|
|
556
580
|
class LuTooltipModule {
|
|
557
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
558
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
559
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
581
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
582
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipModule, imports: [LuTooltipTriggerModule, LuTooltipPanelComponent], exports: [LuTooltipTriggerModule, LuTooltipPanelComponent] }); }
|
|
583
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipModule, imports: [LuTooltipTriggerModule, LuTooltipTriggerModule] }); }
|
|
560
584
|
}
|
|
561
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
585
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: LuTooltipModule, decorators: [{
|
|
562
586
|
type: NgModule,
|
|
563
587
|
args: [{
|
|
564
588
|
imports: [LuTooltipTriggerModule, LuTooltipPanelComponent],
|
|
@@ -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/trigger/tooltip-visibility.observer.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, inject, signal } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\n\n@Component({\n\tselector: 'lu-tooltip-panel',\n\ttemplateUrl: './tooltip-panel.component.html',\n\tstyleUrl: './tooltip-panel.component.scss',\n\thost: {\n\t\trole: 'tooltip',\n\t\t'(mouseenter)': 'mouseEnter$.next()',\n\t\t'(mouseleave)': 'mouseLeave$.next()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuTooltipPanelComponent {\n\treadonly destroyRef = inject(DestroyRef);\n\n\treadonly mouseEnter$ = new Subject<void>();\n\treadonly mouseLeave$ = new Subject<void>();\n\n\treadonly content = signal<string | SafeHtml | null>(null);\n\n\treadonly contentPositionClasses = signal<Record<string, boolean>>({});\n\n\tsetPanelPosition(posX: HorizontalConnectionPos, posY: VerticalConnectionPos): void {\n\t\tthis.contentPositionClasses.set({\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","@if (content(); as content) {\n\t<div class=\"tooltip\" [class]=\"contentPositionClasses()\" [innerHtml]=\"content\"></div>\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Single, shared IntersectionObserver used by every tooltip to defer its first ellipsis\n * measurement until the host element is near the viewport.\n *\n * One observer for the whole page is far cheaper than one IntersectionObserver per tooltip when\n * many tooltips are created at once (e.g. a large table being (re)rendered): the browser then\n * delivers a single batched callback instead of one per element.\n */\n@Injectable({ providedIn: 'root' })\nexport class TooltipVisibilityObserver {\n\t#observer?: IntersectionObserver;\n\treadonly #callbacks = new WeakMap<Element, () => void>();\n\n\t/** Calls `onVisible` once — the first time `element` comes near the viewport — then stops observing it. */\n\tobserveOnce(element: Element, onVisible: () => void): void {\n\t\tthis.#callbacks.set(element, onVisible);\n\t\tthis.#getObserver().observe(element);\n\t}\n\n\tunobserve(element: Element): void {\n\t\tthis.#callbacks.delete(element);\n\t\tthis.#observer?.unobserve(element);\n\t}\n\n\t// Created lazily so the observer is only instantiated in the browser, on first use.\n\t#getObserver(): IntersectionObserver {\n\t\treturn (this.#observer ??= new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tif (!entry.isIntersecting) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst onVisible = this.#callbacks.get(entry.target);\n\t\t\t\t\tthis.unobserve(entry.target);\n\t\t\t\t\tonVisible?.();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ rootMargin: '100px' },\n\t\t));\n\t}\n}\n","import {\n\tFlexibleConnectedPositionStrategy,\n\tFlexibleConnectedPositionStrategyOrigin,\n\tHorizontalConnectionPos,\n\tOriginConnectionPosition,\n\tOverlay,\n\tOverlayConnectionPosition,\n\tOverlayRef,\n\tVerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterRenderEffect,\n\tbooleanAttribute,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tEffectRef,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\tOnDestroy,\n\tRenderer2,\n\tsignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { isNil, isNotNil, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { LuPopoverPosition } from '@lucca-front/ng/popover';\nimport { startWith, timer } from 'rxjs';\nimport { debounce, filter, map, tap } from 'rxjs/operators';\nimport { LuTooltipPanelComponent } from '../panel';\nimport { TooltipVisibilityObserver } from './tooltip-visibility.observer';\n\nexport interface LuTooltipAnchorRef {\n\tgetElementRef(): ElementRef;\n}\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[luTooltip]',\n\texportAs: 'luTooltip',\n\thost: {\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy()',\n\t\t'[attr.id]': 'id()',\n\t\t'(mouseenter)': 'onMouseEnter()',\n\t\t'(mouseleave)': 'onMouseLeave()',\n\t\t'(focus)': 'onFocus()',\n\t\t'(blur)': 'onBlur()',\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t},\n})\nexport class LuTooltipTriggerDirective implements OnDestroy {\n\treadonly #overlay = inject(Overlay);\n\treadonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\treadonly #renderer = inject(Renderer2);\n\treadonly #document = inject(DOCUMENT);\n\treadonly #injector = inject(Injector);\n\treadonly #destroyRef = inject(DestroyRef);\n\treadonly #visibilityObserver = inject(TooltipVisibilityObserver);\n\n\treadonly luTooltipInput = input<string | SafeHtml>('', { alias: 'luTooltip' });\n\treadonly luTooltip = linkedSignal<string | SafeHtml>(() => this.luTooltipInput());\n\n\treadonly luTooltipEnterDelay = input(300, { transform: numberAttribute });\n\treadonly luTooltipLeaveDelay = input(100, { transform: numberAttribute });\n\treadonly luTooltipDisabled = input(false, { transform: booleanAttribute });\n\treadonly luTooltipOnlyForDisplay = input(false, { transform: booleanAttribute });\n\treadonly luTooltipPosition = input<LuPopoverPosition>('above');\n\n\treadonly luTooltipWhenEllipsisInput = input(false, { alias: 'luTooltipWhenEllipsis', transform: booleanAttribute });\n\treadonly luTooltipWhenEllipsis = linkedSignal(() => this.luTooltipWhenEllipsisInput());\n\n\treadonly luTooltipAnchor = input<FlexibleConnectedPositionStrategyOrigin | LuTooltipAnchorRef | null | undefined>(this.#host);\n\treadonly id = input<string>(`${this.#host.nativeElement.tagName.toLowerCase()}-tooltip-${nextId++}`);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tif (this.luTooltipDisabled() || this.luTooltipWhenEllipsis() || this.luTooltipOnlyForDisplay()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn `${this.id()}-panel`;\n\t});\n\n\toverlayRef?: OverlayRef;\n\n\t// 0 until the element first appears; bumped for the initial measurement and on every real\n\t// size/content change. Scrolling in and out of view does NOT bump it (see #armMeasurementObservers).\n\treadonly #measureTrigger = signal(0);\n\n\t// guards the one-time setup of the persistent resize/mutation observers\n\t#measurementObserversArmed = false;\n\n\t// the IntersectionObserver callback can fire after the view is destroyed; avoid touching\n\t// the destroyed injector (NG0911) when that happens\n\t#destroyed = false;\n\n\t// written only from the `read` phase of the afterRenderEffect below\n\treadonly #hasEllipsis = signal(false);\n\n\t// reusable hidden clone, one per directive, used to measure the unconstrained width\n\t#clone?: HTMLDivElement;\n\n\t// Each measurement phase hands over to the next one through these signals rather than through\n\t// the value `afterRenderEffect` pipes between phases. A phase only receives that value when the\n\t// phases before it ran in the same pass; a directive created while the after-render hooks are\n\t// running starts mid-pipeline and gets Angular's `registerCleanupFn` as its first argument\n\t// instead. Calling it then registers `undefined` as a cleanup function, which throws\n\t// `fn is not a function` when the view is destroyed, far away from the cause.\n\treadonly #measurementRequest = signal<{ host: HTMLElement; cloneStyles: Record<string, string> } | null>(null);\n\treadonly #preparedMeasurement = signal<{ host: HTMLElement; clone: HTMLDivElement } | null>(null);\n\n\treadonly #action = signal<'open' | 'close' | null>(null);\n\treadonly #realAction = linkedSignal<'open' | 'close' | null, 'open' | 'close' | null>({\n\t\tsource: this.#action,\n\t\tcomputation: (action, previous): 'open' | 'close' | null => {\n\t\t\tif (!action || action === 'close') {\n\t\t\t\treturn action;\n\t\t\t}\n\n\t\t\t// We only filter open events because even if it's disabled while opened,\n\t\t\t// we want the tooltip to be able to close itself no matter what\n\t\t\tif (this.luTooltipDisabled()) {\n\t\t\t\treturn previous?.value ?? null;\n\t\t\t}\n\n\t\t\tif (this.luTooltipWhenEllipsis()) {\n\t\t\t\treturn this.#hasEllipsis() ? 'open' : (previous?.value ?? null);\n\t\t\t}\n\n\t\t\treturn 'open';\n\t\t},\n\t});\n\n\t#effectRef?: EffectRef;\n\n\tconstructor() {\n\t\tthis.#destroyRef.onDestroy(() => (this.#destroyed = true));\n\n\t\t// Action debounce pipeline — kept as Observable since signals can't debounce\n\t\ttoObservable(this.#realAction)\n\t\t\t.pipe(\n\t\t\t\tfilter(isNotNil),\n\t\t\t\tdebounce((action) => timer(action === 'open' ? this.luTooltipEnterDelay() : this.luTooltipLeaveDelay())),\n\t\t\t\ttap((event) => {\n\t\t\t\t\tif (event === 'open') {\n\t\t\t\t\t\tthis.openTooltip();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.closeTooltip();\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(),\n\t\t\t)\n\t\t\t.subscribe();\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\n\t\t// Defer the first measurement until the element is near the viewport, then stop tracking\n\t\t// visibility: scrolling must not re-measure, so we arm the resize/mutation observers once.\n\t\t// A single shared IntersectionObserver handles every tooltip (see TooltipVisibilityObserver).\n\t\teffect((onCleanup) => {\n\t\t\tif (!this.luTooltipWhenEllipsis() || this.luTooltipDisabled() || this.#measurementObserversArmed) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst el = this.#host.nativeElement;\n\t\t\tthis.#visibilityObserver.observeOnce(el, () => this.#armMeasurementObservers());\n\n\t\t\tonCleanup(() => this.#visibilityObserver.unobserve(el));\n\t\t});\n\n\t\t// Ellipsis measurement, split across afterRenderEffect phases so that — across every tooltip\n\t\t// on the page — all DOM writes happen together, then all geometry reads happen together.\n\t\t// This keeps the whole batch to a single forced reflow instead of one reflow per element.\n\t\tafterRenderEffect({\n\t\t\tearlyRead: () => {\n\t\t\t\tthis.#measurementRequest.set(this.#readMeasurementRequest());\n\t\t\t},\n\t\t\twrite: () => {\n\t\t\t\tconst request = this.#measurementRequest();\n\t\t\t\tif (!request) {\n\t\t\t\t\tthis.#preparedMeasurement.set(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst clone = (this.#clone ??= this.#createClone());\n\t\t\t\tObject.assign(clone.style, request.cloneStyles);\n\t\t\t\tconst html = request.host.innerHTML;\n\t\t\t\t// Writing the same markup back would invalidate layout for nothing, and every tooltip\n\t\t\t\t// measured after this one would then pay for a new layout on its first geometry read.\n\t\t\t\tif (clone.innerHTML !== html) {\n\t\t\t\t\tclone.innerHTML = html;\n\t\t\t\t}\n\t\t\t\tthis.#preparedMeasurement.set({ host: request.host, clone });\n\t\t\t},\n\t\t\tread: () => {\n\t\t\t\tconst measurement = this.#preparedMeasurement();\n\t\t\t\tif (!measurement) {\n\t\t\t\t\tthis.#hasEllipsis.set(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst cloneWidth = measurement.clone.getBoundingClientRect().width;\n\t\t\t\tconst hostWidth = measurement.host.getBoundingClientRect().width;\n\t\t\t\t// rounded to 3 decimals to ignore sub-pixel noise\n\t\t\t\tthis.#hasEllipsis.set(Math.round(cloneWidth * 1000) > Math.round(hostWidth * 1000));\n\t\t\t},\n\t\t});\n\n\t\tthis.#destroyRef.onDestroy(() => this.#clone?.remove());\n\t}\n\n\t// Set up — once — the observers that ask for a re-measurement on real size/content changes.\n\t// They stay connected for the directive lifetime (even off-screen), so scrolling never\n\t// re-measures; only an actual resize/mutation does.\n\t#armMeasurementObservers(): void {\n\t\tif (this.#measurementObserversArmed || this.#destroyed) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#measurementObserversArmed = true;\n\n\t\tconst el = this.#host.nativeElement;\n\t\tconst bump = () => this.#measureTrigger.update((v) => v + 1);\n\n\t\t// `observe` always delivers an initial notification, which doubles as the first measurement:\n\t\t// asking for one here as well would measure every tooltip on the page twice.\n\t\tconst resizeObserver = new ResizeObserver(() => bump());\n\t\tresizeObserver.observe(el);\n\n\t\tconst mutationObserver = new MutationObserver(() => bump());\n\t\tmutationObserver.observe(el, { characterData: true, subtree: true, childList: true });\n\n\t\tthis.#destroyRef.onDestroy(() => {\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t});\n\t}\n\n\t// Reads everything the measurement needs from the host, in the read-only phase.\n\t#readMeasurementRequest(): { host: HTMLElement; cloneStyles: Record<string, string> } | null {\n\t\t// reading the trigger registers the dependency; 0 means \"not measured yet\"\n\t\tconst measured = this.#measureTrigger() > 0;\n\t\tif (!measured || this.luTooltipDisabled() || !this.luTooltipWhenEllipsis()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst host = this.#host.nativeElement;\n\t\t// A `CSSStyleDeclaration` is live: reading one property from it in the write phase, after\n\t\t// another tooltip has already mutated the DOM, forces a full style recalculation — once per\n\t\t// tooltip on the page. Every value is therefore copied out here.\n\t\tconst { textOverflow, padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } = getComputedStyle(host);\n\t\t// No need to run a test if the element is not truncated\n\t\tif (textOverflow !== 'ellipsis') {\n\t\t\treturn null;\n\t\t}\n\t\treturn { host, cloneStyles: { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } };\n\t}\n\n\t#createClone(): HTMLDivElement {\n\t\tconst clone = this.#document.createElement('div');\n\t\tclone.setAttribute('aria-hidden', 'true');\n\t\tObject.assign(clone.style, {\n\t\t\tinlineSize: 'fit-content',\n\t\t\twhiteSpace: 'nowrap',\n\t\t\t// `fixed` + pinned origin keeps the (potentially very wide) clone out of the\n\t\t\t// document's scrollable overflow, so measuring never flashes a scrollbar.\n\t\t\tposition: 'fixed',\n\t\t\tinsetBlockStart: '0',\n\t\t\tinsetInlineStart: '0',\n\t\t\tvisibility: 'hidden',\n\t\t\tpointerEvents: 'none',\n\t\t\tcontain: 'layout',\n\t\t});\n\t\tthis.#document.body.appendChild(clone);\n\t\treturn clone;\n\t}\n\n\tonMouseEnter() {\n\t\tthis.#action.set('open');\n\t}\n\n\tonMouseLeave() {\n\t\tthis.#action.set('close');\n\t}\n\n\tonFocus() {\n\t\tif (this.#host.nativeElement.getAttribute('aria-expanded') !== 'true') {\n\t\t\tthis.#action.set('open');\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis.#action.set('close');\n\t}\n\n\tonEscape(event: Event) {\n\t\tevent.stopPropagation();\n\t\tthis.#action.set(null);\n\t\tthis.closeTooltip();\n\t}\n\n\trequestOpen() {\n\t\tthis.#action.set('open');\n\t}\n\n\trequestClose() {\n\t\tthis.#action.set('close');\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closeTooltip();\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tdelete this.overlayRef;\n\t\t}\n\t}\n\n\tprivate prepareOverlay(): void {\n\t\tif (this.overlayRef) {\n\t\t\treturn;\n\t\t}\n\t\tthis.overlayRef = this.#overlay.create({\n\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\tdisposeOnNavigation: true,\n\t\t});\n\t\tconst describedBy = this.ariaDescribedBy();\n\t\tif (describedBy !== null) {\n\t\t\tthis.overlayRef.overlayElement.id = describedBy;\n\t\t}\n\t}\n\n\tprivate openTooltip(): void {\n\t\tif (this.overlayRef?.hasAttached()) {\n\t\t\treturn;\n\t\t}\n\t\tconst position = this.legacyPositionBuilder();\n\t\tif (!this.overlayRef) {\n\t\t\tthis.overlayRef = this.#overlay.create({\n\t\t\t\tpositionStrategy: position,\n\t\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\t\tdisposeOnNavigation: true,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.overlayRef.updatePositionStrategy(position);\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\n\t\tif (this.luTooltip()) {\n\t\t\tthis.#effectRef = ɵeffectWithDeps(\n\t\t\t\t[this.luTooltip],\n\t\t\t\t(luTooltip) => {\n\t\t\t\t\tref.instance.content.set(luTooltip);\n\t\t\t\t},\n\t\t\t\t{ injector: this.#injector },\n\t\t\t);\n\t\t} else if (this.luTooltipWhenEllipsis()) {\n\t\t\tref.instance.content.set(this.#host.nativeElement.innerText);\n\t\t} else {\n\t\t\tref.instance.content.set('');\n\t\t}\n\n\t\tref.instance.mouseLeave$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.#action.set('close'));\n\t\tref.instance.mouseEnter$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.#action.set('open'));\n\t}\n\n\tprivate closeTooltip(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.detach();\n\t\t}\n\t\tthis.#effectRef?.destroy();\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\tif (!this.luTooltipWhenEllipsis() && !this.luTooltipOnlyForDisplay()) {\n\t\t\tthis.prepareOverlay();\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\n\t\tif (!isNativelyFocusableTag && !this.luTooltipWhenEllipsis() && !this.luTooltipOnlyForDisplay()) {\n\t\t\tthis.#renderer.setAttribute(this.#host.nativeElement, 'role', 'button');\n\t\t}\n\t}\n\n\t// Legacy position builder to handle existing position API\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.#resolveAnchor())\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\t#resolveAnchor(): FlexibleConnectedPositionStrategyOrigin {\n\t\tconst anchor = this.luTooltipAnchor();\n\n\t\tif (isNil(anchor)) {\n\t\t\treturn this.#host;\n\t\t} else if ('getElementRef' in anchor) {\n\t\t\treturn anchor.getElementRef();\n\t\t} else {\n\t\t\treturn anchor;\n\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 { OverlayModule } from '@angular/cdk/overlay';\nimport { NgModule } from '@angular/core';\nimport { LuTooltipTriggerDirective } from './tooltip-trigger.directive';\n\n/**\n * @deprecated use `LuTooltipTriggerDirective` instead\n */\n@NgModule({\n\timports: [LuTooltipTriggerDirective, OverlayModule],\n\texports: [LuTooltipTriggerDirective],\n})\nexport class LuTooltipTriggerModule {}\n","import { NgModule } from '@angular/core';\nimport { LuTooltipPanelComponent } from './panel/index';\nimport { LuTooltipTriggerModule } from './trigger/index';\n\n/**\n * @deprecated use `LuTooltipTriggerDirective, LuTooltipPanelComponent` instead\n */\n@NgModule({\n\timports: [LuTooltipTriggerModule, LuTooltipPanelComponent],\n\texports: [LuTooltipTriggerModule, LuTooltipPanelComponent],\n})\nexport class LuTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵeffectWithDeps"],"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/trigger/tooltip-visibility.observer.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, inject, signal } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\n\n@Component({\n\tselector: 'lu-tooltip-panel',\n\ttemplateUrl: './tooltip-panel.component.html',\n\tstyleUrl: './tooltip-panel.component.scss',\n\thost: {\n\t\trole: 'tooltip',\n\t\t'(mouseenter)': 'mouseEnter$.next()',\n\t\t'(mouseleave)': 'mouseLeave$.next()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuTooltipPanelComponent {\n\treadonly destroyRef = inject(DestroyRef);\n\n\treadonly mouseEnter$ = new Subject<void>();\n\treadonly mouseLeave$ = new Subject<void>();\n\n\treadonly content = signal<string | SafeHtml | null>(null);\n\n\treadonly contentPositionClasses = signal<Record<string, boolean>>({});\n\n\tsetPanelPosition(posX: HorizontalConnectionPos, posY: VerticalConnectionPos): void {\n\t\tthis.contentPositionClasses.set({\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","@if (content(); as content) {\n\t<div class=\"tooltip\" [class]=\"contentPositionClasses()\" [innerHtml]=\"content\"></div>\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Single, shared IntersectionObserver used by every tooltip to defer its first ellipsis\n * measurement until the host element is near the viewport.\n *\n * One observer for the whole page is far cheaper than one IntersectionObserver per tooltip when\n * many tooltips are created at once (e.g. a large table being (re)rendered): the browser then\n * delivers a single batched callback instead of one per element.\n */\n@Injectable({ providedIn: 'root' })\nexport class TooltipVisibilityObserver {\n\t#observer?: IntersectionObserver;\n\treadonly #callbacks = new WeakMap<Element, () => void>();\n\n\t/** Calls `onVisible` once — the first time `element` comes near the viewport — then stops observing it. */\n\tobserveOnce(element: Element, onVisible: () => void): void {\n\t\tthis.#callbacks.set(element, onVisible);\n\t\tthis.#getObserver().observe(element);\n\t}\n\n\tunobserve(element: Element): void {\n\t\tthis.#callbacks.delete(element);\n\t\tthis.#observer?.unobserve(element);\n\t}\n\n\t// Created lazily so the observer is only instantiated in the browser, on first use.\n\t#getObserver(): IntersectionObserver {\n\t\treturn (this.#observer ??= new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tif (!entry.isIntersecting) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst onVisible = this.#callbacks.get(entry.target);\n\t\t\t\t\tthis.unobserve(entry.target);\n\t\t\t\t\tonVisible?.();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ rootMargin: '100px' },\n\t\t));\n\t}\n}\n","import {\n\tFlexibleConnectedPositionStrategy,\n\tFlexibleConnectedPositionStrategyOrigin,\n\tHorizontalConnectionPos,\n\tOriginConnectionPosition,\n\tOverlay,\n\tOverlayConnectionPosition,\n\tOverlayRef,\n\tVerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterRenderEffect,\n\tbooleanAttribute,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tEffectRef,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\tOnDestroy,\n\tRenderer2,\n\tsignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { getPushPanelViewportMargin, isNil, isNotNil, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { LuPopoverPosition } from '@lucca-front/ng/popover';\nimport { startWith, timer } from 'rxjs';\nimport { debounce, filter, map, tap } from 'rxjs/operators';\nimport { LuTooltipPanelComponent } from '../panel';\nimport { TooltipVisibilityObserver } from './tooltip-visibility.observer';\n\nexport interface LuTooltipAnchorRef {\n\tgetElementRef(): ElementRef;\n}\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[luTooltip]',\n\texportAs: 'luTooltip',\n\thost: {\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy()',\n\t\t'[attr.id]': 'id()',\n\t\t'(mouseenter)': 'onMouseEnter()',\n\t\t'(mouseleave)': 'onMouseLeave()',\n\t\t'(focus)': 'onFocus()',\n\t\t'(blur)': 'onBlur()',\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\tclass: 'tooltip_trigger',\n\t\t'[class.is-whenEllipsis]': 'luTooltipWhenEllipsis()',\n\t},\n})\nexport class LuTooltipTriggerDirective implements OnDestroy {\n\treadonly #overlay = inject(Overlay);\n\treadonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\treadonly #renderer = inject(Renderer2);\n\treadonly #document = inject(DOCUMENT);\n\treadonly #injector = inject(Injector);\n\treadonly #destroyRef = inject(DestroyRef);\n\treadonly #visibilityObserver = inject(TooltipVisibilityObserver);\n\n\treadonly luTooltipInput = input<string | SafeHtml>('', { alias: 'luTooltip' });\n\treadonly luTooltip = linkedSignal<string | SafeHtml>(() => this.luTooltipInput());\n\n\treadonly luTooltipEnterDelay = input(300, { transform: numberAttribute });\n\treadonly luTooltipLeaveDelay = input(100, { transform: numberAttribute });\n\treadonly luTooltipDisabled = input(false, { transform: booleanAttribute });\n\treadonly luTooltipOnlyForDisplay = input(false, { transform: booleanAttribute });\n\treadonly luTooltipPosition = input<LuPopoverPosition>('above');\n\n\treadonly luTooltipWhenEllipsisInput = input(false, { alias: 'luTooltipWhenEllipsis', transform: booleanAttribute });\n\treadonly luTooltipWhenEllipsis = linkedSignal(() => this.luTooltipWhenEllipsisInput());\n\n\treadonly luTooltipAnchor = input<FlexibleConnectedPositionStrategyOrigin | LuTooltipAnchorRef | null | undefined>(this.#host);\n\treadonly id = input<string>(`${this.#host.nativeElement.tagName.toLowerCase()}-tooltip-${nextId++}`);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tif (this.luTooltipDisabled() || this.luTooltipWhenEllipsis() || this.luTooltipOnlyForDisplay()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn `${this.id()}-panel`;\n\t});\n\n\toverlayRef?: OverlayRef;\n\n\t// 0 until the element first appears; bumped for the initial measurement and on every real\n\t// size/content change. Scrolling in and out of view does NOT bump it (see #armMeasurementObservers).\n\treadonly #measureTrigger = signal(0);\n\n\t// guards the one-time setup of the persistent resize/mutation observers\n\t#measurementObserversArmed = false;\n\n\t// the IntersectionObserver callback and a debounced 'open' action (see openTooltip) can\n\t// fire after the view is destroyed; avoid touching the destroyed injector (NG0911) or\n\t// recreating the overlay when that happens\n\t#destroyed = false;\n\n\t// written only from the `read` phase of the afterRenderEffect below\n\treadonly #hasEllipsis = signal(false);\n\n\t// reusable hidden clone, one per directive, used to measure the unconstrained width\n\t#clone?: HTMLDivElement;\n\n\t// Each measurement phase hands over to the next one through these signals rather than through\n\t// the value `afterRenderEffect` pipes between phases. A phase only receives that value when the\n\t// phases before it ran in the same pass; a directive created while the after-render hooks are\n\t// running starts mid-pipeline and gets Angular's `registerCleanupFn` as its first argument\n\t// instead. Calling it then registers `undefined` as a cleanup function, which throws\n\t// `fn is not a function` when the view is destroyed, far away from the cause.\n\treadonly #measurementRequest = signal<{ host: HTMLElement; cloneStyles: Record<string, string> } | null>(null);\n\treadonly #preparedMeasurement = signal<{ host: HTMLElement; clone: HTMLDivElement } | null>(null);\n\n\treadonly #action = signal<'open' | 'close' | null>(null);\n\treadonly #realAction = linkedSignal<'open' | 'close' | null, 'open' | 'close' | null>({\n\t\tsource: this.#action,\n\t\tcomputation: (action, previous): 'open' | 'close' | null => {\n\t\t\tif (!action || action === 'close') {\n\t\t\t\treturn action;\n\t\t\t}\n\n\t\t\t// We only filter open events because even if it's disabled while opened,\n\t\t\t// we want the tooltip to be able to close itself no matter what\n\t\t\tif (this.luTooltipDisabled()) {\n\t\t\t\treturn previous?.value ?? null;\n\t\t\t}\n\n\t\t\tif (this.luTooltipWhenEllipsis()) {\n\t\t\t\treturn this.#hasEllipsis() ? 'open' : (previous?.value ?? null);\n\t\t\t}\n\n\t\t\treturn 'open';\n\t\t},\n\t});\n\n\t#effectRef?: EffectRef;\n\n\tconstructor() {\n\t\tthis.#destroyRef.onDestroy(() => (this.#destroyed = true));\n\n\t\t// Action debounce pipeline — kept as Observable since signals can't debounce\n\t\ttoObservable(this.#realAction)\n\t\t\t.pipe(\n\t\t\t\tfilter(isNotNil),\n\t\t\t\tdebounce((action) => timer(action === 'open' ? this.luTooltipEnterDelay() : this.luTooltipLeaveDelay())),\n\t\t\t\ttap((event) => {\n\t\t\t\t\tif (event === 'open') {\n\t\t\t\t\t\tthis.openTooltip();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.closeTooltip();\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(),\n\t\t\t)\n\t\t\t.subscribe();\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\n\t\t// Defer the first measurement until the element is near the viewport, then stop tracking\n\t\t// visibility: scrolling must not re-measure, so we arm the resize/mutation observers once.\n\t\t// A single shared IntersectionObserver handles every tooltip (see TooltipVisibilityObserver).\n\t\teffect((onCleanup) => {\n\t\t\tif (!this.luTooltipWhenEllipsis() || this.luTooltipDisabled() || this.#measurementObserversArmed) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst el = this.#host.nativeElement;\n\t\t\tthis.#visibilityObserver.observeOnce(el, () => this.#armMeasurementObservers());\n\n\t\t\tonCleanup(() => this.#visibilityObserver.unobserve(el));\n\t\t});\n\n\t\t// Ellipsis measurement, split across afterRenderEffect phases so that — across every tooltip\n\t\t// on the page — all DOM writes happen together, then all geometry reads happen together.\n\t\t// This keeps the whole batch to a single forced reflow instead of one reflow per element.\n\t\tafterRenderEffect({\n\t\t\tearlyRead: () => {\n\t\t\t\tthis.#measurementRequest.set(this.#readMeasurementRequest());\n\t\t\t},\n\t\t\twrite: () => {\n\t\t\t\tconst request = this.#measurementRequest();\n\t\t\t\tif (!request) {\n\t\t\t\t\tthis.#preparedMeasurement.set(null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst clone = (this.#clone ??= this.#createClone());\n\t\t\t\tObject.assign(clone.style, request.cloneStyles);\n\t\t\t\tconst html = request.host.innerHTML;\n\t\t\t\t// Writing the same markup back would invalidate layout for nothing, and every tooltip\n\t\t\t\t// measured after this one would then pay for a new layout on its first geometry read.\n\t\t\t\tif (clone.innerHTML !== html) {\n\t\t\t\t\tclone.innerHTML = html;\n\t\t\t\t}\n\t\t\t\tthis.#preparedMeasurement.set({ host: request.host, clone });\n\t\t\t},\n\t\t\tread: () => {\n\t\t\t\tconst measurement = this.#preparedMeasurement();\n\t\t\t\tif (!measurement) {\n\t\t\t\t\tthis.#hasEllipsis.set(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst cloneWidth = measurement.clone.getBoundingClientRect().width;\n\t\t\t\tconst hostWidth = measurement.host.getBoundingClientRect().width;\n\t\t\t\t// rounded to 3 decimals to ignore sub-pixel noise\n\t\t\t\tthis.#hasEllipsis.set(Math.round(cloneWidth * 1000) > Math.round(hostWidth * 1000));\n\t\t\t},\n\t\t});\n\n\t\tthis.#destroyRef.onDestroy(() => this.#clone?.remove());\n\t}\n\n\t// Set up — once — the observers that ask for a re-measurement on real size/content changes.\n\t// They stay connected for the directive lifetime (even off-screen), so scrolling never\n\t// re-measures; only an actual resize/mutation does.\n\t#armMeasurementObservers(): void {\n\t\tif (this.#measurementObserversArmed || this.#destroyed) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#measurementObserversArmed = true;\n\n\t\tconst el = this.#host.nativeElement;\n\t\tconst bump = () => this.#measureTrigger.update((v) => v + 1);\n\n\t\t// `observe` always delivers an initial notification, which doubles as the first measurement:\n\t\t// asking for one here as well would measure every tooltip on the page twice.\n\t\tconst resizeObserver = new ResizeObserver(() => bump());\n\t\tresizeObserver.observe(el);\n\n\t\tconst mutationObserver = new MutationObserver(() => bump());\n\t\tmutationObserver.observe(el, { characterData: true, subtree: true, childList: true });\n\n\t\tthis.#destroyRef.onDestroy(() => {\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t});\n\t}\n\n\t// Reads everything the measurement needs from the host, in the read-only phase.\n\t#readMeasurementRequest(): { host: HTMLElement; cloneStyles: Record<string, string> } | null {\n\t\t// reading the trigger registers the dependency; 0 means \"not measured yet\"\n\t\tconst measured = this.#measureTrigger() > 0;\n\t\tif (!measured || this.luTooltipDisabled() || !this.luTooltipWhenEllipsis()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst host = this.#host.nativeElement;\n\t\t// A `CSSStyleDeclaration` is live: reading one property from it in the write phase, after\n\t\t// another tooltip has already mutated the DOM, forces a full style recalculation — once per\n\t\t// tooltip on the page. Every value is therefore copied out here.\n\t\tconst { textOverflow, display, padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } = getComputedStyle(host);\n\t\t// No need to run a test if the element is not truncated\n\t\t// or if its `display` property is set to `inline`\n\t\t// (especially for Safari, which still calculates a width, unlike other browsers)\n\t\tif (textOverflow !== 'ellipsis' || display === 'inline') {\n\t\t\treturn null;\n\t\t}\n\t\treturn { host, cloneStyles: { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } };\n\t}\n\n\t#createClone(): HTMLDivElement {\n\t\tconst clone = this.#document.createElement('div');\n\t\tclone.setAttribute('aria-hidden', 'true');\n\t\tObject.assign(clone.style, {\n\t\t\tinlineSize: 'fit-content',\n\t\t\twhiteSpace: 'nowrap',\n\t\t\t// `fixed` + pinned origin keeps the (potentially very wide) clone out of the\n\t\t\t// document's scrollable overflow, so measuring never flashes a scrollbar.\n\t\t\tposition: 'fixed',\n\t\t\tinsetBlockStart: '0',\n\t\t\tinsetInlineStart: '0',\n\t\t\tvisibility: 'hidden',\n\t\t\tpointerEvents: 'none',\n\t\t\tcontain: 'layout',\n\t\t});\n\t\tthis.#document.body.appendChild(clone);\n\t\treturn clone;\n\t}\n\n\tonMouseEnter() {\n\t\tthis.#action.set('open');\n\t}\n\n\tonMouseLeave() {\n\t\tthis.#action.set('close');\n\t}\n\n\tonFocus() {\n\t\tif (this.#host.nativeElement.getAttribute('aria-expanded') !== 'true') {\n\t\t\tthis.#action.set('open');\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis.#action.set('close');\n\t}\n\n\tonEscape(event: Event) {\n\t\tevent.stopPropagation();\n\t\tthis.#action.set(null);\n\t\tthis.closeTooltip();\n\t}\n\n\trequestOpen() {\n\t\tthis.#action.set('open');\n\t}\n\n\trequestClose() {\n\t\tthis.#action.set('close');\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closeTooltip();\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tdelete this.overlayRef;\n\t\t}\n\t}\n\n\tprivate prepareOverlay(): void {\n\t\tif (this.overlayRef) {\n\t\t\treturn;\n\t\t}\n\t\tthis.overlayRef = this.#overlay.create({\n\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\tdisposeOnNavigation: true,\n\t\t});\n\t\tconst describedBy = this.ariaDescribedBy();\n\t\tif (describedBy !== null) {\n\t\t\tthis.overlayRef.overlayElement.id = describedBy;\n\t\t}\n\t}\n\n\tprivate openTooltip(): void {\n\t\t// A pending debounced 'open' is flushed when `toObservable(#realAction)` completes on\n\t\t// destroy (`debounce` re-emits the held value on completion), i.e. AFTER ngOnDestroy has\n\t\t// disposed the overlay. Opening then would recreate an overlay anchored to a detached\n\t\t// host — pinned to the viewport's top-left corner — that nothing would ever dispose.\n\t\tif (this.#destroyed || this.overlayRef?.hasAttached()) {\n\t\t\treturn;\n\t\t}\n\t\tconst position = this.legacyPositionBuilder();\n\t\tif (!this.overlayRef) {\n\t\t\tthis.overlayRef = this.#overlay.create({\n\t\t\t\tpositionStrategy: position,\n\t\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\t\tdisposeOnNavigation: true,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.overlayRef.updatePositionStrategy(position);\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\n\t\tif (this.luTooltip()) {\n\t\t\tthis.#effectRef = ɵeffectWithDeps(\n\t\t\t\t[this.luTooltip],\n\t\t\t\t(luTooltip) => {\n\t\t\t\t\tref.instance.content.set(luTooltip);\n\t\t\t\t},\n\t\t\t\t{ injector: this.#injector },\n\t\t\t);\n\t\t} else if (this.luTooltipWhenEllipsis()) {\n\t\t\tref.instance.content.set(this.#host.nativeElement.innerText);\n\t\t} else {\n\t\t\tref.instance.content.set('');\n\t\t}\n\n\t\tref.instance.mouseLeave$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.#action.set('close'));\n\t\tref.instance.mouseEnter$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.#action.set('open'));\n\t}\n\n\tprivate closeTooltip(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.detach();\n\t\t}\n\t\tthis.#effectRef?.destroy();\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\tif (!this.luTooltipWhenEllipsis() && !this.luTooltipOnlyForDisplay()) {\n\t\t\tthis.prepareOverlay();\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\n\t\tif (!isNativelyFocusableTag && !this.luTooltipWhenEllipsis() && !this.luTooltipOnlyForDisplay()) {\n\t\t\tthis.#renderer.setAttribute(this.#host.nativeElement, 'role', 'button');\n\t\t}\n\t}\n\n\t// Legacy position builder to handle existing position API\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.#resolveAnchor())\n\t\t\t.withViewportMargin(getPushPanelViewportMargin(this.#host.nativeElement))\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\t#resolveAnchor(): FlexibleConnectedPositionStrategyOrigin {\n\t\tconst anchor = this.luTooltipAnchor();\n\n\t\tif (isNil(anchor)) {\n\t\t\treturn this.#host;\n\t\t} else if ('getElementRef' in anchor) {\n\t\t\treturn anchor.getElementRef();\n\t\t} else {\n\t\t\treturn anchor;\n\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 { OverlayModule } from '@angular/cdk/overlay';\nimport { NgModule } from '@angular/core';\nimport { LuTooltipTriggerDirective } from './tooltip-trigger.directive';\n\n/**\n * @deprecated use `LuTooltipTriggerDirective` instead\n */\n@NgModule({\n\timports: [LuTooltipTriggerDirective, OverlayModule],\n\texports: [LuTooltipTriggerDirective],\n})\nexport class LuTooltipTriggerModule {}\n","import { NgModule } from '@angular/core';\nimport { LuTooltipPanelComponent } from './panel/index';\nimport { LuTooltipTriggerModule } from './trigger/index';\n\n/**\n * @deprecated use `LuTooltipTriggerDirective, LuTooltipPanelComponent` instead\n */\n@NgModule({\n\timports: [LuTooltipTriggerModule, LuTooltipPanelComponent],\n\texports: [LuTooltipTriggerModule, LuTooltipPanelComponent],\n})\nexport class LuTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵeffectWithDeps"],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ class TreeSelectDirective {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
this.#select = inject(ALuSelectInputComponent);
|
|
10
10
|
this.groupingFnInput = input.required({ ...(ngDevMode ? { debugName: "groupingFnInput" } : /* istanbul ignore next */ {}), alias: 'treeSelect' });
|
|
11
|
-
this.groupingFn = linkedSignal(() => this.groupingFnInput(),
|
|
11
|
+
this.groupingFn = linkedSignal(() => this.groupingFnInput(), /* @ts-ignore */
|
|
12
|
+
...(ngDevMode ? [{ debugName: "groupingFn" }] : /* istanbul ignore next */ []));
|
|
12
13
|
this.#select.treeGenerator = this;
|
|
13
14
|
}
|
|
14
15
|
generateTrees(items) {
|
|
@@ -55,10 +56,10 @@ class TreeSelectDirective {
|
|
|
55
56
|
}
|
|
56
57
|
return res;
|
|
57
58
|
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
59
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
60
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: TreeSelectDirective, isStandalone: true, selector: "lu-simple-select[treeSelect],lu-multi-select[treeSelect]", inputs: { groupingFnInput: { classPropertyName: "groupingFnInput", publicName: "treeSelect", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
60
61
|
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeSelectDirective, decorators: [{
|
|
62
63
|
type: Directive,
|
|
63
64
|
args: [{
|
|
64
65
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -69,17 +70,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
69
70
|
class TreeBranchComponent {
|
|
70
71
|
constructor() {
|
|
71
72
|
this.selectInputComponent = inject(ALuSelectInputComponent);
|
|
72
|
-
this.rootOptionRef = viewChild('rootOption',
|
|
73
|
-
|
|
74
|
-
this.
|
|
73
|
+
this.rootOptionRef = viewChild('rootOption', /* @ts-ignore */
|
|
74
|
+
...(ngDevMode ? [{ debugName: "rootOptionRef" }] : /* istanbul ignore next */ []));
|
|
75
|
+
this.branch = input.required(/* @ts-ignore */
|
|
76
|
+
...(ngDevMode ? [{ debugName: "branch" }] : /* istanbul ignore next */ []));
|
|
77
|
+
this.optionTpl = input.required(/* @ts-ignore */
|
|
78
|
+
...(ngDevMode ? [{ debugName: "optionTpl" }] : /* istanbul ignore next */ []));
|
|
75
79
|
this.optionIndex = input.required({ ...(ngDevMode ? { debugName: "optionIndex" } : /* istanbul ignore next */ {}), transform: (value) => `${value}` });
|
|
76
|
-
this.optionComparer = input.required(
|
|
77
|
-
|
|
80
|
+
this.optionComparer = input.required(/* @ts-ignore */
|
|
81
|
+
...(ngDevMode ? [{ debugName: "optionComparer" }] : /* istanbul ignore next */ []));
|
|
82
|
+
this.selectedOptions = input([], /* @ts-ignore */
|
|
83
|
+
...(ngDevMode ? [{ debugName: "selectedOptions" }] : /* istanbul ignore next */ []));
|
|
78
84
|
this.toggleOne = output();
|
|
79
85
|
this.selectMany = output();
|
|
80
86
|
this.unselectMany = output();
|
|
81
87
|
this.simpleMode = input(false, { ...(ngDevMode ? { debugName: "simpleMode" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
82
|
-
this.depth = input(1,
|
|
88
|
+
this.depth = input(1, /* @ts-ignore */
|
|
89
|
+
...(ngDevMode ? [{ debugName: "depth" }] : /* istanbul ignore next */ []));
|
|
83
90
|
if (this.selectInputComponent.selectChildren$) {
|
|
84
91
|
this.selectInputComponent.selectChildren$.pipe(takeUntilDestroyed()).subscribe(() => {
|
|
85
92
|
if (this.rootOptionRef().isHighlighted()) {
|
|
@@ -125,10 +132,10 @@ class TreeBranchComponent {
|
|
|
125
132
|
}
|
|
126
133
|
return result;
|
|
127
134
|
}
|
|
128
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
129
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
135
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeBranchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
136
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: TreeBranchComponent, isStandalone: true, selector: "lu-tree-branch", inputs: { branch: { classPropertyName: "branch", publicName: "branch", isSignal: true, isRequired: true, transformFunction: null }, optionTpl: { classPropertyName: "optionTpl", publicName: "optionTpl", isSignal: true, isRequired: true, transformFunction: null }, optionIndex: { classPropertyName: "optionIndex", publicName: "optionIndex", isSignal: true, isRequired: true, transformFunction: null }, optionComparer: { classPropertyName: "optionComparer", publicName: "optionComparer", isSignal: true, isRequired: true, transformFunction: null }, selectedOptions: { classPropertyName: "selectedOptions", publicName: "selectedOptions", isSignal: true, isRequired: false, transformFunction: null }, simpleMode: { classPropertyName: "simpleMode", publicName: "simpleMode", isSignal: true, isRequired: false, transformFunction: null }, depth: { classPropertyName: "depth", publicName: "depth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleOne: "toggleOne", selectMany: "selectMany", unselectMany: "unselectMany" }, viewQueries: [{ propertyName: "rootOptionRef", first: true, predicate: ["rootOption"], descendants: true, isSignal: true }], ngImport: i0, template: "<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[style.--components-treeBranch-level]=\"depth()\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch())\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n/>\n@for (child of branch().children; track $index) {\n\t<lu-tree-branch\n\t\t[depth]=\"depth() + 1\"\n\t\t[branch]=\"child\"\n\t\t[optionTpl]=\"optionTpl()\"\n\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t[optionComparer]=\"optionComparer()\"\n\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t[simpleMode]=\"simpleMode()\"\n\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t/>\n}\n", styles: ["@layer components{lu-tree-branch lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-padding-horizontal: calc(var(--pr-t-spacings-100) + var(--pr-t-spacings-100) * var(--components-treeBranch-level)) var(--pr-t-spacings-100)}lu-tree-branch .optionItem-icons{opacity:0}lu-tree-branch .optionItem.is-highlighted .optionItem-icons,lu-tree-branch .optionItem-value:hover .optionItem-icons{opacity:1}}@layer mods{.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-multiple-padding: calc(1.75rem + var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:before,.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:after{inset-inline-start:calc(var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{margin-block-start:var(--pr-t-spacings-50)}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option{gap:0}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option>lu-tree-branch:first-of-type>lu-select-option:first-of-type{margin-block-start:0}}\n"], dependencies: [{ kind: "component", type: TreeBranchComponent, selector: "lu-tree-branch", inputs: ["branch", "optionTpl", "optionIndex", "optionComparer", "selectedOptions", "simpleMode", "depth"], outputs: ["toggleOne", "selectMany", "unselectMany"] }, { kind: "directive", type: _CoreSelectPanelElement, selector: "[luCoreSelectPanelElement]", inputs: ["elementId", "isSelected", "option", "disabled"], outputs: ["isSelectedChange", "selected"], exportAs: ["luCoreSelectPanelElement"] }, { kind: "component", type: _LuOptionComponent, selector: "lu-select-option", inputs: ["intl", "optionTpl", "option", "grouping", "hasChildren", "groupIndex", "optionIndex", "scrollIntoViewOptions", "groupTemplateLocation"], outputs: ["onlyParent", "onlyChildren"] }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
130
137
|
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeBranchComponent, decorators: [{
|
|
132
139
|
type: Component,
|
|
133
140
|
args: [{ selector: 'lu-tree-branch', imports: [_CoreSelectPanelElement, LuIsOptionSelectedPipe, _LuOptionComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[style.--components-treeBranch-level]=\"depth()\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch())\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n/>\n@for (child of branch().children; track $index) {\n\t<lu-tree-branch\n\t\t[depth]=\"depth() + 1\"\n\t\t[branch]=\"child\"\n\t\t[optionTpl]=\"optionTpl()\"\n\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t[optionComparer]=\"optionComparer()\"\n\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t[simpleMode]=\"simpleMode()\"\n\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t/>\n}\n", styles: ["@layer components{lu-tree-branch lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-padding-horizontal: calc(var(--pr-t-spacings-100) + var(--pr-t-spacings-100) * var(--components-treeBranch-level)) var(--pr-t-spacings-100)}lu-tree-branch .optionItem-icons{opacity:0}lu-tree-branch .optionItem.is-highlighted .optionItem-icons,lu-tree-branch .optionItem-value:hover .optionItem-icons{opacity:1}}@layer mods{.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-multiple-padding: calc(1.75rem + var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:before,.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:after{inset-inline-start:calc(var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{margin-block-start:var(--pr-t-spacings-50)}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option{gap:0}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option>lu-tree-branch:first-of-type>lu-select-option:first-of-type{margin-block-start:0}}\n"] }]
|
|
134
141
|
}], ctorParameters: () => [], propDecorators: { rootOptionRef: [{ type: i0.ViewChild, args: ['rootOption', { isSignal: true }] }], branch: [{ type: i0.Input, args: [{ isSignal: true, alias: "branch", required: true }] }], optionTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionTpl", required: true }] }], optionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionIndex", required: true }] }], optionComparer: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionComparer", required: true }] }], selectedOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedOptions", required: false }] }], toggleOne: [{ type: i0.Output, args: ["toggleOne"] }], selectMany: [{ type: i0.Output, args: ["selectMany"] }], unselectMany: [{ type: i0.Output, args: ["unselectMany"] }], simpleMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "simpleMode", required: false }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }] } });
|