@mxtommy/kip 3.9.0-beta.2 → 3.9.0-beta.21
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/.github/copilot-instructions.md +1 -1
- package/.github/instructions/angular.instructions.md +46 -0
- package/README.md +49 -12
- package/package.json +2 -4
- package/public/3rdpartylicenses.txt +77 -77
- package/public/app-help.component.css.map +7 -0
- package/public/app.component.css.map +7 -0
- package/public/assets/help-docs/configuration.md +4 -4
- package/public/assets/help-docs/dashboards.md +4 -2
- package/public/assets/svg/icons.svg +1 -1
- package/public/boolean-control-config.component.css.map +7 -0
- package/public/boolean-multicontrol-options.component.css.map +7 -0
- package/public/chunk-3EWIS24B.js +5237 -0
- package/public/chunk-3EWIS24B.js.map +1 -0
- package/public/chunk-3VR3EA35.js +1022 -0
- package/public/chunk-3VR3EA35.js.map +1 -0
- package/public/chunk-63ILPRXC.js +2091 -0
- package/public/chunk-63ILPRXC.js.map +1 -0
- package/public/chunk-65ZWQBS6.js +3102 -0
- package/public/chunk-65ZWQBS6.js.map +1 -0
- package/public/chunk-B3LKEWZP.js +4950 -0
- package/public/chunk-B3LKEWZP.js.map +1 -0
- package/public/chunk-BIBIW64D.js +16773 -0
- package/public/chunk-BIBIW64D.js.map +1 -0
- package/public/chunk-BM53SC5N.js +77 -0
- package/public/chunk-BM53SC5N.js.map +7 -0
- package/public/chunk-D7ILNFDM.js +3059 -0
- package/public/chunk-D7ILNFDM.js.map +1 -0
- package/public/chunk-E24UNLSJ.js +2228 -0
- package/public/chunk-E24UNLSJ.js.map +1 -0
- package/public/chunk-J42S2ELC.js +5927 -0
- package/public/chunk-J42S2ELC.js.map +1 -0
- package/public/chunk-KC22A6VH.js +17 -0
- package/public/chunk-KC22A6VH.js.map +7 -0
- package/public/chunk-MCEJWZB2.js +116 -0
- package/public/chunk-MCEJWZB2.js.map +1 -0
- package/public/chunk-NBF6SE6O.js +89 -0
- package/public/chunk-NBF6SE6O.js.map +7 -0
- package/public/chunk-QC7VGVAR.js +343 -0
- package/public/chunk-QC7VGVAR.js.map +7 -0
- package/public/chunk-SDOP6T56.js +42377 -0
- package/public/chunk-SDOP6T56.js.map +1 -0
- package/public/chunk-U2DCSTRY.js +159 -0
- package/public/chunk-U2DCSTRY.js.map +7 -0
- package/public/chunk-UHVNAEXC.js +4752 -0
- package/public/chunk-UHVNAEXC.js.map +1 -0
- package/public/chunk-UQYTD5AC.js +2723 -0
- package/public/chunk-UQYTD5AC.js.map +1 -0
- package/public/chunk-XSABJ5NZ.js +272 -0
- package/public/chunk-XSABJ5NZ.js.map +7 -0
- package/public/chunk-Y6N6O2IP.js +19852 -0
- package/public/chunk-Y6N6O2IP.js.map +1 -0
- package/public/chunk-YGJLBLOX.js +2708 -0
- package/public/chunk-YGJLBLOX.js.map +1 -0
- package/public/chunk-YT33DHC3.js +591 -0
- package/public/chunk-YT33DHC3.js.map +7 -0
- package/public/chunk-YZXYVP72.js +4934 -0
- package/public/chunk-YZXYVP72.js.map +1 -0
- package/public/chunk-ZEHRDSTB.js +13727 -0
- package/public/chunk-ZEHRDSTB.js.map +1 -0
- package/public/config.component.css.map +7 -0
- package/public/dashboard-scroller.component.css.map +7 -0
- package/public/dashboard.component.css.map +7 -0
- package/public/dashboards-editor.component.css.map +7 -0
- package/public/data-inspector-row.component.css.map +7 -0
- package/public/data-inspector.component.css.map +7 -0
- package/public/dataset-chart-options.component.css.map +7 -0
- package/public/datasets.component.css.map +7 -0
- package/public/dialog-confirmation.component.css.map +7 -0
- package/public/dialog-dashboard-page-editor.component.css.map +7 -0
- package/public/dialog-frame.component.css.map +7 -0
- package/public/dialog-name.component.css.map +7 -0
- package/public/display-chart-options.component.css.map +7 -0
- package/public/display.component.css.map +7 -0
- package/public/gauge-steel.component.css.map +7 -0
- package/public/home.component.css.map +7 -0
- package/public/index.html +19 -17
- package/public/main.js +36423 -0
- package/public/main.js.map +1 -0
- package/public/menu-actions.component.css.map +7 -0
- package/public/menu-notifications.component.css.map +7 -0
- package/public/minichart.component.css.map +7 -0
- package/public/modal-user-credential.component.css.map +7 -0
- package/public/modal-widget-config.component.css.map +7 -0
- package/public/notification-badge.component.css.map +7 -0
- package/public/page-header.component.css.map +7 -0
- package/public/path-control-config.component.css.map +7 -0
- package/public/paths-options.component.css.map +7 -0
- package/public/polyfills.js +4422 -0
- package/public/polyfills.js.map +1 -0
- package/public/select-autopilot.component.css.map +7 -0
- package/public/select-icon.component.css.map +7 -0
- package/public/settings.component.css.map +7 -0
- package/public/signalk.component.css.map +7 -0
- package/public/styles.css +1651 -0
- package/public/styles.css.map +7 -0
- package/public/svg-autopilot.component.css.map +7 -0
- package/public/svg-racesteer.component.css.map +7 -0
- package/public/svg-simple-linear-gauge.component.css.map +7 -0
- package/public/svg-windsteer.component.css.map +7 -0
- package/public/tile-large-icon.component.css.map +7 -0
- package/public/units.component.css.map +7 -0
- package/public/upgrade-config.component.css.map +7 -0
- package/public/widget-autopilot.component.css.map +7 -0
- package/public/widget-boolean-switch.component.css.map +7 -0
- package/public/widget-datetime.component.css.map +7 -0
- package/public/widget-freeboardsk.component.css.map +7 -0
- package/public/widget-gauge-ng-compass.component.css.map +7 -0
- package/public/widget-gauge-ng-linear.component.css.map +7 -0
- package/public/widget-gauge-ng-radial.component.css.map +7 -0
- package/public/widget-gauge-steel.component.css.map +7 -0
- package/public/widget-horizon.component.css.map +7 -0
- package/public/widget-host.component.css.map +7 -0
- package/public/widget-iframe.component.css.map +7 -0
- package/public/widget-label.component.css.map +7 -0
- package/public/widget-list-card.component.css.map +7 -0
- package/public/widget-numeric.component.css.map +7 -0
- package/public/widget-position.component.css.map +7 -0
- package/public/widget-race-timer.component.css.map +7 -0
- package/public/widget-racer-line.component.css.map +7 -0
- package/public/widget-racer-timer.component.css.map +7 -0
- package/public/widget-simple-linear.component.css.map +7 -0
- package/public/widget-slider.component.css.map +7 -0
- package/public/widget-text.component.css.map +7 -0
- package/public/widget-title.component.css.map +7 -0
- package/public/widget-tutorial.component.css.map +7 -0
- package/public/widgets-list.component.css.map +7 -0
- package/public/assets/hammer.min.js +0 -7
- package/public/chunk-2YVW3TBK.js +0 -2
- package/public/chunk-35L7BBBD.js +0 -15
- package/public/chunk-3LEMFOCV.js +0 -3
- package/public/chunk-3LJAKLLW.js +0 -1
- package/public/chunk-4JJLPUET.js +0 -60
- package/public/chunk-CBUY7NMR.js +0 -2
- package/public/chunk-CQXWGD3T.js +0 -2
- package/public/chunk-EUFDL4TJ.js +0 -6
- package/public/chunk-FBFTGVZ6.js +0 -1
- package/public/chunk-HCXH72CD.js +0 -5
- package/public/chunk-JY3WVS7C.js +0 -2
- package/public/chunk-KTDDP73O.js +0 -2
- package/public/chunk-NMEZOCU2.js +0 -1
- package/public/chunk-NS2FPVWM.js +0 -4
- package/public/chunk-OSYHJB4F.js +0 -11
- package/public/chunk-PKNLASTF.js +0 -4
- package/public/chunk-Q2Y75POI.js +0 -1
- package/public/chunk-RRTCHHRC.js +0 -3
- package/public/chunk-TA4GACKT.js +0 -4
- package/public/chunk-TXPLRBW5.js +0 -2
- package/public/chunk-VHFBF47T.js +0 -1
- package/public/chunk-VYUMZVH2.js +0 -2
- package/public/chunk-XRGAX4LS.js +0 -2
- package/public/chunk-YNJRIFUM.js +0 -1
- package/public/chunk-ZBCOJLI4.js +0 -6
- package/public/main-XM5EHMUE.js +0 -50
- package/public/polyfills-KH22MU6U.js +0 -2
- package/public/styles-RECKN66R.css +0 -1
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP-ILKS6RVC.woff2 → KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ-MJ3CERJ6.woff2 → KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP-UW3XWY7P.woff2 → KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP-U3JTBV4H.woff2 → KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP-36ULTGLY.woff2 → KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP-5NJLO2HW.woff2 → KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP-2EL65J2O.woff2 → KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP-XWLWMQVU.woff2 → KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ-PWGJWDFE.woff2 → KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP-ITB7NUJC.woff2 → KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP-32PLHKPQ.woff2 → KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP-QPSNQEDD.woff2 → KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP-JKBSJZY3.woff2 → KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP-OG5AHRIX.woff2 → KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz-PPTELUJT.woff2 → KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu4mxKKTU1Kg-SNGEW7FX.woff2 → KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz-DRL4U32S.woff2 → KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu72xKKTU1Kvnz-PRJ7OQMU.woff2 → KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz-HW6RMPJ3.woff2 → KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz-KZD6JQRT.woff2 → KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz-Z72STTMG.woff2 → KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2} +0 -0
- /package/public/media/{flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-CN2J7AYH.woff2 → flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2} +0 -0
|
@@ -0,0 +1,1022 @@
|
|
|
1
|
+
import {
|
|
2
|
+
A11yModule,
|
|
3
|
+
AriaDescriber,
|
|
4
|
+
CdkScrollableModule,
|
|
5
|
+
ChangeDetectionStrategy,
|
|
6
|
+
ChangeDetectorRef,
|
|
7
|
+
Component,
|
|
8
|
+
ComponentPortal,
|
|
9
|
+
DOCUMENT,
|
|
10
|
+
Directionality,
|
|
11
|
+
Directive,
|
|
12
|
+
ESCAPE,
|
|
13
|
+
ElementRef,
|
|
14
|
+
FocusMonitor,
|
|
15
|
+
InjectionToken,
|
|
16
|
+
Injector,
|
|
17
|
+
Input,
|
|
18
|
+
MatCommonModule,
|
|
19
|
+
NgClass,
|
|
20
|
+
NgModule,
|
|
21
|
+
NgZone,
|
|
22
|
+
OverlayModule,
|
|
23
|
+
Platform,
|
|
24
|
+
ScrollDispatcher,
|
|
25
|
+
Subject,
|
|
26
|
+
ViewChild,
|
|
27
|
+
ViewContainerRef,
|
|
28
|
+
ViewEncapsulation,
|
|
29
|
+
__spreadValues,
|
|
30
|
+
_animationsDisabled,
|
|
31
|
+
afterNextRender,
|
|
32
|
+
coerceBooleanProperty,
|
|
33
|
+
coerceNumberProperty,
|
|
34
|
+
createFlexibleConnectedPositionStrategy,
|
|
35
|
+
createOverlayRef,
|
|
36
|
+
createRepositionScrollStrategy,
|
|
37
|
+
hasModifierKey,
|
|
38
|
+
inject,
|
|
39
|
+
normalizePassiveListenerOptions,
|
|
40
|
+
setClassMetadata,
|
|
41
|
+
takeUntil,
|
|
42
|
+
ɵɵadvance,
|
|
43
|
+
ɵɵclassProp,
|
|
44
|
+
ɵɵdefineComponent,
|
|
45
|
+
ɵɵdefineDirective,
|
|
46
|
+
ɵɵdefineInjector,
|
|
47
|
+
ɵɵdefineNgModule,
|
|
48
|
+
ɵɵelementEnd,
|
|
49
|
+
ɵɵelementStart,
|
|
50
|
+
ɵɵgetCurrentView,
|
|
51
|
+
ɵɵlistener,
|
|
52
|
+
ɵɵloadQuery,
|
|
53
|
+
ɵɵproperty,
|
|
54
|
+
ɵɵqueryRefresh,
|
|
55
|
+
ɵɵresetView,
|
|
56
|
+
ɵɵrestoreView,
|
|
57
|
+
ɵɵtext,
|
|
58
|
+
ɵɵtextInterpolate,
|
|
59
|
+
ɵɵviewQuery
|
|
60
|
+
} from "./chunk-SDOP6T56.js";
|
|
61
|
+
|
|
62
|
+
// node_modules/@angular/material/fesm2022/module-DVPFZEhf.mjs
|
|
63
|
+
var _c0 = ["tooltip"];
|
|
64
|
+
var SCROLL_THROTTLE_MS = 20;
|
|
65
|
+
function getMatTooltipInvalidPositionError(position) {
|
|
66
|
+
return Error(`Tooltip position "${position}" is invalid.`);
|
|
67
|
+
}
|
|
68
|
+
var MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken("mat-tooltip-scroll-strategy", {
|
|
69
|
+
providedIn: "root",
|
|
70
|
+
factory: () => {
|
|
71
|
+
const injector = inject(Injector);
|
|
72
|
+
return () => createRepositionScrollStrategy(injector, {
|
|
73
|
+
scrollThrottle: SCROLL_THROTTLE_MS
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
function MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(_overlay) {
|
|
78
|
+
const injector = inject(Injector);
|
|
79
|
+
return () => createRepositionScrollStrategy(injector, {
|
|
80
|
+
scrollThrottle: SCROLL_THROTTLE_MS
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
var MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {
|
|
84
|
+
provide: MAT_TOOLTIP_SCROLL_STRATEGY,
|
|
85
|
+
deps: [],
|
|
86
|
+
useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY
|
|
87
|
+
};
|
|
88
|
+
function MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY() {
|
|
89
|
+
return {
|
|
90
|
+
showDelay: 0,
|
|
91
|
+
hideDelay: 0,
|
|
92
|
+
touchendHideDelay: 1500
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
var MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken("mat-tooltip-default-options", {
|
|
96
|
+
providedIn: "root",
|
|
97
|
+
factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY
|
|
98
|
+
});
|
|
99
|
+
var PANEL_CLASS = "tooltip-panel";
|
|
100
|
+
var passiveListenerOptions = normalizePassiveListenerOptions({
|
|
101
|
+
passive: true
|
|
102
|
+
});
|
|
103
|
+
var MIN_VIEWPORT_TOOLTIP_THRESHOLD = 8;
|
|
104
|
+
var UNBOUNDED_ANCHOR_GAP = 8;
|
|
105
|
+
var MIN_HEIGHT = 24;
|
|
106
|
+
var MAX_WIDTH = 200;
|
|
107
|
+
var MatTooltip = class _MatTooltip {
|
|
108
|
+
_elementRef = inject(ElementRef);
|
|
109
|
+
_ngZone = inject(NgZone);
|
|
110
|
+
_platform = inject(Platform);
|
|
111
|
+
_ariaDescriber = inject(AriaDescriber);
|
|
112
|
+
_focusMonitor = inject(FocusMonitor);
|
|
113
|
+
_dir = inject(Directionality);
|
|
114
|
+
_injector = inject(Injector);
|
|
115
|
+
_viewContainerRef = inject(ViewContainerRef);
|
|
116
|
+
_animationsDisabled = _animationsDisabled();
|
|
117
|
+
_defaultOptions = inject(MAT_TOOLTIP_DEFAULT_OPTIONS, {
|
|
118
|
+
optional: true
|
|
119
|
+
});
|
|
120
|
+
_overlayRef;
|
|
121
|
+
_tooltipInstance;
|
|
122
|
+
_overlayPanelClass;
|
|
123
|
+
// Used for styling internally.
|
|
124
|
+
_portal;
|
|
125
|
+
_position = "below";
|
|
126
|
+
_positionAtOrigin = false;
|
|
127
|
+
_disabled = false;
|
|
128
|
+
_tooltipClass;
|
|
129
|
+
_viewInitialized = false;
|
|
130
|
+
_pointerExitEventsInitialized = false;
|
|
131
|
+
_tooltipComponent = TooltipComponent;
|
|
132
|
+
_viewportMargin = 8;
|
|
133
|
+
_currentPosition;
|
|
134
|
+
_cssClassPrefix = "mat-mdc";
|
|
135
|
+
_ariaDescriptionPending;
|
|
136
|
+
_dirSubscribed = false;
|
|
137
|
+
/** Allows the user to define the position of the tooltip relative to the parent element */
|
|
138
|
+
get position() {
|
|
139
|
+
return this._position;
|
|
140
|
+
}
|
|
141
|
+
set position(value) {
|
|
142
|
+
if (value !== this._position) {
|
|
143
|
+
this._position = value;
|
|
144
|
+
if (this._overlayRef) {
|
|
145
|
+
this._updatePosition(this._overlayRef);
|
|
146
|
+
this._tooltipInstance?.show(0);
|
|
147
|
+
this._overlayRef.updatePosition();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Whether tooltip should be relative to the click or touch origin
|
|
153
|
+
* instead of outside the element bounding box.
|
|
154
|
+
*/
|
|
155
|
+
get positionAtOrigin() {
|
|
156
|
+
return this._positionAtOrigin;
|
|
157
|
+
}
|
|
158
|
+
set positionAtOrigin(value) {
|
|
159
|
+
this._positionAtOrigin = coerceBooleanProperty(value);
|
|
160
|
+
this._detach();
|
|
161
|
+
this._overlayRef = null;
|
|
162
|
+
}
|
|
163
|
+
/** Disables the display of the tooltip. */
|
|
164
|
+
get disabled() {
|
|
165
|
+
return this._disabled;
|
|
166
|
+
}
|
|
167
|
+
set disabled(value) {
|
|
168
|
+
const isDisabled = coerceBooleanProperty(value);
|
|
169
|
+
if (this._disabled !== isDisabled) {
|
|
170
|
+
this._disabled = isDisabled;
|
|
171
|
+
if (isDisabled) {
|
|
172
|
+
this.hide(0);
|
|
173
|
+
} else {
|
|
174
|
+
this._setupPointerEnterEventsIfNeeded();
|
|
175
|
+
}
|
|
176
|
+
this._syncAriaDescription(this.message);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/** The default delay in ms before showing the tooltip after show is called */
|
|
180
|
+
get showDelay() {
|
|
181
|
+
return this._showDelay;
|
|
182
|
+
}
|
|
183
|
+
set showDelay(value) {
|
|
184
|
+
this._showDelay = coerceNumberProperty(value);
|
|
185
|
+
}
|
|
186
|
+
_showDelay;
|
|
187
|
+
/** The default delay in ms before hiding the tooltip after hide is called */
|
|
188
|
+
get hideDelay() {
|
|
189
|
+
return this._hideDelay;
|
|
190
|
+
}
|
|
191
|
+
set hideDelay(value) {
|
|
192
|
+
this._hideDelay = coerceNumberProperty(value);
|
|
193
|
+
if (this._tooltipInstance) {
|
|
194
|
+
this._tooltipInstance._mouseLeaveHideDelay = this._hideDelay;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
_hideDelay;
|
|
198
|
+
/**
|
|
199
|
+
* How touch gestures should be handled by the tooltip. On touch devices the tooltip directive
|
|
200
|
+
* uses a long press gesture to show and hide, however it can conflict with the native browser
|
|
201
|
+
* gestures. To work around the conflict, Angular Material disables native gestures on the
|
|
202
|
+
* trigger, but that might not be desirable on particular elements (e.g. inputs and draggable
|
|
203
|
+
* elements). The different values for this option configure the touch event handling as follows:
|
|
204
|
+
* - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native
|
|
205
|
+
* browser gestures on particular elements. In particular, it allows text selection on inputs
|
|
206
|
+
* and textareas, and preserves the native browser dragging on elements marked as `draggable`.
|
|
207
|
+
* - `on` - Enables touch gestures for all elements and disables native
|
|
208
|
+
* browser gestures with no exceptions.
|
|
209
|
+
* - `off` - Disables touch gestures. Note that this will prevent the tooltip from
|
|
210
|
+
* showing on touch devices.
|
|
211
|
+
*/
|
|
212
|
+
touchGestures = "auto";
|
|
213
|
+
/** The message to be displayed in the tooltip */
|
|
214
|
+
get message() {
|
|
215
|
+
return this._message;
|
|
216
|
+
}
|
|
217
|
+
set message(value) {
|
|
218
|
+
const oldMessage = this._message;
|
|
219
|
+
this._message = value != null ? String(value).trim() : "";
|
|
220
|
+
if (!this._message && this._isTooltipVisible()) {
|
|
221
|
+
this.hide(0);
|
|
222
|
+
} else {
|
|
223
|
+
this._setupPointerEnterEventsIfNeeded();
|
|
224
|
+
this._updateTooltipMessage();
|
|
225
|
+
}
|
|
226
|
+
this._syncAriaDescription(oldMessage);
|
|
227
|
+
}
|
|
228
|
+
_message = "";
|
|
229
|
+
/** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */
|
|
230
|
+
get tooltipClass() {
|
|
231
|
+
return this._tooltipClass;
|
|
232
|
+
}
|
|
233
|
+
set tooltipClass(value) {
|
|
234
|
+
this._tooltipClass = value;
|
|
235
|
+
if (this._tooltipInstance) {
|
|
236
|
+
this._setTooltipClass(this._tooltipClass);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** Manually-bound passive event listeners. */
|
|
240
|
+
_passiveListeners = [];
|
|
241
|
+
/** Timer started at the last `touchstart` event. */
|
|
242
|
+
_touchstartTimeout = null;
|
|
243
|
+
/** Emits when the component is destroyed. */
|
|
244
|
+
_destroyed = new Subject();
|
|
245
|
+
/** Whether ngOnDestroyed has been called. */
|
|
246
|
+
_isDestroyed = false;
|
|
247
|
+
constructor() {
|
|
248
|
+
const defaultOptions = this._defaultOptions;
|
|
249
|
+
if (defaultOptions) {
|
|
250
|
+
this._showDelay = defaultOptions.showDelay;
|
|
251
|
+
this._hideDelay = defaultOptions.hideDelay;
|
|
252
|
+
if (defaultOptions.position) {
|
|
253
|
+
this.position = defaultOptions.position;
|
|
254
|
+
}
|
|
255
|
+
if (defaultOptions.positionAtOrigin) {
|
|
256
|
+
this.positionAtOrigin = defaultOptions.positionAtOrigin;
|
|
257
|
+
}
|
|
258
|
+
if (defaultOptions.touchGestures) {
|
|
259
|
+
this.touchGestures = defaultOptions.touchGestures;
|
|
260
|
+
}
|
|
261
|
+
if (defaultOptions.tooltipClass) {
|
|
262
|
+
this.tooltipClass = defaultOptions.tooltipClass;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
this._viewportMargin = MIN_VIEWPORT_TOOLTIP_THRESHOLD;
|
|
266
|
+
}
|
|
267
|
+
ngAfterViewInit() {
|
|
268
|
+
this._viewInitialized = true;
|
|
269
|
+
this._setupPointerEnterEventsIfNeeded();
|
|
270
|
+
this._focusMonitor.monitor(this._elementRef).pipe(takeUntil(this._destroyed)).subscribe((origin) => {
|
|
271
|
+
if (!origin) {
|
|
272
|
+
this._ngZone.run(() => this.hide(0));
|
|
273
|
+
} else if (origin === "keyboard") {
|
|
274
|
+
this._ngZone.run(() => this.show());
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Dispose the tooltip when destroyed.
|
|
280
|
+
*/
|
|
281
|
+
ngOnDestroy() {
|
|
282
|
+
const nativeElement = this._elementRef.nativeElement;
|
|
283
|
+
if (this._touchstartTimeout) {
|
|
284
|
+
clearTimeout(this._touchstartTimeout);
|
|
285
|
+
}
|
|
286
|
+
if (this._overlayRef) {
|
|
287
|
+
this._overlayRef.dispose();
|
|
288
|
+
this._tooltipInstance = null;
|
|
289
|
+
}
|
|
290
|
+
this._passiveListeners.forEach(([event, listener]) => {
|
|
291
|
+
nativeElement.removeEventListener(event, listener, passiveListenerOptions);
|
|
292
|
+
});
|
|
293
|
+
this._passiveListeners.length = 0;
|
|
294
|
+
this._destroyed.next();
|
|
295
|
+
this._destroyed.complete();
|
|
296
|
+
this._isDestroyed = true;
|
|
297
|
+
this._ariaDescriber.removeDescription(nativeElement, this.message, "tooltip");
|
|
298
|
+
this._focusMonitor.stopMonitoring(nativeElement);
|
|
299
|
+
}
|
|
300
|
+
/** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */
|
|
301
|
+
show(delay = this.showDelay, origin) {
|
|
302
|
+
if (this.disabled || !this.message || this._isTooltipVisible()) {
|
|
303
|
+
this._tooltipInstance?._cancelPendingAnimations();
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const overlayRef = this._createOverlay(origin);
|
|
307
|
+
this._detach();
|
|
308
|
+
this._portal = this._portal || new ComponentPortal(this._tooltipComponent, this._viewContainerRef);
|
|
309
|
+
const instance = this._tooltipInstance = overlayRef.attach(this._portal).instance;
|
|
310
|
+
instance._triggerElement = this._elementRef.nativeElement;
|
|
311
|
+
instance._mouseLeaveHideDelay = this._hideDelay;
|
|
312
|
+
instance.afterHidden().pipe(takeUntil(this._destroyed)).subscribe(() => this._detach());
|
|
313
|
+
this._setTooltipClass(this._tooltipClass);
|
|
314
|
+
this._updateTooltipMessage();
|
|
315
|
+
instance.show(delay);
|
|
316
|
+
}
|
|
317
|
+
/** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */
|
|
318
|
+
hide(delay = this.hideDelay) {
|
|
319
|
+
const instance = this._tooltipInstance;
|
|
320
|
+
if (instance) {
|
|
321
|
+
if (instance.isVisible()) {
|
|
322
|
+
instance.hide(delay);
|
|
323
|
+
} else {
|
|
324
|
+
instance._cancelPendingAnimations();
|
|
325
|
+
this._detach();
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/** Shows/hides the tooltip */
|
|
330
|
+
toggle(origin) {
|
|
331
|
+
this._isTooltipVisible() ? this.hide() : this.show(void 0, origin);
|
|
332
|
+
}
|
|
333
|
+
/** Returns true if the tooltip is currently visible to the user */
|
|
334
|
+
_isTooltipVisible() {
|
|
335
|
+
return !!this._tooltipInstance && this._tooltipInstance.isVisible();
|
|
336
|
+
}
|
|
337
|
+
/** Create the overlay config and position strategy */
|
|
338
|
+
_createOverlay(origin) {
|
|
339
|
+
if (this._overlayRef) {
|
|
340
|
+
const existingStrategy = this._overlayRef.getConfig().positionStrategy;
|
|
341
|
+
if ((!this.positionAtOrigin || !origin) && existingStrategy._origin instanceof ElementRef) {
|
|
342
|
+
return this._overlayRef;
|
|
343
|
+
}
|
|
344
|
+
this._detach();
|
|
345
|
+
}
|
|
346
|
+
const scrollableAncestors = this._injector.get(ScrollDispatcher).getAncestorScrollContainers(this._elementRef);
|
|
347
|
+
const panelClass = `${this._cssClassPrefix}-${PANEL_CLASS}`;
|
|
348
|
+
const strategy = createFlexibleConnectedPositionStrategy(this._injector, this.positionAtOrigin ? origin || this._elementRef : this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(false).withViewportMargin(this._viewportMargin).withScrollableContainers(scrollableAncestors);
|
|
349
|
+
strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe((change) => {
|
|
350
|
+
this._updateCurrentPositionClass(change.connectionPair);
|
|
351
|
+
if (this._tooltipInstance) {
|
|
352
|
+
if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {
|
|
353
|
+
this._ngZone.run(() => this.hide(0));
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
this._overlayRef = createOverlayRef(this._injector, {
|
|
358
|
+
direction: this._dir,
|
|
359
|
+
positionStrategy: strategy,
|
|
360
|
+
panelClass: this._overlayPanelClass ? [...this._overlayPanelClass, panelClass] : panelClass,
|
|
361
|
+
scrollStrategy: this._injector.get(MAT_TOOLTIP_SCROLL_STRATEGY)(),
|
|
362
|
+
disableAnimations: this._animationsDisabled
|
|
363
|
+
});
|
|
364
|
+
this._updatePosition(this._overlayRef);
|
|
365
|
+
this._overlayRef.detachments().pipe(takeUntil(this._destroyed)).subscribe(() => this._detach());
|
|
366
|
+
this._overlayRef.outsidePointerEvents().pipe(takeUntil(this._destroyed)).subscribe(() => this._tooltipInstance?._handleBodyInteraction());
|
|
367
|
+
this._overlayRef.keydownEvents().pipe(takeUntil(this._destroyed)).subscribe((event) => {
|
|
368
|
+
if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {
|
|
369
|
+
event.preventDefault();
|
|
370
|
+
event.stopPropagation();
|
|
371
|
+
this._ngZone.run(() => this.hide(0));
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
if (this._defaultOptions?.disableTooltipInteractivity) {
|
|
375
|
+
this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);
|
|
376
|
+
}
|
|
377
|
+
if (!this._dirSubscribed) {
|
|
378
|
+
this._dirSubscribed = true;
|
|
379
|
+
this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {
|
|
380
|
+
if (this._overlayRef) {
|
|
381
|
+
this._updatePosition(this._overlayRef);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
return this._overlayRef;
|
|
386
|
+
}
|
|
387
|
+
/** Detaches the currently-attached tooltip. */
|
|
388
|
+
_detach() {
|
|
389
|
+
if (this._overlayRef && this._overlayRef.hasAttached()) {
|
|
390
|
+
this._overlayRef.detach();
|
|
391
|
+
}
|
|
392
|
+
this._tooltipInstance = null;
|
|
393
|
+
}
|
|
394
|
+
/** Updates the position of the current tooltip. */
|
|
395
|
+
_updatePosition(overlayRef) {
|
|
396
|
+
const position = overlayRef.getConfig().positionStrategy;
|
|
397
|
+
const origin = this._getOrigin();
|
|
398
|
+
const overlay = this._getOverlayPosition();
|
|
399
|
+
position.withPositions([this._addOffset(__spreadValues(__spreadValues({}, origin.main), overlay.main)), this._addOffset(__spreadValues(__spreadValues({}, origin.fallback), overlay.fallback))]);
|
|
400
|
+
}
|
|
401
|
+
/** Adds the configured offset to a position. Used as a hook for child classes. */
|
|
402
|
+
_addOffset(position) {
|
|
403
|
+
const offset = UNBOUNDED_ANCHOR_GAP;
|
|
404
|
+
const isLtr = !this._dir || this._dir.value == "ltr";
|
|
405
|
+
if (position.originY === "top") {
|
|
406
|
+
position.offsetY = -offset;
|
|
407
|
+
} else if (position.originY === "bottom") {
|
|
408
|
+
position.offsetY = offset;
|
|
409
|
+
} else if (position.originX === "start") {
|
|
410
|
+
position.offsetX = isLtr ? -offset : offset;
|
|
411
|
+
} else if (position.originX === "end") {
|
|
412
|
+
position.offsetX = isLtr ? offset : -offset;
|
|
413
|
+
}
|
|
414
|
+
return position;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Returns the origin position and a fallback position based on the user's position preference.
|
|
418
|
+
* The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).
|
|
419
|
+
*/
|
|
420
|
+
_getOrigin() {
|
|
421
|
+
const isLtr = !this._dir || this._dir.value == "ltr";
|
|
422
|
+
const position = this.position;
|
|
423
|
+
let originPosition;
|
|
424
|
+
if (position == "above" || position == "below") {
|
|
425
|
+
originPosition = {
|
|
426
|
+
originX: "center",
|
|
427
|
+
originY: position == "above" ? "top" : "bottom"
|
|
428
|
+
};
|
|
429
|
+
} else if (position == "before" || position == "left" && isLtr || position == "right" && !isLtr) {
|
|
430
|
+
originPosition = {
|
|
431
|
+
originX: "start",
|
|
432
|
+
originY: "center"
|
|
433
|
+
};
|
|
434
|
+
} else if (position == "after" || position == "right" && isLtr || position == "left" && !isLtr) {
|
|
435
|
+
originPosition = {
|
|
436
|
+
originX: "end",
|
|
437
|
+
originY: "center"
|
|
438
|
+
};
|
|
439
|
+
} else if (typeof ngDevMode === "undefined" || ngDevMode) {
|
|
440
|
+
throw getMatTooltipInvalidPositionError(position);
|
|
441
|
+
}
|
|
442
|
+
const {
|
|
443
|
+
x,
|
|
444
|
+
y
|
|
445
|
+
} = this._invertPosition(originPosition.originX, originPosition.originY);
|
|
446
|
+
return {
|
|
447
|
+
main: originPosition,
|
|
448
|
+
fallback: {
|
|
449
|
+
originX: x,
|
|
450
|
+
originY: y
|
|
451
|
+
}
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
/** Returns the overlay position and a fallback position based on the user's preference */
|
|
455
|
+
_getOverlayPosition() {
|
|
456
|
+
const isLtr = !this._dir || this._dir.value == "ltr";
|
|
457
|
+
const position = this.position;
|
|
458
|
+
let overlayPosition;
|
|
459
|
+
if (position == "above") {
|
|
460
|
+
overlayPosition = {
|
|
461
|
+
overlayX: "center",
|
|
462
|
+
overlayY: "bottom"
|
|
463
|
+
};
|
|
464
|
+
} else if (position == "below") {
|
|
465
|
+
overlayPosition = {
|
|
466
|
+
overlayX: "center",
|
|
467
|
+
overlayY: "top"
|
|
468
|
+
};
|
|
469
|
+
} else if (position == "before" || position == "left" && isLtr || position == "right" && !isLtr) {
|
|
470
|
+
overlayPosition = {
|
|
471
|
+
overlayX: "end",
|
|
472
|
+
overlayY: "center"
|
|
473
|
+
};
|
|
474
|
+
} else if (position == "after" || position == "right" && isLtr || position == "left" && !isLtr) {
|
|
475
|
+
overlayPosition = {
|
|
476
|
+
overlayX: "start",
|
|
477
|
+
overlayY: "center"
|
|
478
|
+
};
|
|
479
|
+
} else if (typeof ngDevMode === "undefined" || ngDevMode) {
|
|
480
|
+
throw getMatTooltipInvalidPositionError(position);
|
|
481
|
+
}
|
|
482
|
+
const {
|
|
483
|
+
x,
|
|
484
|
+
y
|
|
485
|
+
} = this._invertPosition(overlayPosition.overlayX, overlayPosition.overlayY);
|
|
486
|
+
return {
|
|
487
|
+
main: overlayPosition,
|
|
488
|
+
fallback: {
|
|
489
|
+
overlayX: x,
|
|
490
|
+
overlayY: y
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
/** Updates the tooltip message and repositions the overlay according to the new message length */
|
|
495
|
+
_updateTooltipMessage() {
|
|
496
|
+
if (this._tooltipInstance) {
|
|
497
|
+
this._tooltipInstance.message = this.message;
|
|
498
|
+
this._tooltipInstance._markForCheck();
|
|
499
|
+
afterNextRender(() => {
|
|
500
|
+
if (this._tooltipInstance) {
|
|
501
|
+
this._overlayRef.updatePosition();
|
|
502
|
+
}
|
|
503
|
+
}, {
|
|
504
|
+
injector: this._injector
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
/** Updates the tooltip class */
|
|
509
|
+
_setTooltipClass(tooltipClass) {
|
|
510
|
+
if (this._tooltipInstance) {
|
|
511
|
+
this._tooltipInstance.tooltipClass = tooltipClass;
|
|
512
|
+
this._tooltipInstance._markForCheck();
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
/** Inverts an overlay position. */
|
|
516
|
+
_invertPosition(x, y) {
|
|
517
|
+
if (this.position === "above" || this.position === "below") {
|
|
518
|
+
if (y === "top") {
|
|
519
|
+
y = "bottom";
|
|
520
|
+
} else if (y === "bottom") {
|
|
521
|
+
y = "top";
|
|
522
|
+
}
|
|
523
|
+
} else {
|
|
524
|
+
if (x === "end") {
|
|
525
|
+
x = "start";
|
|
526
|
+
} else if (x === "start") {
|
|
527
|
+
x = "end";
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return {
|
|
531
|
+
x,
|
|
532
|
+
y
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
/** Updates the class on the overlay panel based on the current position of the tooltip. */
|
|
536
|
+
_updateCurrentPositionClass(connectionPair) {
|
|
537
|
+
const {
|
|
538
|
+
overlayY,
|
|
539
|
+
originX,
|
|
540
|
+
originY
|
|
541
|
+
} = connectionPair;
|
|
542
|
+
let newPosition;
|
|
543
|
+
if (overlayY === "center") {
|
|
544
|
+
if (this._dir && this._dir.value === "rtl") {
|
|
545
|
+
newPosition = originX === "end" ? "left" : "right";
|
|
546
|
+
} else {
|
|
547
|
+
newPosition = originX === "start" ? "left" : "right";
|
|
548
|
+
}
|
|
549
|
+
} else {
|
|
550
|
+
newPosition = overlayY === "bottom" && originY === "top" ? "above" : "below";
|
|
551
|
+
}
|
|
552
|
+
if (newPosition !== this._currentPosition) {
|
|
553
|
+
const overlayRef = this._overlayRef;
|
|
554
|
+
if (overlayRef) {
|
|
555
|
+
const classPrefix = `${this._cssClassPrefix}-${PANEL_CLASS}-`;
|
|
556
|
+
overlayRef.removePanelClass(classPrefix + this._currentPosition);
|
|
557
|
+
overlayRef.addPanelClass(classPrefix + newPosition);
|
|
558
|
+
}
|
|
559
|
+
this._currentPosition = newPosition;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
/** Binds the pointer events to the tooltip trigger. */
|
|
563
|
+
_setupPointerEnterEventsIfNeeded() {
|
|
564
|
+
if (this._disabled || !this.message || !this._viewInitialized || this._passiveListeners.length) {
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
if (this._platformSupportsMouseEvents()) {
|
|
568
|
+
this._passiveListeners.push(["mouseenter", (event) => {
|
|
569
|
+
this._setupPointerExitEventsIfNeeded();
|
|
570
|
+
let point = void 0;
|
|
571
|
+
if (event.x !== void 0 && event.y !== void 0) {
|
|
572
|
+
point = event;
|
|
573
|
+
}
|
|
574
|
+
this.show(void 0, point);
|
|
575
|
+
}]);
|
|
576
|
+
} else if (this.touchGestures !== "off") {
|
|
577
|
+
this._disableNativeGesturesIfNecessary();
|
|
578
|
+
this._passiveListeners.push(["touchstart", (event) => {
|
|
579
|
+
const touch = event.targetTouches?.[0];
|
|
580
|
+
const origin = touch ? {
|
|
581
|
+
x: touch.clientX,
|
|
582
|
+
y: touch.clientY
|
|
583
|
+
} : void 0;
|
|
584
|
+
this._setupPointerExitEventsIfNeeded();
|
|
585
|
+
if (this._touchstartTimeout) {
|
|
586
|
+
clearTimeout(this._touchstartTimeout);
|
|
587
|
+
}
|
|
588
|
+
const DEFAULT_LONGPRESS_DELAY = 500;
|
|
589
|
+
this._touchstartTimeout = setTimeout(() => {
|
|
590
|
+
this._touchstartTimeout = null;
|
|
591
|
+
this.show(void 0, origin);
|
|
592
|
+
}, this._defaultOptions?.touchLongPressShowDelay ?? DEFAULT_LONGPRESS_DELAY);
|
|
593
|
+
}]);
|
|
594
|
+
}
|
|
595
|
+
this._addListeners(this._passiveListeners);
|
|
596
|
+
}
|
|
597
|
+
_setupPointerExitEventsIfNeeded() {
|
|
598
|
+
if (this._pointerExitEventsInitialized) {
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
this._pointerExitEventsInitialized = true;
|
|
602
|
+
const exitListeners = [];
|
|
603
|
+
if (this._platformSupportsMouseEvents()) {
|
|
604
|
+
exitListeners.push(["mouseleave", (event) => {
|
|
605
|
+
const newTarget = event.relatedTarget;
|
|
606
|
+
if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {
|
|
607
|
+
this.hide();
|
|
608
|
+
}
|
|
609
|
+
}], ["wheel", (event) => this._wheelListener(event)]);
|
|
610
|
+
} else if (this.touchGestures !== "off") {
|
|
611
|
+
this._disableNativeGesturesIfNecessary();
|
|
612
|
+
const touchendListener = () => {
|
|
613
|
+
if (this._touchstartTimeout) {
|
|
614
|
+
clearTimeout(this._touchstartTimeout);
|
|
615
|
+
}
|
|
616
|
+
this.hide(this._defaultOptions?.touchendHideDelay);
|
|
617
|
+
};
|
|
618
|
+
exitListeners.push(["touchend", touchendListener], ["touchcancel", touchendListener]);
|
|
619
|
+
}
|
|
620
|
+
this._addListeners(exitListeners);
|
|
621
|
+
this._passiveListeners.push(...exitListeners);
|
|
622
|
+
}
|
|
623
|
+
_addListeners(listeners) {
|
|
624
|
+
listeners.forEach(([event, listener]) => {
|
|
625
|
+
this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);
|
|
626
|
+
});
|
|
627
|
+
}
|
|
628
|
+
_platformSupportsMouseEvents() {
|
|
629
|
+
return !this._platform.IOS && !this._platform.ANDROID;
|
|
630
|
+
}
|
|
631
|
+
/** Listener for the `wheel` event on the element. */
|
|
632
|
+
_wheelListener(event) {
|
|
633
|
+
if (this._isTooltipVisible()) {
|
|
634
|
+
const elementUnderPointer = this._injector.get(DOCUMENT).elementFromPoint(event.clientX, event.clientY);
|
|
635
|
+
const element = this._elementRef.nativeElement;
|
|
636
|
+
if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {
|
|
637
|
+
this.hide();
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
/** Disables the native browser gestures, based on how the tooltip has been configured. */
|
|
642
|
+
_disableNativeGesturesIfNecessary() {
|
|
643
|
+
const gestures = this.touchGestures;
|
|
644
|
+
if (gestures !== "off") {
|
|
645
|
+
const element = this._elementRef.nativeElement;
|
|
646
|
+
const style = element.style;
|
|
647
|
+
if (gestures === "on" || element.nodeName !== "INPUT" && element.nodeName !== "TEXTAREA") {
|
|
648
|
+
style.userSelect = style.msUserSelect = style.webkitUserSelect = style.MozUserSelect = "none";
|
|
649
|
+
}
|
|
650
|
+
if (gestures === "on" || !element.draggable) {
|
|
651
|
+
style.webkitUserDrag = "none";
|
|
652
|
+
}
|
|
653
|
+
style.touchAction = "none";
|
|
654
|
+
style.webkitTapHighlightColor = "transparent";
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
/** Updates the tooltip's ARIA description based on it current state. */
|
|
658
|
+
_syncAriaDescription(oldMessage) {
|
|
659
|
+
if (this._ariaDescriptionPending) {
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
this._ariaDescriptionPending = true;
|
|
663
|
+
this._ariaDescriber.removeDescription(this._elementRef.nativeElement, oldMessage, "tooltip");
|
|
664
|
+
if (!this._isDestroyed) {
|
|
665
|
+
afterNextRender({
|
|
666
|
+
write: () => {
|
|
667
|
+
this._ariaDescriptionPending = false;
|
|
668
|
+
if (this.message && !this.disabled) {
|
|
669
|
+
this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, "tooltip");
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
}, {
|
|
673
|
+
injector: this._injector
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
static \u0275fac = function MatTooltip_Factory(__ngFactoryType__) {
|
|
678
|
+
return new (__ngFactoryType__ || _MatTooltip)();
|
|
679
|
+
};
|
|
680
|
+
static \u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({
|
|
681
|
+
type: _MatTooltip,
|
|
682
|
+
selectors: [["", "matTooltip", ""]],
|
|
683
|
+
hostAttrs: [1, "mat-mdc-tooltip-trigger"],
|
|
684
|
+
hostVars: 2,
|
|
685
|
+
hostBindings: function MatTooltip_HostBindings(rf, ctx) {
|
|
686
|
+
if (rf & 2) {
|
|
687
|
+
\u0275\u0275classProp("mat-mdc-tooltip-disabled", ctx.disabled);
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
inputs: {
|
|
691
|
+
position: [0, "matTooltipPosition", "position"],
|
|
692
|
+
positionAtOrigin: [0, "matTooltipPositionAtOrigin", "positionAtOrigin"],
|
|
693
|
+
disabled: [0, "matTooltipDisabled", "disabled"],
|
|
694
|
+
showDelay: [0, "matTooltipShowDelay", "showDelay"],
|
|
695
|
+
hideDelay: [0, "matTooltipHideDelay", "hideDelay"],
|
|
696
|
+
touchGestures: [0, "matTooltipTouchGestures", "touchGestures"],
|
|
697
|
+
message: [0, "matTooltip", "message"],
|
|
698
|
+
tooltipClass: [0, "matTooltipClass", "tooltipClass"]
|
|
699
|
+
},
|
|
700
|
+
exportAs: ["matTooltip"]
|
|
701
|
+
});
|
|
702
|
+
};
|
|
703
|
+
(() => {
|
|
704
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTooltip, [{
|
|
705
|
+
type: Directive,
|
|
706
|
+
args: [{
|
|
707
|
+
selector: "[matTooltip]",
|
|
708
|
+
exportAs: "matTooltip",
|
|
709
|
+
host: {
|
|
710
|
+
"class": "mat-mdc-tooltip-trigger",
|
|
711
|
+
"[class.mat-mdc-tooltip-disabled]": "disabled"
|
|
712
|
+
}
|
|
713
|
+
}]
|
|
714
|
+
}], () => [], {
|
|
715
|
+
position: [{
|
|
716
|
+
type: Input,
|
|
717
|
+
args: ["matTooltipPosition"]
|
|
718
|
+
}],
|
|
719
|
+
positionAtOrigin: [{
|
|
720
|
+
type: Input,
|
|
721
|
+
args: ["matTooltipPositionAtOrigin"]
|
|
722
|
+
}],
|
|
723
|
+
disabled: [{
|
|
724
|
+
type: Input,
|
|
725
|
+
args: ["matTooltipDisabled"]
|
|
726
|
+
}],
|
|
727
|
+
showDelay: [{
|
|
728
|
+
type: Input,
|
|
729
|
+
args: ["matTooltipShowDelay"]
|
|
730
|
+
}],
|
|
731
|
+
hideDelay: [{
|
|
732
|
+
type: Input,
|
|
733
|
+
args: ["matTooltipHideDelay"]
|
|
734
|
+
}],
|
|
735
|
+
touchGestures: [{
|
|
736
|
+
type: Input,
|
|
737
|
+
args: ["matTooltipTouchGestures"]
|
|
738
|
+
}],
|
|
739
|
+
message: [{
|
|
740
|
+
type: Input,
|
|
741
|
+
args: ["matTooltip"]
|
|
742
|
+
}],
|
|
743
|
+
tooltipClass: [{
|
|
744
|
+
type: Input,
|
|
745
|
+
args: ["matTooltipClass"]
|
|
746
|
+
}]
|
|
747
|
+
});
|
|
748
|
+
})();
|
|
749
|
+
var TooltipComponent = class _TooltipComponent {
|
|
750
|
+
_changeDetectorRef = inject(ChangeDetectorRef);
|
|
751
|
+
_elementRef = inject(ElementRef);
|
|
752
|
+
/* Whether the tooltip text overflows to multiple lines */
|
|
753
|
+
_isMultiline = false;
|
|
754
|
+
/** Message to display in the tooltip */
|
|
755
|
+
message;
|
|
756
|
+
/** Classes to be added to the tooltip. Supports the same syntax as `ngClass`. */
|
|
757
|
+
tooltipClass;
|
|
758
|
+
/** The timeout ID of any current timer set to show the tooltip */
|
|
759
|
+
_showTimeoutId;
|
|
760
|
+
/** The timeout ID of any current timer set to hide the tooltip */
|
|
761
|
+
_hideTimeoutId;
|
|
762
|
+
/** Element that caused the tooltip to open. */
|
|
763
|
+
_triggerElement;
|
|
764
|
+
/** Amount of milliseconds to delay the closing sequence. */
|
|
765
|
+
_mouseLeaveHideDelay;
|
|
766
|
+
/** Whether animations are currently disabled. */
|
|
767
|
+
_animationsDisabled = _animationsDisabled();
|
|
768
|
+
/** Reference to the internal tooltip element. */
|
|
769
|
+
_tooltip;
|
|
770
|
+
/** Whether interactions on the page should close the tooltip */
|
|
771
|
+
_closeOnInteraction = false;
|
|
772
|
+
/** Whether the tooltip is currently visible. */
|
|
773
|
+
_isVisible = false;
|
|
774
|
+
/** Subject for notifying that the tooltip has been hidden from the view */
|
|
775
|
+
_onHide = new Subject();
|
|
776
|
+
/** Name of the show animation and the class that toggles it. */
|
|
777
|
+
_showAnimation = "mat-mdc-tooltip-show";
|
|
778
|
+
/** Name of the hide animation and the class that toggles it. */
|
|
779
|
+
_hideAnimation = "mat-mdc-tooltip-hide";
|
|
780
|
+
constructor() {
|
|
781
|
+
}
|
|
782
|
+
/**
|
|
783
|
+
* Shows the tooltip with an animation originating from the provided origin
|
|
784
|
+
* @param delay Amount of milliseconds to the delay showing the tooltip.
|
|
785
|
+
*/
|
|
786
|
+
show(delay) {
|
|
787
|
+
if (this._hideTimeoutId != null) {
|
|
788
|
+
clearTimeout(this._hideTimeoutId);
|
|
789
|
+
}
|
|
790
|
+
this._showTimeoutId = setTimeout(() => {
|
|
791
|
+
this._toggleVisibility(true);
|
|
792
|
+
this._showTimeoutId = void 0;
|
|
793
|
+
}, delay);
|
|
794
|
+
}
|
|
795
|
+
/**
|
|
796
|
+
* Begins the animation to hide the tooltip after the provided delay in ms.
|
|
797
|
+
* @param delay Amount of milliseconds to delay showing the tooltip.
|
|
798
|
+
*/
|
|
799
|
+
hide(delay) {
|
|
800
|
+
if (this._showTimeoutId != null) {
|
|
801
|
+
clearTimeout(this._showTimeoutId);
|
|
802
|
+
}
|
|
803
|
+
this._hideTimeoutId = setTimeout(() => {
|
|
804
|
+
this._toggleVisibility(false);
|
|
805
|
+
this._hideTimeoutId = void 0;
|
|
806
|
+
}, delay);
|
|
807
|
+
}
|
|
808
|
+
/** Returns an observable that notifies when the tooltip has been hidden from view. */
|
|
809
|
+
afterHidden() {
|
|
810
|
+
return this._onHide;
|
|
811
|
+
}
|
|
812
|
+
/** Whether the tooltip is being displayed. */
|
|
813
|
+
isVisible() {
|
|
814
|
+
return this._isVisible;
|
|
815
|
+
}
|
|
816
|
+
ngOnDestroy() {
|
|
817
|
+
this._cancelPendingAnimations();
|
|
818
|
+
this._onHide.complete();
|
|
819
|
+
this._triggerElement = null;
|
|
820
|
+
}
|
|
821
|
+
/**
|
|
822
|
+
* Interactions on the HTML body should close the tooltip immediately as defined in the
|
|
823
|
+
* material design spec.
|
|
824
|
+
* https://material.io/design/components/tooltips.html#behavior
|
|
825
|
+
*/
|
|
826
|
+
_handleBodyInteraction() {
|
|
827
|
+
if (this._closeOnInteraction) {
|
|
828
|
+
this.hide(0);
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
/**
|
|
832
|
+
* Marks that the tooltip needs to be checked in the next change detection run.
|
|
833
|
+
* Mainly used for rendering the initial text before positioning a tooltip, which
|
|
834
|
+
* can be problematic in components with OnPush change detection.
|
|
835
|
+
*/
|
|
836
|
+
_markForCheck() {
|
|
837
|
+
this._changeDetectorRef.markForCheck();
|
|
838
|
+
}
|
|
839
|
+
_handleMouseLeave({
|
|
840
|
+
relatedTarget
|
|
841
|
+
}) {
|
|
842
|
+
if (!relatedTarget || !this._triggerElement.contains(relatedTarget)) {
|
|
843
|
+
if (this.isVisible()) {
|
|
844
|
+
this.hide(this._mouseLeaveHideDelay);
|
|
845
|
+
} else {
|
|
846
|
+
this._finalizeAnimation(false);
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
/**
|
|
851
|
+
* Callback for when the timeout in this.show() gets completed.
|
|
852
|
+
* This method is only needed by the mdc-tooltip, and so it is only implemented
|
|
853
|
+
* in the mdc-tooltip, not here.
|
|
854
|
+
*/
|
|
855
|
+
_onShow() {
|
|
856
|
+
this._isMultiline = this._isTooltipMultiline();
|
|
857
|
+
this._markForCheck();
|
|
858
|
+
}
|
|
859
|
+
/** Whether the tooltip text has overflown to the next line */
|
|
860
|
+
_isTooltipMultiline() {
|
|
861
|
+
const rect = this._elementRef.nativeElement.getBoundingClientRect();
|
|
862
|
+
return rect.height > MIN_HEIGHT && rect.width >= MAX_WIDTH;
|
|
863
|
+
}
|
|
864
|
+
/** Event listener dispatched when an animation on the tooltip finishes. */
|
|
865
|
+
_handleAnimationEnd({
|
|
866
|
+
animationName
|
|
867
|
+
}) {
|
|
868
|
+
if (animationName === this._showAnimation || animationName === this._hideAnimation) {
|
|
869
|
+
this._finalizeAnimation(animationName === this._showAnimation);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
/** Cancels any pending animation sequences. */
|
|
873
|
+
_cancelPendingAnimations() {
|
|
874
|
+
if (this._showTimeoutId != null) {
|
|
875
|
+
clearTimeout(this._showTimeoutId);
|
|
876
|
+
}
|
|
877
|
+
if (this._hideTimeoutId != null) {
|
|
878
|
+
clearTimeout(this._hideTimeoutId);
|
|
879
|
+
}
|
|
880
|
+
this._showTimeoutId = this._hideTimeoutId = void 0;
|
|
881
|
+
}
|
|
882
|
+
/** Handles the cleanup after an animation has finished. */
|
|
883
|
+
_finalizeAnimation(toVisible) {
|
|
884
|
+
if (toVisible) {
|
|
885
|
+
this._closeOnInteraction = true;
|
|
886
|
+
} else if (!this.isVisible()) {
|
|
887
|
+
this._onHide.next();
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
/** Toggles the visibility of the tooltip element. */
|
|
891
|
+
_toggleVisibility(isVisible) {
|
|
892
|
+
const tooltip = this._tooltip.nativeElement;
|
|
893
|
+
const showClass = this._showAnimation;
|
|
894
|
+
const hideClass = this._hideAnimation;
|
|
895
|
+
tooltip.classList.remove(isVisible ? hideClass : showClass);
|
|
896
|
+
tooltip.classList.add(isVisible ? showClass : hideClass);
|
|
897
|
+
if (this._isVisible !== isVisible) {
|
|
898
|
+
this._isVisible = isVisible;
|
|
899
|
+
this._changeDetectorRef.markForCheck();
|
|
900
|
+
}
|
|
901
|
+
if (isVisible && !this._animationsDisabled && typeof getComputedStyle === "function") {
|
|
902
|
+
const styles = getComputedStyle(tooltip);
|
|
903
|
+
if (styles.getPropertyValue("animation-duration") === "0s" || styles.getPropertyValue("animation-name") === "none") {
|
|
904
|
+
this._animationsDisabled = true;
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
if (isVisible) {
|
|
908
|
+
this._onShow();
|
|
909
|
+
}
|
|
910
|
+
if (this._animationsDisabled) {
|
|
911
|
+
tooltip.classList.add("_mat-animation-noopable");
|
|
912
|
+
this._finalizeAnimation(isVisible);
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
static \u0275fac = function TooltipComponent_Factory(__ngFactoryType__) {
|
|
916
|
+
return new (__ngFactoryType__ || _TooltipComponent)();
|
|
917
|
+
};
|
|
918
|
+
static \u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({
|
|
919
|
+
type: _TooltipComponent,
|
|
920
|
+
selectors: [["mat-tooltip-component"]],
|
|
921
|
+
viewQuery: function TooltipComponent_Query(rf, ctx) {
|
|
922
|
+
if (rf & 1) {
|
|
923
|
+
\u0275\u0275viewQuery(_c0, 7);
|
|
924
|
+
}
|
|
925
|
+
if (rf & 2) {
|
|
926
|
+
let _t;
|
|
927
|
+
\u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._tooltip = _t.first);
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
hostAttrs: ["aria-hidden", "true"],
|
|
931
|
+
hostBindings: function TooltipComponent_HostBindings(rf, ctx) {
|
|
932
|
+
if (rf & 1) {
|
|
933
|
+
\u0275\u0275listener("mouseleave", function TooltipComponent_mouseleave_HostBindingHandler($event) {
|
|
934
|
+
return ctx._handleMouseLeave($event);
|
|
935
|
+
});
|
|
936
|
+
}
|
|
937
|
+
},
|
|
938
|
+
decls: 4,
|
|
939
|
+
vars: 4,
|
|
940
|
+
consts: [["tooltip", ""], [1, "mdc-tooltip", "mat-mdc-tooltip", 3, "animationend", "ngClass"], [1, "mat-mdc-tooltip-surface", "mdc-tooltip__surface"]],
|
|
941
|
+
template: function TooltipComponent_Template(rf, ctx) {
|
|
942
|
+
if (rf & 1) {
|
|
943
|
+
const _r1 = \u0275\u0275getCurrentView();
|
|
944
|
+
\u0275\u0275elementStart(0, "div", 1, 0);
|
|
945
|
+
\u0275\u0275listener("animationend", function TooltipComponent_Template_div_animationend_0_listener($event) {
|
|
946
|
+
\u0275\u0275restoreView(_r1);
|
|
947
|
+
return \u0275\u0275resetView(ctx._handleAnimationEnd($event));
|
|
948
|
+
});
|
|
949
|
+
\u0275\u0275elementStart(2, "div", 2);
|
|
950
|
+
\u0275\u0275text(3);
|
|
951
|
+
\u0275\u0275elementEnd()();
|
|
952
|
+
}
|
|
953
|
+
if (rf & 2) {
|
|
954
|
+
\u0275\u0275classProp("mdc-tooltip--multiline", ctx._isMultiline);
|
|
955
|
+
\u0275\u0275property("ngClass", ctx.tooltipClass);
|
|
956
|
+
\u0275\u0275advance(3);
|
|
957
|
+
\u0275\u0275textInterpolate(ctx.message);
|
|
958
|
+
}
|
|
959
|
+
},
|
|
960
|
+
dependencies: [NgClass],
|
|
961
|
+
styles: ['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mat-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mat-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mat-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mat-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mat-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\n'],
|
|
962
|
+
encapsulation: 2,
|
|
963
|
+
changeDetection: 0
|
|
964
|
+
});
|
|
965
|
+
};
|
|
966
|
+
(() => {
|
|
967
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TooltipComponent, [{
|
|
968
|
+
type: Component,
|
|
969
|
+
args: [{
|
|
970
|
+
selector: "mat-tooltip-component",
|
|
971
|
+
encapsulation: ViewEncapsulation.None,
|
|
972
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
973
|
+
host: {
|
|
974
|
+
"(mouseleave)": "_handleMouseLeave($event)",
|
|
975
|
+
"aria-hidden": "true"
|
|
976
|
+
},
|
|
977
|
+
imports: [NgClass],
|
|
978
|
+
template: '<div\n #tooltip\n class="mdc-tooltip mat-mdc-tooltip"\n [ngClass]="tooltipClass"\n (animationend)="_handleAnimationEnd($event)"\n [class.mdc-tooltip--multiline]="_isMultiline">\n <div class="mat-mdc-tooltip-surface mdc-tooltip__surface">{{message}}</div>\n</div>\n',
|
|
979
|
+
styles: ['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mat-tooltip-container-color, var(--mat-sys-inverse-surface));color:var(--mat-tooltip-supporting-text-color, var(--mat-sys-inverse-on-surface));border-radius:var(--mat-tooltip-container-shape, var(--mat-sys-corner-extra-small));font-family:var(--mat-tooltip-supporting-text-font, var(--mat-sys-body-small-font));font-size:var(--mat-tooltip-supporting-text-size, var(--mat-sys-body-small-size));font-weight:var(--mat-tooltip-supporting-text-weight, var(--mat-sys-body-small-weight));line-height:var(--mat-tooltip-supporting-text-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-tooltip-supporting-text-tracking, var(--mat-sys-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel{line-height:normal}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\n']
|
|
980
|
+
}]
|
|
981
|
+
}], () => [], {
|
|
982
|
+
_tooltip: [{
|
|
983
|
+
type: ViewChild,
|
|
984
|
+
args: ["tooltip", {
|
|
985
|
+
// Use a static query here since we interact directly with
|
|
986
|
+
// the DOM which can happen before `ngAfterViewInit`.
|
|
987
|
+
static: true
|
|
988
|
+
}]
|
|
989
|
+
}]
|
|
990
|
+
});
|
|
991
|
+
})();
|
|
992
|
+
var MatTooltipModule = class _MatTooltipModule {
|
|
993
|
+
static \u0275fac = function MatTooltipModule_Factory(__ngFactoryType__) {
|
|
994
|
+
return new (__ngFactoryType__ || _MatTooltipModule)();
|
|
995
|
+
};
|
|
996
|
+
static \u0275mod = /* @__PURE__ */ \u0275\u0275defineNgModule({
|
|
997
|
+
type: _MatTooltipModule,
|
|
998
|
+
imports: [A11yModule, OverlayModule, MatCommonModule, MatTooltip, TooltipComponent],
|
|
999
|
+
exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule]
|
|
1000
|
+
});
|
|
1001
|
+
static \u0275inj = /* @__PURE__ */ \u0275\u0275defineInjector({
|
|
1002
|
+
providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER],
|
|
1003
|
+
imports: [A11yModule, OverlayModule, MatCommonModule, MatCommonModule, CdkScrollableModule]
|
|
1004
|
+
});
|
|
1005
|
+
};
|
|
1006
|
+
(() => {
|
|
1007
|
+
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(MatTooltipModule, [{
|
|
1008
|
+
type: NgModule,
|
|
1009
|
+
args: [{
|
|
1010
|
+
imports: [A11yModule, OverlayModule, MatCommonModule, MatTooltip, TooltipComponent],
|
|
1011
|
+
exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],
|
|
1012
|
+
providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER]
|
|
1013
|
+
}]
|
|
1014
|
+
}], null, null);
|
|
1015
|
+
})();
|
|
1016
|
+
|
|
1017
|
+
export {
|
|
1018
|
+
MAT_TOOLTIP_DEFAULT_OPTIONS,
|
|
1019
|
+
MatTooltip,
|
|
1020
|
+
MatTooltipModule
|
|
1021
|
+
};
|
|
1022
|
+
//# sourceMappingURL=chunk-3VR3EA35.js.map
|