ng-primitives 0.120.4 → 0.121.0
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/example-theme/index.css +9 -0
- package/fesm2022/ng-primitives-a11y.mjs +5 -5
- package/fesm2022/ng-primitives-a11y.mjs.map +1 -1
- package/fesm2022/ng-primitives-accordion.mjs +34 -51
- package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/ng-primitives-ai.mjs +39 -52
- package/fesm2022/ng-primitives-ai.mjs.map +1 -1
- package/fesm2022/ng-primitives-autofill.mjs +4 -4
- package/fesm2022/ng-primitives-autofill.mjs.map +1 -1
- package/fesm2022/ng-primitives-avatar.mjs +14 -17
- package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/ng-primitives-breadcrumbs.mjs +21 -21
- package/fesm2022/ng-primitives-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ng-primitives-button.mjs +7 -9
- package/fesm2022/ng-primitives-button.mjs.map +1 -1
- package/fesm2022/ng-primitives-checkbox.mjs +15 -30
- package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-combobox.mjs +60 -92
- package/fesm2022/ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/ng-primitives-common.mjs +4 -4
- package/fesm2022/ng-primitives-common.mjs.map +1 -1
- package/fesm2022/ng-primitives-context-menu.mjs +68 -121
- package/fesm2022/ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-picker.mjs +91 -115
- package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
- package/fesm2022/ng-primitives-dialog.mjs +35 -51
- package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/ng-primitives-file-upload.mjs +26 -53
- package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
- package/fesm2022/ng-primitives-focus-trap.mjs +5 -8
- package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -1
- package/fesm2022/ng-primitives-form-field.mjs +39 -44
- package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-input-otp.mjs +30 -43
- package/fesm2022/ng-primitives-input-otp.mjs.map +1 -1
- package/fesm2022/ng-primitives-input.mjs +6 -8
- package/fesm2022/ng-primitives-input.mjs.map +1 -1
- package/fesm2022/ng-primitives-interactions.mjs +31 -48
- package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
- package/fesm2022/ng-primitives-internal.mjs +39 -35
- package/fesm2022/ng-primitives-internal.mjs.map +1 -1
- package/fesm2022/ng-primitives-listbox.mjs +34 -48
- package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-menu.mjs +85 -151
- package/fesm2022/ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-meter.mjs +25 -36
- package/fesm2022/ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/ng-primitives-navigation-menu.mjs +60 -108
- package/fesm2022/ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/ng-primitives-number-field.mjs +35 -59
- package/fesm2022/ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/ng-primitives-pagination.mjs +270 -297
- package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/ng-primitives-popover.mjs +209 -223
- package/fesm2022/ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/ng-primitives-portal.mjs +88 -59
- package/fesm2022/ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/ng-primitives-progress.mjs +30 -41
- package/fesm2022/ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/ng-primitives-radio.mjs +20 -30
- package/fesm2022/ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/ng-primitives-resize.mjs +3 -3
- package/fesm2022/ng-primitives-resize.mjs.map +1 -1
- package/fesm2022/ng-primitives-roving-focus.mjs +20 -34
- package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/ng-primitives-search.mjs +9 -9
- package/fesm2022/ng-primitives-search.mjs.map +1 -1
- package/fesm2022/ng-primitives-select.mjs +720 -620
- package/fesm2022/ng-primitives-select.mjs.map +1 -1
- package/fesm2022/ng-primitives-separator.mjs +4 -6
- package/fesm2022/ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/ng-primitives-slider.mjs +63 -100
- package/fesm2022/ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/ng-primitives-state.mjs +3 -3
- package/fesm2022/ng-primitives-state.mjs.map +1 -1
- package/fesm2022/ng-primitives-switch.mjs +15 -21
- package/fesm2022/ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/ng-primitives-tabs.mjs +31 -41
- package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/ng-primitives-textarea.mjs +5 -7
- package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
- package/fesm2022/ng-primitives-toast.mjs +30 -23
- package/fesm2022/ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle-group.mjs +20 -36
- package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/ng-primitives-toggle.mjs +10 -19
- package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/ng-primitives-toolbar.mjs +4 -6
- package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/ng-primitives-tooltip.mjs +401 -402
- package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/ng-primitives-utils.mjs +5 -4
- package/fesm2022/ng-primitives-utils.mjs.map +1 -1
- package/package.json +56 -55
- package/schematics/ng-generate/templates/select/select.__fileSuffix@dasherize__.ts.template +48 -48
- package/{a11y/index.d.ts → types/ng-primitives-a11y.d.ts} +18 -24
- package/{accordion/index.d.ts → types/ng-primitives-accordion.d.ts} +85 -98
- package/{autofill/index.d.ts → types/ng-primitives-autofill.d.ts} +3 -10
- package/{avatar/index.d.ts → types/ng-primitives-avatar.d.ts} +7 -30
- package/{breadcrumbs/index.d.ts → types/ng-primitives-breadcrumbs.d.ts} +15 -70
- package/{button/index.d.ts → types/ng-primitives-button.d.ts} +23 -29
- package/{checkbox/index.d.ts → types/ng-primitives-checkbox.d.ts} +68 -74
- package/{combobox/index.d.ts → types/ng-primitives-combobox.d.ts} +35 -35
- package/{context-menu/index.d.ts → types/ng-primitives-context-menu.d.ts} +2 -1
- package/{date-picker/index.d.ts → types/ng-primitives-date-picker.d.ts} +2 -2
- package/{dialog/index.d.ts → types/ng-primitives-dialog.d.ts} +7 -2
- package/{file-upload/index.d.ts → types/ng-primitives-file-upload.d.ts} +5 -20
- package/{focus-trap/index.d.ts → types/ng-primitives-focus-trap.d.ts} +3 -10
- package/{form-field/index.d.ts → types/ng-primitives-form-field.d.ts} +9 -40
- package/{input/index.d.ts → types/ng-primitives-input.d.ts} +3 -10
- package/{menu/index.d.ts → types/ng-primitives-menu.d.ts} +17 -63
- package/{navigation-menu/index.d.ts → types/ng-primitives-navigation-menu.d.ts} +15 -70
- package/{number-field/index.d.ts → types/ng-primitives-number-field.d.ts} +80 -110
- package/types/ng-primitives-pagination.d.ts +502 -0
- package/{popover/index.d.ts → types/ng-primitives-popover.d.ts} +244 -57
- package/{portal/index.d.ts → types/ng-primitives-portal.d.ts} +22 -13
- package/{progress/index.d.ts → types/ng-primitives-progress.d.ts} +3 -10
- package/{roving-focus/index.d.ts → types/ng-primitives-roving-focus.d.ts} +65 -79
- package/types/ng-primitives-select.d.ts +687 -0
- package/{separator/index.d.ts → types/ng-primitives-separator.d.ts} +3 -10
- package/{slider/index.d.ts → types/ng-primitives-slider.d.ts} +76 -138
- package/{state/index.d.ts → types/ng-primitives-state.d.ts} +26 -21
- package/{switch/index.d.ts → types/ng-primitives-switch.d.ts} +50 -64
- package/{tabs/index.d.ts → types/ng-primitives-tabs.d.ts} +9 -40
- package/{textarea/index.d.ts → types/ng-primitives-textarea.d.ts} +3 -10
- package/{toast/index.d.ts → types/ng-primitives-toast.d.ts} +13 -1
- package/{toggle-group/index.d.ts → types/ng-primitives-toggle-group.d.ts} +75 -89
- package/{toggle/index.d.ts → types/ng-primitives-toggle.d.ts} +50 -56
- package/{toolbar/index.d.ts → types/ng-primitives-toolbar.d.ts} +3 -10
- package/types/ng-primitives-tooltip.d.ts +691 -0
- package/pagination/index.d.ts +0 -211
- package/select/index.d.ts +0 -396
- package/tooltip/index.d.ts +0 -384
- /package/{ai/index.d.ts → types/ng-primitives-ai.d.ts} +0 -0
- /package/{common/index.d.ts → types/ng-primitives-common.d.ts} +0 -0
- /package/{date-time-luxon/index.d.ts → types/ng-primitives-date-time-luxon.d.ts} +0 -0
- /package/{date-time/index.d.ts → types/ng-primitives-date-time.d.ts} +0 -0
- /package/{input-otp/index.d.ts → types/ng-primitives-input-otp.d.ts} +0 -0
- /package/{interactions/index.d.ts → types/ng-primitives-interactions.d.ts} +0 -0
- /package/{internal/index.d.ts → types/ng-primitives-internal.d.ts} +0 -0
- /package/{listbox/index.d.ts → types/ng-primitives-listbox.d.ts} +0 -0
- /package/{meter/index.d.ts → types/ng-primitives-meter.d.ts} +0 -0
- /package/{radio/index.d.ts → types/ng-primitives-radio.d.ts} +0 -0
- /package/{resize/index.d.ts → types/ng-primitives-resize.d.ts} +0 -0
- /package/{search/index.d.ts → types/ng-primitives-search.d.ts} +0 -0
- /package/{utils/index.d.ts → types/ng-primitives-utils.d.ts} +0 -0
- /package/{index.d.ts → types/ng-primitives.d.ts} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ngpOverlayArrow, injectOverlay, injectOverlayContext, coerceOffset, coerceFlip, coerceShift
|
|
1
|
+
import { ngpOverlayArrow, injectOverlay, provideControlContainerIsolation, injectOverlayContext, createOverlay, coerceOffset, coerceFlip, coerceShift } from 'ng-primitives/portal';
|
|
2
2
|
export { injectOverlayContext as injectTooltipContext } from 'ng-primitives/portal';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, inject, input, numberAttribute, Directive,
|
|
5
|
-
import { createPrimitive,
|
|
6
|
-
import { explicitEffect, setupOverflowListener } from 'ng-primitives/internal';
|
|
4
|
+
import { InjectionToken, inject, input, numberAttribute, Directive, signal, Component, Injector, ViewContainerRef, ElementRef, computed, booleanAttribute } from '@angular/core';
|
|
5
|
+
import { createPrimitive, controlled, attrBinding, dataBinding, styleBinding, listener } from 'ng-primitives/state';
|
|
7
6
|
import { injectDisposables, isString } from 'ng-primitives/utils';
|
|
7
|
+
import { injectElementRef, explicitEffect, setupOverflowListener } from 'ng-primitives/internal';
|
|
8
8
|
import { ngpHover } from 'ng-primitives/interactions';
|
|
9
9
|
|
|
10
10
|
const defaultTooltipConfig = {
|
|
@@ -54,11 +54,8 @@ class NgpTooltipArrow {
|
|
|
54
54
|
* Padding between the arrow and the edges of the tooltip.
|
|
55
55
|
* This prevents the arrow from overflowing the rounded corners.
|
|
56
56
|
*/
|
|
57
|
-
this.padding = input(undefined, ...(ngDevMode ?
|
|
58
|
-
|
|
59
|
-
alias: 'ngpTooltipArrowPadding',
|
|
60
|
-
transform: numberAttribute,
|
|
61
|
-
}]));
|
|
57
|
+
this.padding = input(undefined, { ...(ngDevMode ? { debugName: "padding" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipArrowPadding',
|
|
58
|
+
transform: numberAttribute });
|
|
62
59
|
this.state = ngpTooltipArrow({ padding: this.padding });
|
|
63
60
|
}
|
|
64
61
|
/**
|
|
@@ -68,10 +65,10 @@ class NgpTooltipArrow {
|
|
|
68
65
|
setPadding(value) {
|
|
69
66
|
this.state.setPadding(value);
|
|
70
67
|
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
72
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltipArrow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
69
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpTooltipArrow, isStandalone: true, selector: "[ngpTooltipArrow]", inputs: { padding: { classPropertyName: "padding", publicName: "ngpTooltipArrowPadding", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTooltipArrowState()], exportAs: ["ngpTooltipArrow"], ngImport: i0 }); }
|
|
73
70
|
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltipArrow, decorators: [{
|
|
75
72
|
type: Directive,
|
|
76
73
|
args: [{
|
|
77
74
|
selector: '[ngpTooltipArrow]',
|
|
@@ -80,69 +77,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
80
77
|
}]
|
|
81
78
|
}], propDecorators: { padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipArrowPadding", required: false }] }] } });
|
|
82
79
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
80
|
+
const [NgpTooltipStateToken, ngpTooltip, injectTooltipState, provideTooltipState] = createPrimitive('NgpTooltip', ({ id: _id = signal('') }) => {
|
|
81
|
+
const elementRef = injectElementRef();
|
|
82
|
+
const tooltipTriggerState = injectTooltipTriggerState();
|
|
83
|
+
const overlay = injectOverlay();
|
|
84
|
+
const id = controlled(_id);
|
|
85
|
+
// Seed the id with the overlay's generated unique id so the tooltip has a
|
|
86
|
+
// valid id (and the trigger a valid aria-describedby) when none is provided.
|
|
87
|
+
// `controlled` returns a linkedSignal, so this is only a transient default:
|
|
88
|
+
// if a consumer binds `id`, that source change supersedes this seed.
|
|
89
|
+
id.set(overlay.id());
|
|
90
|
+
// Setup interactions
|
|
91
|
+
ngpHover({
|
|
92
|
+
onHoverStart: () => tooltipTriggerState().onTooltipHoverStart(),
|
|
93
|
+
onHoverEnd: () => tooltipTriggerState().onTooltipHoverEnd(),
|
|
94
|
+
});
|
|
95
|
+
// Host binding
|
|
96
|
+
attrBinding(elementRef, 'role', 'tooltip');
|
|
97
|
+
attrBinding(elementRef, 'id', () => id());
|
|
98
|
+
dataBinding(elementRef, 'data-overlay', '');
|
|
99
|
+
dataBinding(elementRef, 'data-placement', () => overlay.finalPlacement()?.toString() ?? null);
|
|
100
|
+
styleBinding(elementRef, 'left.px', () => overlay.position().x ?? null);
|
|
101
|
+
styleBinding(elementRef, 'top.px', () => overlay.position().y ?? null);
|
|
102
|
+
styleBinding(elementRef, '--ngp-tooltip-trigger-width.px', () => overlay.triggerWidth());
|
|
103
|
+
styleBinding(elementRef, '--ngp-tooltip-transform-origin', () => overlay.transformOrigin());
|
|
104
|
+
styleBinding(elementRef, '--ngp-tooltip-available-width.px', () => overlay.availableWidth());
|
|
105
|
+
styleBinding(elementRef, '--ngp-tooltip-available-height.px', () => overlay.availableHeight());
|
|
106
|
+
// Effects
|
|
107
|
+
explicitEffect([id], ([id]) => overlay.id.set(id));
|
|
108
|
+
return {
|
|
109
|
+
elementRef,
|
|
110
|
+
id,
|
|
111
|
+
};
|
|
112
|
+
});
|
|
99
113
|
|
|
100
114
|
/**
|
|
101
115
|
* Apply the `ngpTooltip` directive to an element that represents the tooltip. This typically would be a `div` inside an `ng-template`.
|
|
102
116
|
*/
|
|
103
117
|
class NgpTooltip {
|
|
104
118
|
constructor() {
|
|
105
|
-
/**
|
|
106
|
-
* Access the overlay.
|
|
107
|
-
*/
|
|
108
|
-
this.overlay = injectOverlay();
|
|
109
|
-
/**
|
|
110
|
-
* Access the tooltip trigger state.
|
|
111
|
-
*/
|
|
112
|
-
this.tooltipTrigger = injectTooltipTriggerState();
|
|
113
119
|
/**
|
|
114
120
|
* The unique id of the tooltip.
|
|
115
121
|
*/
|
|
116
|
-
this.id = input(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
ngpHover({
|
|
120
|
-
onHoverStart: () => this.tooltipTrigger().onTooltipHoverStart(),
|
|
121
|
-
onHoverEnd: () => this.tooltipTrigger().onTooltipHoverEnd(),
|
|
122
|
+
this.id = input('', ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
123
|
+
this.state = ngpTooltip({
|
|
124
|
+
id: this.id,
|
|
122
125
|
});
|
|
123
126
|
}
|
|
124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
125
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
128
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpTooltip, isStandalone: true, selector: "[ngpTooltip]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideControlContainerIsolation()], exportAs: ["ngpTooltip"], ngImport: i0 }); }
|
|
126
129
|
}
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltip, decorators: [{
|
|
128
131
|
type: Directive,
|
|
129
132
|
args: [{
|
|
130
133
|
selector: '[ngpTooltip]',
|
|
131
134
|
exportAs: 'ngpTooltip',
|
|
132
|
-
|
|
133
|
-
role: 'tooltip',
|
|
134
|
-
'[id]': 'id()',
|
|
135
|
-
'[style.left.px]': 'overlay.position().x',
|
|
136
|
-
'[style.top.px]': 'overlay.position().y',
|
|
137
|
-
'[style.--ngp-tooltip-trigger-width.px]': 'overlay.triggerWidth()',
|
|
138
|
-
'[style.--ngp-tooltip-transform-origin]': 'overlay.transformOrigin()',
|
|
139
|
-
'[style.--ngp-tooltip-available-width.px]': 'overlay.availableWidth()',
|
|
140
|
-
'[style.--ngp-tooltip-available-height.px]': 'overlay.availableHeight()',
|
|
141
|
-
'[attr.data-placement]': 'overlay.finalPlacement()',
|
|
142
|
-
'data-overlay': '',
|
|
143
|
-
},
|
|
135
|
+
providers: [provideControlContainerIsolation()],
|
|
144
136
|
}]
|
|
145
|
-
}],
|
|
137
|
+
}], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }] } });
|
|
138
|
+
|
|
139
|
+
const [NgpTooltipTextContentStateToken, ngpTooltipTextContent, injectTooltipTextContentState, provideTooltipTextContentState,] = createPrimitive('NgpTooltipTextContent', ({}) => {
|
|
140
|
+
const elementRef = injectElementRef();
|
|
141
|
+
const content = injectOverlayContext();
|
|
142
|
+
// Host bindings
|
|
143
|
+
attrBinding(elementRef, 'ngpTooltip', '');
|
|
144
|
+
return { elementRef, content };
|
|
145
|
+
});
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
148
|
* Internal component for wrapping string content in tooltip portals
|
|
@@ -150,24 +150,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
150
150
|
*/
|
|
151
151
|
class NgpTooltipTextContentComponent {
|
|
152
152
|
constructor() {
|
|
153
|
-
|
|
154
|
-
* The string content to display
|
|
155
|
-
*/
|
|
156
|
-
this.content = injectOverlayContext();
|
|
153
|
+
this.state = ngpTooltipTextContent({});
|
|
157
154
|
}
|
|
158
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltipTextContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
156
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: NgpTooltipTextContentComponent, isStandalone: true, selector: "ng-component", hostDirectives: [{ directive: NgpTooltip }], ngImport: i0, template: '{{ state.content() }}', isInline: true }); }
|
|
160
157
|
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltipTextContentComponent, decorators: [{
|
|
162
159
|
type: Component,
|
|
163
160
|
args: [{
|
|
164
|
-
template: '{{ content() }}',
|
|
161
|
+
template: '{{ state.content() }}',
|
|
165
162
|
hostDirectives: [NgpTooltip],
|
|
166
|
-
host: {
|
|
167
|
-
// Used only for styling, since the host directive isn’t added to the DOM.
|
|
168
|
-
// This acts as the styling entry point.
|
|
169
|
-
ngpTooltip: '',
|
|
170
|
-
},
|
|
171
163
|
}]
|
|
172
164
|
}] });
|
|
173
165
|
|
|
@@ -222,465 +214,472 @@ function isPointInHoverBridgePolygon(point, polygon) {
|
|
|
222
214
|
return inside;
|
|
223
215
|
}
|
|
224
216
|
|
|
217
|
+
const [NgpTooltipTriggerStateToken, ngpTooltipTrigger, _injectTooltipTriggerState, provideTooltipTriggerState,] = createPrimitive('NgpTooltipTrigger', ({ tooltip: _tooltip = signal(null), disabled = signal(false), placement = signal('top'), offset = signal(0), showDelay = signal(500), hideDelay = signal(0), flip = signal(true), shift = signal(undefined), container = signal('body'), showOnOverflow = signal(false), anchor = signal(null), context = signal(undefined), useTextContent = signal(true), trackPosition = signal(false), position = signal(null), scrollBehavior = signal('reposition'), cooldown = signal(300), hoverableContent = signal(false), }) => {
|
|
218
|
+
const HOVER_BRIDGE_TIMEOUT_MS = 150;
|
|
219
|
+
const elementRef = injectElementRef();
|
|
220
|
+
const injector = inject(Injector);
|
|
221
|
+
const viewContainerRef = inject(ViewContainerRef);
|
|
222
|
+
const trigger = inject((ElementRef));
|
|
223
|
+
const tooltipTriggerState = injectTooltipTriggerState();
|
|
224
|
+
const disposables = injectDisposables();
|
|
225
|
+
const tooltip = controlled(_tooltip);
|
|
226
|
+
const tooltipId = signal(undefined, ...(ngDevMode ? [{ debugName: "tooltipId" }] : /* istanbul ignore next */ []));
|
|
227
|
+
const triggerHovered = signal(false, ...(ngDevMode ? [{ debugName: "triggerHovered" }] : /* istanbul ignore next */ []));
|
|
228
|
+
const contentHovered = signal(false, ...(ngDevMode ? [{ debugName: "contentHovered" }] : /* istanbul ignore next */ []));
|
|
229
|
+
const hoverBridgePolygon = signal(null, ...(ngDevMode ? [{ debugName: "hoverBridgePolygon" }] : /* istanbul ignore next */ []));
|
|
230
|
+
const overlay = signal(null, ...(ngDevMode ? [{ debugName: "overlay" }] : /* istanbul ignore next */ []));
|
|
231
|
+
const hasOverflow = setupOverflowListener(trigger.nativeElement, {
|
|
232
|
+
disabled: computed(() => !showOnOverflow()),
|
|
233
|
+
});
|
|
234
|
+
let removePointerMoveListener = undefined;
|
|
235
|
+
let clearHoverBridgeTimeout = undefined;
|
|
236
|
+
const open = computed(() => overlay()?.isOpen() ?? false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
237
|
+
// Host binding
|
|
238
|
+
attrBinding(elementRef, 'aria-describedby', () => overlay()?.ariaDescribedBy());
|
|
239
|
+
dataBinding(elementRef, 'data-open', () => (open() ? '' : null));
|
|
240
|
+
dataBinding(elementRef, 'data-disabled', () => (disabled() ? '' : null));
|
|
241
|
+
// Listeners
|
|
242
|
+
listener(elementRef, 'mouseenter', showFromInteraction);
|
|
243
|
+
listener(elementRef, 'focus', showFromInteraction);
|
|
244
|
+
listener(elementRef, 'mouseleave', hideFromInteraction);
|
|
245
|
+
listener(elementRef, 'blur', () => hideFromInteraction());
|
|
246
|
+
function destroy() {
|
|
247
|
+
clearHoverBridge();
|
|
248
|
+
overlay()?.destroy();
|
|
249
|
+
}
|
|
250
|
+
function show() {
|
|
251
|
+
performShow(true);
|
|
252
|
+
}
|
|
253
|
+
function hide() {
|
|
254
|
+
clearHoverBridge();
|
|
255
|
+
overlay()?.hide();
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Show the tooltip from an interaction (respects disabled state, uses cooldown).
|
|
259
|
+
* @internal
|
|
260
|
+
*/
|
|
261
|
+
function showFromInteraction() {
|
|
262
|
+
if (tooltipTriggerState().disabled()) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
triggerHovered.set(true);
|
|
266
|
+
clearHoverBridge();
|
|
267
|
+
performShow(false);
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Shared show logic.
|
|
271
|
+
* @param skipCooldown When true, skip cooldown registration so multiple tooltips can coexist.
|
|
272
|
+
*/
|
|
273
|
+
function performShow(skipCooldown) {
|
|
274
|
+
// If already open, cancel any pending close
|
|
275
|
+
if (open()) {
|
|
276
|
+
overlay()?.cancelPendingClose();
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
// if we should only show when there is overflow, check if the trigger has overflow
|
|
280
|
+
if (tooltipTriggerState().showOnOverflow() && !hasOverflow()) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
// Create the overlay if it doesn't exist yet
|
|
284
|
+
if (!overlay()) {
|
|
285
|
+
createOverlayInstance();
|
|
286
|
+
}
|
|
287
|
+
overlay()?.show({ skipCooldown });
|
|
288
|
+
}
|
|
289
|
+
function setTooltipId(id) {
|
|
290
|
+
tooltipId.set(id);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Hide the tooltip from an interaction (respects disabled state).
|
|
294
|
+
* @internal
|
|
295
|
+
*/
|
|
296
|
+
function hideFromInteraction(event) {
|
|
297
|
+
if (tooltipTriggerState().disabled()) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
triggerHovered.set(false);
|
|
301
|
+
// Blur should close regardless of hover bridge or tooltip hover state.
|
|
302
|
+
if (!event) {
|
|
303
|
+
contentHovered.set(false);
|
|
304
|
+
clearHoverBridge();
|
|
305
|
+
hide();
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (!tooltipTriggerState().hoverableContent()) {
|
|
309
|
+
hide();
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const tooltipElement = overlay()?.getElements()[0];
|
|
313
|
+
if (!tooltipElement) {
|
|
314
|
+
hide();
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
const polygon = createTooltipHoverBridgePolygon({
|
|
318
|
+
triggerRect: trigger.nativeElement.getBoundingClientRect(),
|
|
319
|
+
tooltipRect: tooltipElement.getBoundingClientRect(),
|
|
320
|
+
exitPoint: { x: event.clientX, y: event.clientY },
|
|
321
|
+
});
|
|
322
|
+
if (!polygon) {
|
|
323
|
+
hide();
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
hoverBridgePolygon.set(polygon);
|
|
327
|
+
overlay()?.cancelPendingClose();
|
|
328
|
+
registerPointerMoveListener();
|
|
329
|
+
scheduleHoverBridgeCloseFallback();
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Called by tooltip content when pointer enters the tooltip.
|
|
333
|
+
* @internal
|
|
334
|
+
*/
|
|
335
|
+
function onTooltipHoverStart() {
|
|
336
|
+
if (tooltipTriggerState().disabled() || !tooltipTriggerState().hoverableContent()) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
contentHovered.set(true);
|
|
340
|
+
clearHoverBridge();
|
|
341
|
+
overlay()?.cancelPendingClose();
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Called by tooltip content when pointer leaves the tooltip.
|
|
345
|
+
* @internal
|
|
346
|
+
*/
|
|
347
|
+
function onTooltipHoverEnd() {
|
|
348
|
+
if (tooltipTriggerState().disabled() || !tooltipTriggerState().hoverableContent()) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
contentHovered.set(false);
|
|
352
|
+
if (!triggerHovered()) {
|
|
353
|
+
hide();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Create the overlay that will contain the tooltip
|
|
358
|
+
*/
|
|
359
|
+
function createOverlayInstance() {
|
|
360
|
+
// Determine the content and context based on useTextContent setting
|
|
361
|
+
const shouldUseTextContent = tooltipTriggerState().useTextContent();
|
|
362
|
+
let content = tooltip();
|
|
363
|
+
let context = tooltipTriggerState().context;
|
|
364
|
+
if (!content) {
|
|
365
|
+
if (!shouldUseTextContent) {
|
|
366
|
+
if (ngDevMode) {
|
|
367
|
+
console.error('[ngpTooltipTrigger]: Tooltip must be a string, TemplateRef, or ComponentType. Alternatively, set useTextContent to true if none is provided.');
|
|
368
|
+
}
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
const textContent = trigger.nativeElement.textContent?.trim() || '';
|
|
372
|
+
if (ngDevMode && !textContent) {
|
|
373
|
+
console.warn('[ngpTooltipTrigger]: useTextContent is enabled but trigger element has no text content');
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
content = NgpTooltipTextContentComponent;
|
|
377
|
+
context = signal(textContent);
|
|
378
|
+
}
|
|
379
|
+
else if (isString(content)) {
|
|
380
|
+
context = signal(content);
|
|
381
|
+
content = NgpTooltipTextContentComponent;
|
|
382
|
+
}
|
|
383
|
+
// Create config for the overlay
|
|
384
|
+
const config = {
|
|
385
|
+
content,
|
|
386
|
+
triggerElement: trigger.nativeElement,
|
|
387
|
+
anchorElement: anchor(),
|
|
388
|
+
injector: injector,
|
|
389
|
+
context,
|
|
390
|
+
container: container(),
|
|
391
|
+
placement: placement,
|
|
392
|
+
offset: offset(),
|
|
393
|
+
flip: flip(),
|
|
394
|
+
shift: shift(),
|
|
395
|
+
showDelay: showDelay(),
|
|
396
|
+
hideDelay: hideDelay(),
|
|
397
|
+
closeOnEscape: true,
|
|
398
|
+
closeOnOutsideClick: true,
|
|
399
|
+
viewContainerRef: viewContainerRef,
|
|
400
|
+
trackPosition: trackPosition(),
|
|
401
|
+
position: position,
|
|
402
|
+
scrollBehaviour: scrollBehavior(),
|
|
403
|
+
overlayType: 'tooltip',
|
|
404
|
+
cooldown: cooldown(),
|
|
405
|
+
};
|
|
406
|
+
// Create the overlay instance
|
|
407
|
+
overlay.set(createOverlay(config));
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Register document-level pointer tracking while crossing trigger -> tooltip.
|
|
411
|
+
* @internal
|
|
412
|
+
*/
|
|
413
|
+
function registerPointerMoveListener() {
|
|
414
|
+
if (removePointerMoveListener) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
const cleanup = disposables.addEventListener(document, 'pointermove', ((event) => {
|
|
418
|
+
if (triggerHovered() || contentHovered() || !hoverBridgePolygon()) {
|
|
419
|
+
clearHoverBridge();
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
const inBridge = isPointInHoverBridgePolygon({ x: event.clientX, y: event.clientY }, hoverBridgePolygon());
|
|
423
|
+
if (!inBridge) {
|
|
424
|
+
clearHoverBridge();
|
|
425
|
+
hide();
|
|
426
|
+
}
|
|
427
|
+
}), true);
|
|
428
|
+
removePointerMoveListener = () => {
|
|
429
|
+
cleanup();
|
|
430
|
+
removePointerMoveListener = undefined;
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Clear hover bridge state and global listeners.
|
|
435
|
+
* @internal
|
|
436
|
+
*/
|
|
437
|
+
function clearHoverBridge() {
|
|
438
|
+
hoverBridgePolygon.set(null);
|
|
439
|
+
clearHoverBridgeTimeout?.();
|
|
440
|
+
clearHoverBridgeTimeout = undefined;
|
|
441
|
+
removePointerMoveListener?.();
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Close if pointer leaves trigger and does not move into tooltip soon enough.
|
|
445
|
+
* @internal
|
|
446
|
+
*/
|
|
447
|
+
function scheduleHoverBridgeCloseFallback() {
|
|
448
|
+
clearHoverBridgeTimeout?.();
|
|
449
|
+
clearHoverBridgeTimeout = disposables.setTimeout(() => {
|
|
450
|
+
clearHoverBridgeTimeout = undefined;
|
|
451
|
+
if (!triggerHovered() && !contentHovered() && hoverBridgePolygon()) {
|
|
452
|
+
clearHoverBridge();
|
|
453
|
+
hide();
|
|
454
|
+
}
|
|
455
|
+
}, HOVER_BRIDGE_TIMEOUT_MS);
|
|
456
|
+
}
|
|
457
|
+
const state = {
|
|
458
|
+
tooltip,
|
|
459
|
+
disabled,
|
|
460
|
+
placement,
|
|
461
|
+
offset,
|
|
462
|
+
showDelay,
|
|
463
|
+
hideDelay,
|
|
464
|
+
flip,
|
|
465
|
+
shift,
|
|
466
|
+
container,
|
|
467
|
+
showOnOverflow,
|
|
468
|
+
anchor,
|
|
469
|
+
context,
|
|
470
|
+
useTextContent,
|
|
471
|
+
trackPosition,
|
|
472
|
+
position,
|
|
473
|
+
scrollBehavior,
|
|
474
|
+
cooldown,
|
|
475
|
+
hoverableContent,
|
|
476
|
+
overlay,
|
|
477
|
+
tooltipId,
|
|
478
|
+
open,
|
|
479
|
+
hasOverflow,
|
|
480
|
+
contentHovered,
|
|
481
|
+
hoverBridgePolygon,
|
|
482
|
+
show,
|
|
483
|
+
hide,
|
|
484
|
+
setTooltipId,
|
|
485
|
+
onTooltipHoverStart,
|
|
486
|
+
onTooltipHoverEnd,
|
|
487
|
+
destroy,
|
|
488
|
+
};
|
|
489
|
+
return state;
|
|
490
|
+
});
|
|
491
|
+
function injectTooltipTriggerState(options) {
|
|
492
|
+
return _injectTooltipTriggerState(options);
|
|
493
|
+
}
|
|
494
|
+
|
|
225
495
|
/**
|
|
226
496
|
* Apply the `ngpTooltipTrigger` directive to an element that triggers the tooltip to show.
|
|
227
497
|
*/
|
|
228
498
|
class NgpTooltipTrigger {
|
|
229
|
-
/**
|
|
230
|
-
* Maximum time allowed to cross from trigger to tooltip without pointer movement.
|
|
231
|
-
*/
|
|
232
|
-
static { this.HOVER_BRIDGE_TIMEOUT_MS = 150; }
|
|
233
499
|
constructor() {
|
|
234
|
-
/**
|
|
235
|
-
* Access the trigger element
|
|
236
|
-
*/
|
|
237
|
-
this.trigger = inject((ElementRef));
|
|
238
|
-
/**
|
|
239
|
-
* Access the injector.
|
|
240
|
-
*/
|
|
241
|
-
this.injector = inject(Injector);
|
|
242
|
-
/**
|
|
243
|
-
* Access the view container reference.
|
|
244
|
-
*/
|
|
245
|
-
this.viewContainerRef = inject(ViewContainerRef);
|
|
246
500
|
/**
|
|
247
501
|
* Access the global tooltip configuration.
|
|
248
502
|
*/
|
|
249
503
|
this.config = injectTooltipConfig();
|
|
250
|
-
/**
|
|
251
|
-
* Disposables for managing event listeners and timers with automatic teardown.
|
|
252
|
-
*/
|
|
253
|
-
this.disposables = injectDisposables();
|
|
254
504
|
/**
|
|
255
505
|
* Access the tooltip template ref.
|
|
256
506
|
*/
|
|
257
|
-
this.tooltip = input(null, ...(ngDevMode ?
|
|
258
|
-
|
|
259
|
-
alias: 'ngpTooltipTrigger',
|
|
260
|
-
transform: (value) => (value && !isString(value) ? value : null),
|
|
261
|
-
}]));
|
|
507
|
+
this.tooltip = input(null, { ...(ngDevMode ? { debugName: "tooltip" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTrigger',
|
|
508
|
+
transform: (value) => (value && !isString(value) ? value : null) });
|
|
262
509
|
/**
|
|
263
510
|
* Define if the trigger should be disabled. This will prevent the tooltip from being shown or hidden from interactions.
|
|
264
511
|
* @default false
|
|
265
512
|
*/
|
|
266
|
-
this.disabled = input(false, ...(ngDevMode ?
|
|
267
|
-
|
|
268
|
-
alias: 'ngpTooltipTriggerDisabled',
|
|
269
|
-
transform: booleanAttribute,
|
|
270
|
-
}]));
|
|
513
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerDisabled',
|
|
514
|
+
transform: booleanAttribute });
|
|
271
515
|
/**
|
|
272
516
|
* Define the placement of the tooltip relative to the trigger.
|
|
273
517
|
* @default 'top'
|
|
274
518
|
*/
|
|
275
|
-
this.placement = input(this.config.placement, ...(ngDevMode ?
|
|
276
|
-
alias: 'ngpTooltipTriggerPlacement',
|
|
277
|
-
}]));
|
|
519
|
+
this.placement = input(this.config.placement, { ...(ngDevMode ? { debugName: "placement" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerPlacement' });
|
|
278
520
|
/**
|
|
279
521
|
* Define the offset of the tooltip relative to the trigger.
|
|
280
522
|
* Can be a number (applies to mainAxis) or an object with mainAxis, crossAxis, and alignmentAxis.
|
|
281
523
|
* @default 0
|
|
282
524
|
*/
|
|
283
|
-
this.offset = input(this.config.offset, ...(ngDevMode ?
|
|
284
|
-
|
|
285
|
-
alias: 'ngpTooltipTriggerOffset',
|
|
286
|
-
transform: coerceOffset,
|
|
287
|
-
}]));
|
|
525
|
+
this.offset = input(this.config.offset, { ...(ngDevMode ? { debugName: "offset" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerOffset',
|
|
526
|
+
transform: coerceOffset });
|
|
288
527
|
/**
|
|
289
528
|
* Define the delay before the tooltip is displayed.
|
|
290
529
|
* @default 500
|
|
291
530
|
*/
|
|
292
|
-
this.showDelay = input(this.config.showDelay, ...(ngDevMode ?
|
|
293
|
-
|
|
294
|
-
alias: 'ngpTooltipTriggerShowDelay',
|
|
295
|
-
transform: numberAttribute,
|
|
296
|
-
}]));
|
|
531
|
+
this.showDelay = input(this.config.showDelay, { ...(ngDevMode ? { debugName: "showDelay" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerShowDelay',
|
|
532
|
+
transform: numberAttribute });
|
|
297
533
|
/**
|
|
298
534
|
* Define the delay before the tooltip is hidden.
|
|
299
535
|
* @default 0
|
|
300
536
|
*/
|
|
301
|
-
this.hideDelay = input(this.config.hideDelay, ...(ngDevMode ?
|
|
302
|
-
|
|
303
|
-
alias: 'ngpTooltipTriggerHideDelay',
|
|
304
|
-
transform: numberAttribute,
|
|
305
|
-
}]));
|
|
537
|
+
this.hideDelay = input(this.config.hideDelay, { ...(ngDevMode ? { debugName: "hideDelay" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerHideDelay',
|
|
538
|
+
transform: numberAttribute });
|
|
306
539
|
/**
|
|
307
540
|
* Define whether the tooltip should flip when there is not enough space for the tooltip.
|
|
308
541
|
* Can be a boolean to enable/disable, or an object with padding and fallbackPlacements options.
|
|
309
542
|
* @default true
|
|
310
543
|
*/
|
|
311
|
-
this.flip = input(this.config.flip, ...(ngDevMode ?
|
|
312
|
-
|
|
313
|
-
alias: 'ngpTooltipTriggerFlip',
|
|
314
|
-
transform: coerceFlip,
|
|
315
|
-
}]));
|
|
544
|
+
this.flip = input(this.config.flip, { ...(ngDevMode ? { debugName: "flip" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerFlip',
|
|
545
|
+
transform: coerceFlip });
|
|
316
546
|
/**
|
|
317
547
|
* Configure shift behavior to keep the tooltip in view.
|
|
318
548
|
* Can be a boolean to enable/disable, or an object with padding and limiter options.
|
|
319
549
|
* @default undefined (enabled by default in overlay)
|
|
320
550
|
*/
|
|
321
|
-
this.shift = input(this.config.shift, ...(ngDevMode ?
|
|
322
|
-
|
|
323
|
-
alias: 'ngpTooltipTriggerShift',
|
|
324
|
-
transform: coerceShift,
|
|
325
|
-
}]));
|
|
551
|
+
this.shift = input(this.config.shift, { ...(ngDevMode ? { debugName: "shift" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerShift',
|
|
552
|
+
transform: coerceShift });
|
|
326
553
|
/**
|
|
327
554
|
* Define the container in which the tooltip should be attached.
|
|
328
555
|
* @default document.body
|
|
329
556
|
*/
|
|
330
|
-
this.container = input(this.config.container, ...(ngDevMode ?
|
|
331
|
-
alias: 'ngpTooltipTriggerContainer',
|
|
332
|
-
}]));
|
|
557
|
+
this.container = input(this.config.container, { ...(ngDevMode ? { debugName: "container" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerContainer' });
|
|
333
558
|
/**
|
|
334
559
|
* Define whether the tooltip should only show when the trigger element overflows.
|
|
335
560
|
* @default false
|
|
336
561
|
*/
|
|
337
|
-
this.showOnOverflow = input(this.config.showOnOverflow, ...(ngDevMode ?
|
|
338
|
-
|
|
339
|
-
alias: 'ngpTooltipTriggerShowOnOverflow',
|
|
340
|
-
transform: booleanAttribute,
|
|
341
|
-
}]));
|
|
562
|
+
this.showOnOverflow = input(this.config.showOnOverflow, { ...(ngDevMode ? { debugName: "showOnOverflow" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerShowOnOverflow',
|
|
563
|
+
transform: booleanAttribute });
|
|
342
564
|
/**
|
|
343
565
|
* Define an anchor element for positioning the tooltip.
|
|
344
566
|
* If provided, the tooltip will be positioned relative to this element instead of the trigger.
|
|
345
567
|
*/
|
|
346
|
-
this.anchor = input(null, ...(ngDevMode ?
|
|
568
|
+
this.anchor = input(null, { ...(ngDevMode ? { debugName: "anchor" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerAnchor' });
|
|
347
569
|
/**
|
|
348
570
|
* Provide context to the tooltip. This can be used to pass data to the tooltip content.
|
|
349
571
|
*/
|
|
350
|
-
this.context = input(undefined, ...(ngDevMode ?
|
|
351
|
-
alias: 'ngpTooltipTriggerContext',
|
|
352
|
-
}]));
|
|
572
|
+
this.context = input(undefined, { ...(ngDevMode ? { debugName: "context" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerContext' });
|
|
353
573
|
/**
|
|
354
574
|
* Define whether to use the text content of the trigger element as the tooltip content.
|
|
355
575
|
* When enabled, the tooltip will display the text content of the trigger element.
|
|
356
576
|
* @default true
|
|
357
577
|
*/
|
|
358
|
-
this.useTextContent = input(this.config.useTextContent, ...(ngDevMode ?
|
|
359
|
-
|
|
360
|
-
alias: 'ngpTooltipTriggerUseTextContent',
|
|
361
|
-
transform: booleanAttribute,
|
|
362
|
-
}]));
|
|
578
|
+
this.useTextContent = input(this.config.useTextContent, { ...(ngDevMode ? { debugName: "useTextContent" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerUseTextContent',
|
|
579
|
+
transform: booleanAttribute });
|
|
363
580
|
/**
|
|
364
581
|
* Define whether to track the trigger element position on every animation frame.
|
|
365
582
|
* Useful for moving elements like slider thumbs.
|
|
366
583
|
* @default false
|
|
367
584
|
*/
|
|
368
|
-
this.trackPosition = input(this.config.trackPosition, ...(ngDevMode ?
|
|
369
|
-
|
|
370
|
-
alias: 'ngpTooltipTriggerTrackPosition',
|
|
371
|
-
transform: booleanAttribute,
|
|
372
|
-
}]));
|
|
585
|
+
this.trackPosition = input(this.config.trackPosition, { ...(ngDevMode ? { debugName: "trackPosition" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerTrackPosition',
|
|
586
|
+
transform: booleanAttribute });
|
|
373
587
|
/**
|
|
374
588
|
* Programmatic position for the tooltip. When provided, the tooltip
|
|
375
589
|
* will be positioned at these coordinates instead of the trigger element.
|
|
376
590
|
* Use with trackPosition="true" for smooth cursor following.
|
|
377
591
|
*/
|
|
378
|
-
this.position = input(null, ...(ngDevMode ?
|
|
379
|
-
alias: 'ngpTooltipTriggerPosition',
|
|
380
|
-
}]));
|
|
592
|
+
this.position = input(null, { ...(ngDevMode ? { debugName: "position" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerPosition' });
|
|
381
593
|
/**
|
|
382
594
|
* Defines how the tooltip behaves when the window is scrolled.
|
|
383
595
|
* @default 'reposition'
|
|
384
596
|
*/
|
|
385
|
-
this.scrollBehavior = input(this.config.scrollBehavior, ...(ngDevMode ?
|
|
386
|
-
alias: 'ngpTooltipTriggerScrollBehavior',
|
|
387
|
-
}]));
|
|
597
|
+
this.scrollBehavior = input(this.config.scrollBehavior, { ...(ngDevMode ? { debugName: "scrollBehavior" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerScrollBehavior' });
|
|
388
598
|
/**
|
|
389
599
|
* Define the cooldown duration in milliseconds.
|
|
390
600
|
* When moving from one tooltip to another within this duration,
|
|
391
601
|
* the showDelay is skipped for the new tooltip.
|
|
392
602
|
* @default 300
|
|
393
603
|
*/
|
|
394
|
-
this.cooldown = input(this.config.cooldown, ...(ngDevMode ?
|
|
395
|
-
|
|
396
|
-
alias: 'ngpTooltipTriggerCooldown',
|
|
397
|
-
transform: numberAttribute,
|
|
398
|
-
}]));
|
|
604
|
+
this.cooldown = input(this.config.cooldown, { ...(ngDevMode ? { debugName: "cooldown" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerCooldown',
|
|
605
|
+
transform: numberAttribute });
|
|
399
606
|
/**
|
|
400
607
|
* Whether hovering tooltip content keeps the tooltip open.
|
|
401
608
|
* @default false
|
|
402
609
|
*/
|
|
403
|
-
this.hoverableContent = input(this.config.hoverableContent, ...(ngDevMode ?
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
*/
|
|
425
|
-
this.triggerHovered = false;
|
|
426
|
-
/**
|
|
427
|
-
* Tracks whether pointer is currently over tooltip content.
|
|
428
|
-
*/
|
|
429
|
-
this.contentHovered = false;
|
|
430
|
-
/**
|
|
431
|
-
* Current pointer grace polygon used while crossing trigger -> tooltip.
|
|
432
|
-
*/
|
|
433
|
-
this.hoverBridgePolygon = null;
|
|
434
|
-
/**
|
|
435
|
-
* Store the state of the tooltip.
|
|
436
|
-
* @internal
|
|
437
|
-
*/
|
|
438
|
-
this.state = tooltipTriggerState(this);
|
|
439
|
-
this.hasOverflow = setupOverflowListener(this.trigger.nativeElement, {
|
|
440
|
-
disabled: computed(() => !this.state.showOnOverflow()),
|
|
610
|
+
this.hoverableContent = input(this.config.hoverableContent, { ...(ngDevMode ? { debugName: "hoverableContent" } : /* istanbul ignore next */ {}), alias: 'ngpTooltipTriggerHoverableContent',
|
|
611
|
+
transform: booleanAttribute });
|
|
612
|
+
this.state = ngpTooltipTrigger({
|
|
613
|
+
tooltip: this.tooltip,
|
|
614
|
+
disabled: this.disabled,
|
|
615
|
+
placement: this.placement,
|
|
616
|
+
offset: this.offset,
|
|
617
|
+
showDelay: this.showDelay,
|
|
618
|
+
hideDelay: this.hideDelay,
|
|
619
|
+
flip: this.flip,
|
|
620
|
+
shift: this.shift,
|
|
621
|
+
container: this.container,
|
|
622
|
+
showOnOverflow: this.showOnOverflow,
|
|
623
|
+
anchor: this.anchor,
|
|
624
|
+
context: this.context,
|
|
625
|
+
useTextContent: this.useTextContent,
|
|
626
|
+
trackPosition: this.trackPosition,
|
|
627
|
+
position: this.position,
|
|
628
|
+
scrollBehavior: this.scrollBehavior,
|
|
629
|
+
cooldown: this.cooldown,
|
|
630
|
+
hoverableContent: this.hoverableContent,
|
|
441
631
|
});
|
|
442
632
|
}
|
|
443
633
|
ngOnDestroy() {
|
|
444
|
-
this.
|
|
445
|
-
this.overlay()?.destroy();
|
|
634
|
+
return this.state.destroy();
|
|
446
635
|
}
|
|
447
636
|
/**
|
|
448
637
|
* Show the tooltip programmatically (skips cooldown so multiple tooltips can coexist).
|
|
449
638
|
*/
|
|
450
639
|
show() {
|
|
451
|
-
this.
|
|
640
|
+
return this.state.show();
|
|
452
641
|
}
|
|
453
642
|
/**
|
|
454
643
|
* Hide the tooltip.
|
|
455
644
|
*/
|
|
456
645
|
hide() {
|
|
457
|
-
this.
|
|
458
|
-
this.overlay()?.hide();
|
|
459
|
-
}
|
|
460
|
-
/**
|
|
461
|
-
* Show the tooltip from an interaction (respects disabled state, uses cooldown).
|
|
462
|
-
* @internal
|
|
463
|
-
*/
|
|
464
|
-
showFromInteraction() {
|
|
465
|
-
if (this.state.disabled()) {
|
|
466
|
-
return;
|
|
467
|
-
}
|
|
468
|
-
this.triggerHovered = true;
|
|
469
|
-
this.clearHoverBridge();
|
|
470
|
-
this.performShow(false);
|
|
471
|
-
}
|
|
472
|
-
/**
|
|
473
|
-
* Shared show logic.
|
|
474
|
-
* @param skipCooldown When true, skip cooldown registration so multiple tooltips can coexist.
|
|
475
|
-
*/
|
|
476
|
-
performShow(skipCooldown) {
|
|
477
|
-
// If already open, cancel any pending close
|
|
478
|
-
if (this.open()) {
|
|
479
|
-
this.overlay()?.cancelPendingClose();
|
|
480
|
-
return;
|
|
481
|
-
}
|
|
482
|
-
// if we should only show when there is overflow, check if the trigger has overflow
|
|
483
|
-
if (this.state.showOnOverflow() && !this.hasOverflow()) {
|
|
484
|
-
return;
|
|
485
|
-
}
|
|
486
|
-
// Create the overlay if it doesn't exist yet
|
|
487
|
-
if (!this.overlay()) {
|
|
488
|
-
this.createOverlay();
|
|
489
|
-
}
|
|
490
|
-
this.overlay()?.show({ skipCooldown });
|
|
491
|
-
}
|
|
492
|
-
/**
|
|
493
|
-
* Hide the tooltip from an interaction (respects disabled state).
|
|
494
|
-
* @internal
|
|
495
|
-
*/
|
|
496
|
-
hideFromInteraction(event) {
|
|
497
|
-
if (this.state.disabled()) {
|
|
498
|
-
return;
|
|
499
|
-
}
|
|
500
|
-
this.triggerHovered = false;
|
|
501
|
-
// Blur should close regardless of hover bridge or tooltip hover state.
|
|
502
|
-
if (!event) {
|
|
503
|
-
this.contentHovered = false;
|
|
504
|
-
this.clearHoverBridge();
|
|
505
|
-
this.hide();
|
|
506
|
-
return;
|
|
507
|
-
}
|
|
508
|
-
if (!this.state.hoverableContent()) {
|
|
509
|
-
this.hide();
|
|
510
|
-
return;
|
|
511
|
-
}
|
|
512
|
-
const tooltipElement = this.overlay()?.getElements()[0];
|
|
513
|
-
if (!tooltipElement) {
|
|
514
|
-
this.hide();
|
|
515
|
-
return;
|
|
516
|
-
}
|
|
517
|
-
const polygon = createTooltipHoverBridgePolygon({
|
|
518
|
-
triggerRect: this.trigger.nativeElement.getBoundingClientRect(),
|
|
519
|
-
tooltipRect: tooltipElement.getBoundingClientRect(),
|
|
520
|
-
exitPoint: { x: event.clientX, y: event.clientY },
|
|
521
|
-
});
|
|
522
|
-
if (!polygon) {
|
|
523
|
-
this.hide();
|
|
524
|
-
return;
|
|
525
|
-
}
|
|
526
|
-
this.hoverBridgePolygon = polygon;
|
|
527
|
-
this.overlay()?.cancelPendingClose();
|
|
528
|
-
this.registerPointerMoveListener();
|
|
529
|
-
this.scheduleHoverBridgeCloseFallback();
|
|
646
|
+
return this.state.hide();
|
|
530
647
|
}
|
|
531
648
|
/**
|
|
532
649
|
* Called by tooltip content when pointer enters the tooltip.
|
|
533
650
|
* @internal
|
|
534
651
|
*/
|
|
535
652
|
onTooltipHoverStart() {
|
|
536
|
-
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
this.contentHovered = true;
|
|
540
|
-
this.clearHoverBridge();
|
|
541
|
-
this.overlay()?.cancelPendingClose();
|
|
653
|
+
return this.state.onTooltipHoverStart();
|
|
542
654
|
}
|
|
543
655
|
/**
|
|
544
656
|
* Called by tooltip content when pointer leaves the tooltip.
|
|
545
657
|
* @internal
|
|
546
658
|
*/
|
|
547
659
|
onTooltipHoverEnd() {
|
|
548
|
-
|
|
549
|
-
return;
|
|
550
|
-
}
|
|
551
|
-
this.contentHovered = false;
|
|
552
|
-
if (!this.triggerHovered) {
|
|
553
|
-
this.hide();
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
/**
|
|
557
|
-
* Create the overlay that will contain the tooltip
|
|
558
|
-
*/
|
|
559
|
-
createOverlay() {
|
|
560
|
-
// Determine the content and context based on useTextContent setting
|
|
561
|
-
const shouldUseTextContent = this.state.useTextContent();
|
|
562
|
-
let content = this.state.tooltip();
|
|
563
|
-
let context = this.state.context;
|
|
564
|
-
if (!content) {
|
|
565
|
-
if (!shouldUseTextContent) {
|
|
566
|
-
if (ngDevMode) {
|
|
567
|
-
console.error('[ngpTooltipTrigger]: Tooltip must be a string, TemplateRef, or ComponentType. Alternatively, set useTextContent to true if none is provided.');
|
|
568
|
-
}
|
|
569
|
-
return;
|
|
570
|
-
}
|
|
571
|
-
const textContent = this.trigger.nativeElement.textContent?.trim() || '';
|
|
572
|
-
if (ngDevMode && !textContent) {
|
|
573
|
-
console.warn('[ngpTooltipTrigger]: useTextContent is enabled but trigger element has no text content');
|
|
574
|
-
return;
|
|
575
|
-
}
|
|
576
|
-
content = NgpTooltipTextContentComponent;
|
|
577
|
-
context = signal(textContent);
|
|
578
|
-
}
|
|
579
|
-
else if (isString(content)) {
|
|
580
|
-
context = signal(content);
|
|
581
|
-
content = NgpTooltipTextContentComponent;
|
|
582
|
-
}
|
|
583
|
-
// Create config for the overlay
|
|
584
|
-
const config = {
|
|
585
|
-
content,
|
|
586
|
-
triggerElement: this.trigger.nativeElement,
|
|
587
|
-
anchorElement: this.state.anchor(),
|
|
588
|
-
injector: this.injector,
|
|
589
|
-
context,
|
|
590
|
-
container: this.state.container(),
|
|
591
|
-
placement: this.state.placement,
|
|
592
|
-
offset: this.state.offset(),
|
|
593
|
-
flip: this.state.flip(),
|
|
594
|
-
shift: this.state.shift(),
|
|
595
|
-
showDelay: this.state.showDelay(),
|
|
596
|
-
hideDelay: this.state.hideDelay(),
|
|
597
|
-
closeOnEscape: true,
|
|
598
|
-
closeOnOutsideClick: true,
|
|
599
|
-
viewContainerRef: this.viewContainerRef,
|
|
600
|
-
trackPosition: this.state.trackPosition(),
|
|
601
|
-
position: this.state.position,
|
|
602
|
-
scrollBehaviour: this.state.scrollBehavior(),
|
|
603
|
-
overlayType: 'tooltip',
|
|
604
|
-
cooldown: this.state.cooldown(),
|
|
605
|
-
};
|
|
606
|
-
// Create the overlay instance
|
|
607
|
-
this.overlay.set(createOverlay(config));
|
|
660
|
+
return this.state.onTooltipHoverEnd();
|
|
608
661
|
}
|
|
609
662
|
/**
|
|
610
663
|
* Set the tooltip id.
|
|
611
664
|
*/
|
|
612
665
|
setTooltipId(id) {
|
|
613
|
-
this.
|
|
614
|
-
}
|
|
615
|
-
/**
|
|
616
|
-
* Register document-level pointer tracking while crossing trigger -> tooltip.
|
|
617
|
-
*/
|
|
618
|
-
registerPointerMoveListener() {
|
|
619
|
-
if (this.removePointerMoveListener) {
|
|
620
|
-
return;
|
|
621
|
-
}
|
|
622
|
-
const cleanup = this.disposables.addEventListener(document, 'pointermove', ((event) => {
|
|
623
|
-
if (this.triggerHovered || this.contentHovered || !this.hoverBridgePolygon) {
|
|
624
|
-
this.clearHoverBridge();
|
|
625
|
-
return;
|
|
626
|
-
}
|
|
627
|
-
const inBridge = isPointInHoverBridgePolygon({ x: event.clientX, y: event.clientY }, this.hoverBridgePolygon);
|
|
628
|
-
if (!inBridge) {
|
|
629
|
-
this.clearHoverBridge();
|
|
630
|
-
this.hide();
|
|
631
|
-
}
|
|
632
|
-
}), true);
|
|
633
|
-
this.removePointerMoveListener = () => {
|
|
634
|
-
cleanup();
|
|
635
|
-
this.removePointerMoveListener = undefined;
|
|
636
|
-
};
|
|
637
|
-
}
|
|
638
|
-
/**
|
|
639
|
-
* Clear hover bridge state and global listeners.
|
|
640
|
-
*/
|
|
641
|
-
clearHoverBridge() {
|
|
642
|
-
this.hoverBridgePolygon = null;
|
|
643
|
-
this.clearHoverBridgeTimeout?.();
|
|
644
|
-
this.clearHoverBridgeTimeout = undefined;
|
|
645
|
-
this.removePointerMoveListener?.();
|
|
646
|
-
}
|
|
647
|
-
/**
|
|
648
|
-
* Close if pointer leaves trigger and does not move into tooltip soon enough.
|
|
649
|
-
*/
|
|
650
|
-
scheduleHoverBridgeCloseFallback() {
|
|
651
|
-
this.clearHoverBridgeTimeout?.();
|
|
652
|
-
this.clearHoverBridgeTimeout = this.disposables.setTimeout(() => {
|
|
653
|
-
this.clearHoverBridgeTimeout = undefined;
|
|
654
|
-
if (!this.triggerHovered && !this.contentHovered && this.hoverBridgePolygon) {
|
|
655
|
-
this.clearHoverBridge();
|
|
656
|
-
this.hide();
|
|
657
|
-
}
|
|
658
|
-
}, NgpTooltipTrigger.HOVER_BRIDGE_TIMEOUT_MS);
|
|
666
|
+
return this.state.setTooltipId(id);
|
|
659
667
|
}
|
|
660
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
661
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
668
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltipTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
669
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: NgpTooltipTrigger, isStandalone: true, selector: "[ngpTooltipTrigger]", inputs: { tooltip: { classPropertyName: "tooltip", publicName: "ngpTooltipTrigger", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "ngpTooltipTriggerDisabled", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "ngpTooltipTriggerPlacement", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "ngpTooltipTriggerOffset", isSignal: true, isRequired: false, transformFunction: null }, showDelay: { classPropertyName: "showDelay", publicName: "ngpTooltipTriggerShowDelay", isSignal: true, isRequired: false, transformFunction: null }, hideDelay: { classPropertyName: "hideDelay", publicName: "ngpTooltipTriggerHideDelay", isSignal: true, isRequired: false, transformFunction: null }, flip: { classPropertyName: "flip", publicName: "ngpTooltipTriggerFlip", isSignal: true, isRequired: false, transformFunction: null }, shift: { classPropertyName: "shift", publicName: "ngpTooltipTriggerShift", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "ngpTooltipTriggerContainer", isSignal: true, isRequired: false, transformFunction: null }, showOnOverflow: { classPropertyName: "showOnOverflow", publicName: "ngpTooltipTriggerShowOnOverflow", isSignal: true, isRequired: false, transformFunction: null }, anchor: { classPropertyName: "anchor", publicName: "ngpTooltipTriggerAnchor", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "ngpTooltipTriggerContext", isSignal: true, isRequired: false, transformFunction: null }, useTextContent: { classPropertyName: "useTextContent", publicName: "ngpTooltipTriggerUseTextContent", isSignal: true, isRequired: false, transformFunction: null }, trackPosition: { classPropertyName: "trackPosition", publicName: "ngpTooltipTriggerTrackPosition", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "ngpTooltipTriggerPosition", isSignal: true, isRequired: false, transformFunction: null }, scrollBehavior: { classPropertyName: "scrollBehavior", publicName: "ngpTooltipTriggerScrollBehavior", isSignal: true, isRequired: false, transformFunction: null }, cooldown: { classPropertyName: "cooldown", publicName: "ngpTooltipTriggerCooldown", isSignal: true, isRequired: false, transformFunction: null }, hoverableContent: { classPropertyName: "hoverableContent", publicName: "ngpTooltipTriggerHoverableContent", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTooltipTriggerState({ inherit: false })], exportAs: ["ngpTooltipTrigger"], ngImport: i0 }); }
|
|
662
670
|
}
|
|
663
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
671
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NgpTooltipTrigger, decorators: [{
|
|
664
672
|
type: Directive,
|
|
665
673
|
args: [{
|
|
666
674
|
selector: '[ngpTooltipTrigger]',
|
|
667
675
|
exportAs: 'ngpTooltipTrigger',
|
|
668
676
|
providers: [provideTooltipTriggerState({ inherit: false })],
|
|
669
|
-
host: {
|
|
670
|
-
'[attr.data-open]': 'open() ? "" : null',
|
|
671
|
-
'[attr.data-disabled]': 'state.disabled() ? "" : null',
|
|
672
|
-
'[attr.aria-describedby]': 'overlay()?.ariaDescribedBy()',
|
|
673
|
-
'(mouseenter)': 'showFromInteraction()',
|
|
674
|
-
'(mouseleave)': 'hideFromInteraction($event)',
|
|
675
|
-
'(focus)': 'showFromInteraction()',
|
|
676
|
-
'(blur)': 'hideFromInteraction()',
|
|
677
|
-
},
|
|
678
677
|
}]
|
|
679
|
-
}],
|
|
678
|
+
}], propDecorators: { tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTrigger", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerDisabled", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerPlacement", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerOffset", required: false }] }], showDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerShowDelay", required: false }] }], hideDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerHideDelay", required: false }] }], flip: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerFlip", required: false }] }], shift: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerShift", required: false }] }], container: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerContainer", required: false }] }], showOnOverflow: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerShowOnOverflow", required: false }] }], anchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerAnchor", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerContext", required: false }] }], useTextContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerUseTextContent", required: false }] }], trackPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerTrackPosition", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerPosition", required: false }] }], scrollBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerScrollBehavior", required: false }] }], cooldown: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerCooldown", required: false }] }], hoverableContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngpTooltipTriggerHoverableContent", required: false }] }] } });
|
|
680
679
|
|
|
681
680
|
/**
|
|
682
681
|
* Generated bundle index. Do not edit.
|
|
683
682
|
*/
|
|
684
683
|
|
|
685
|
-
export { NgpTooltip, NgpTooltipArrow, NgpTooltipArrowStateToken, NgpTooltipTrigger, injectTooltipArrowState, injectTooltipTriggerState, ngpTooltipArrow, provideTooltipArrowState, provideTooltipConfig, provideTooltipTriggerState };
|
|
684
|
+
export { NgpTooltip, NgpTooltipArrow, NgpTooltipArrowStateToken, NgpTooltipStateToken, NgpTooltipTextContentStateToken, NgpTooltipTrigger, NgpTooltipTriggerStateToken, injectTooltipArrowState, injectTooltipState, injectTooltipTextContentState, injectTooltipTriggerState, ngpTooltip, ngpTooltipArrow, ngpTooltipTextContent, ngpTooltipTrigger, provideTooltipArrowState, provideTooltipConfig, provideTooltipState, provideTooltipTextContentState, provideTooltipTriggerState };
|
|
686
685
|
//# sourceMappingURL=ng-primitives-tooltip.mjs.map
|