@koobiq/components 20.0.0 → 20.2.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/accordion/_accordion-theme.scss +1 -1
- package/accordion/accordion-tokens.scss +1 -0
- package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +4 -18
- package/accordion/{accordion.component.scss → accordion.scss} +12 -5
- package/accordion/index.d.ts +215 -119
- package/actions-panel/index.d.ts +1 -0
- package/alert/_alert-theme.scss +14 -4
- package/alert/alert-tokens.scss +4 -4
- package/alert/alert.component.scss +24 -13
- package/alert/index.d.ts +63 -29
- package/app-switcher/app-switcher-dropdown-app.scss +2 -0
- package/autocomplete/autocomplete.scss +2 -1
- package/autocomplete/index.d.ts +35 -29
- package/badge/index.d.ts +2 -3
- package/breadcrumbs/breadcrumbs.scss +4 -0
- package/breadcrumbs/index.d.ts +2 -1
- package/button/button-group.scss +42 -2
- package/button-toggle/button-toggle.scss +23 -0
- package/button-toggle/index.d.ts +3 -1
- package/checkbox/checkbox.scss +5 -4
- package/clamped-text/index.d.ts +4 -2
- package/core/index.d.ts +515 -21
- package/core/styles/_core.scss +2 -0
- package/core/styles/common/_animation.scss +35 -24
- package/core/styles/common/_connected-overlay.scss +36 -0
- package/core/styles/common/_select.scss +7 -2
- package/core/styles/theming/_components-theming.scss +1 -1
- package/core/styles/theming/_scrollbar-theme.scss +4 -0
- package/datepicker/_datepicker-theme.scss +1 -1
- package/datepicker/datepicker-toggle.scss +3 -3
- package/dl/index.d.ts +1 -0
- package/dropdown/dropdown-item.scss +16 -0
- package/dropdown/dropdown-tokens.scss +2 -1
- package/dropdown/dropdown.scss +11 -2
- package/dropdown/index.d.ts +73 -6
- package/fesm2022/koobiq-components-accordion.mjs +406 -303
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +15 -6
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +88 -48
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +7 -7
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +37 -23
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +5 -4
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +6 -4
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +9 -6
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +4 -4
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +2 -2
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +9 -0
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +5 -1
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +544 -113
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +13 -10
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +3 -2
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +105 -31
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +33 -22
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +1169 -782
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +66 -0
- package/fesm2022/koobiq-components-flag.mjs.map +1 -0
- package/fesm2022/koobiq-components-form-field.mjs +6 -6
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +16 -7
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +30 -7
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +39 -20
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +9 -5
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +123 -27
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +193 -19
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +12 -4
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +9 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +3 -7
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +43 -8
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +72 -59
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +4 -0
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +2 -2
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +5 -12
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +6 -2
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +8 -6
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +42 -18
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +8 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +7 -14
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +4 -4
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +3 -4
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +9 -5
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +132 -14
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +1 -1
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +168 -8
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +79 -38
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +67 -41
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +16 -3
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/file-upload-tokens.scss +1 -0
- package/file-upload/index.d.ts +10 -7
- package/filter-bar/_filter-bar-theme.scss +82 -0
- package/filter-bar/filter-bar-tokens.scss +9 -0
- package/filter-bar/filter-bar.scss +10 -4
- package/filter-bar/filter-refresher.scss +1 -1
- package/filter-bar/filters.scss +25 -20
- package/filter-bar/index.d.ts +764 -336
- package/filter-bar/pipes/base-pipe.scss +12 -44
- package/filter-bar/pipes/pipe-date.scss +20 -14
- package/filter-bar/pipes/pipe-input.scss +10 -0
- package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
- package/filter-bar/pipes/pipe-multiselect.scss +5 -3
- package/filter-bar/pipes/pipe-readonly.scss +4 -13
- package/filter-bar/pipes/pipe-select.scss +3 -1
- package/filter-bar/pipes/pipe-tree-select.scss +3 -1
- package/flag/flag.scss +53 -0
- package/flag/index.d.ts +44 -0
- package/icon/icon-button.scss +3 -1
- package/icon/icon-item-tokens.scss +1 -1
- package/icon/index.d.ts +15 -2
- package/inline-edit/index.d.ts +5 -0
- package/inline-edit/inline-edit.scss +7 -7
- package/link/link-tokens.scss +2 -2
- package/list/index.d.ts +11 -2
- package/loader-overlay/loader-overlay-tokens.scss +1 -1
- package/modal/_modal-animation.scss +6 -6
- package/modal/_modal-theme.scss +5 -0
- package/modal/index.d.ts +3 -1
- package/modal/modal.scss +15 -0
- package/navbar/_navbar-item_vertical.scss +7 -5
- package/navbar/index.d.ts +39 -4
- package/navbar/navbar-brand.scss +17 -7
- package/navbar/navbar-item.scss +9 -0
- package/notification-center/_notification-center-theme.scss +2 -1
- package/notification-center/index.d.ts +89 -3
- package/notification-center/notification-center.scss +42 -4
- package/notification-center/notification-item.scss +3 -2
- package/overflow-items/index.d.ts +1 -0
- package/package.json +7 -3
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/progress-bar.scss +4 -0
- package/progress-spinner/progress-spinner.scss +5 -1
- package/radio/index.d.ts +1 -5
- package/radio/radio.scss +18 -4
- package/schematics/collection.json +15 -0
- package/schematics/migrations/alert-signals/README.md +64 -0
- package/schematics/migrations/alert-signals/data.js +70 -0
- package/schematics/migrations/alert-signals/index.js +350 -0
- package/schematics/migrations/alert-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
- package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
- package/schematics/migrations/filter-bar-signals/README.md +66 -0
- package/schematics/migrations/filter-bar-signals/data.js +72 -0
- package/schematics/migrations/filter-bar-signals/index.js +316 -0
- package/schematics/migrations/filter-bar-signals/schema.json +20 -0
- package/schematics/migrations.json +15 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/utils/angular-parsing.js +11 -2
- package/search-expandable/index.d.ts +3 -0
- package/select/index.d.ts +59 -24
- package/sidebar/index.d.ts +1 -0
- package/skeleton/skeleton.scss +4 -0
- package/split-button/_split-button-theme.scss +2 -2
- package/splitter/_splitter-theme.scss +2 -2
- package/splitter/index.d.ts +1 -0
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +3 -2
- package/tabs/_tabs-common.scss +60 -31
- package/tabs/_tabs-theme.scss +12 -0
- package/tabs/index.d.ts +4 -2
- package/tabs/tab-header.scss +15 -0
- package/tabs/tab-nav-bar.scss +4 -0
- package/tabs/tabs-tokens.scss +2 -1
- package/textarea/index.d.ts +0 -1
- package/time-range/time-range.scss +0 -8
- package/timepicker/timepicker.scss +2 -2
- package/timezone/index.d.ts +2 -3
- package/title/index.d.ts +92 -2
- package/tooltip/index.d.ts +124 -7
- package/tree/_tree-theme.scss +2 -7
- package/tree/index.d.ts +19 -4
- package/tree/toggle.scss +5 -0
- package/tree/tree-option.scss +0 -4
- package/tree-select/_tree-select-theme.scss +1 -1
- package/tree-select/index.d.ts +53 -22
- package/username/index.d.ts +20 -2
|
@@ -1,14 +1,56 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, Injectable, inject, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, Renderer2, input, booleanAttribute, EventEmitter, effect, numberAttribute, Input, Output, Directive, NgModule } from '@angular/core';
|
|
1
3
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
2
4
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
5
|
import { Overlay } from '@angular/cdk/overlay';
|
|
4
6
|
import { NgTemplateOutlet } from '@angular/common';
|
|
5
|
-
import * as i0 from '@angular/core';
|
|
6
|
-
import { InjectionToken, inject, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, Renderer2, input, EventEmitter, effect, numberAttribute, booleanAttribute, Input, Output, Directive, NgModule } from '@angular/core';
|
|
7
7
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
|
-
import { KbqPopUp, applyPopupMargins,
|
|
8
|
+
import { KbqPopUp, applyPopupMargins, PopUpTriggers, KbqPopUpTrigger, KbqComponentColors, KBQ_PARENT_POPUP, POSITION_TO_CSS_MAP, PopUpPlacements } from '@koobiq/components/core';
|
|
9
9
|
import { merge, EMPTY } from 'rxjs';
|
|
10
10
|
import { trigger, state, transition, style, animate, keyframes } from '@angular/animations';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Default value of the `kbqTooltipSingleInstance` input. Provide `false` at the application level to
|
|
14
|
+
* globally disable the "only one tooltip is visible at a time" behavior.
|
|
15
|
+
*/
|
|
16
|
+
const KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT = new InjectionToken('KbqTooltipSingleInstanceDefault', {
|
|
17
|
+
providedIn: 'root',
|
|
18
|
+
factory: () => true
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Keeps track of the single tooltip that is currently visible, so that showing a new one hides the
|
|
22
|
+
* previous. Holds the *trigger*, not the overlay component — the latter is re-created on every show.
|
|
23
|
+
*/
|
|
24
|
+
class KbqTooltipRegistry {
|
|
25
|
+
constructor() {
|
|
26
|
+
/** Tooltip that currently owns the screen, or `null` when nothing is visible. */
|
|
27
|
+
this.visibleTooltip = null;
|
|
28
|
+
}
|
|
29
|
+
/** Marks the tooltip as the only visible one, hiding the previously visible tooltip. */
|
|
30
|
+
setVisible(tooltip) {
|
|
31
|
+
if (this.visibleTooltip && this.visibleTooltip !== tooltip) {
|
|
32
|
+
this.visibleTooltip.hideAsInactive();
|
|
33
|
+
}
|
|
34
|
+
this.visibleTooltip = tooltip;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Clears the registry, but only when the given tooltip is still the registered one. The guard
|
|
38
|
+
* matters because hiding the previous tooltip is asynchronous: its `visibleChange(false)` arrives
|
|
39
|
+
* after the new tooltip has already been registered, and must not wipe that newer entry.
|
|
40
|
+
*/
|
|
41
|
+
clearVisible(tooltip) {
|
|
42
|
+
if (this.visibleTooltip === tooltip) {
|
|
43
|
+
this.visibleTooltip = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqTooltipRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqTooltipRegistry, providedIn: 'root' }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqTooltipRegistry, decorators: [{
|
|
50
|
+
type: Injectable,
|
|
51
|
+
args: [{ providedIn: 'root' }]
|
|
52
|
+
}] });
|
|
53
|
+
|
|
12
54
|
/**
|
|
13
55
|
* Animations used by KbqTooltip.
|
|
14
56
|
* @docs-private
|
|
@@ -74,6 +116,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
74
116
|
type: ViewChild,
|
|
75
117
|
args: ['tooltip']
|
|
76
118
|
}] } });
|
|
119
|
+
/**
|
|
120
|
+
* Triggers that make a tooltip part of the "only one tooltip is visible at a time" group.
|
|
121
|
+
*
|
|
122
|
+
* Values that match none of them (`manual`, `none`, …) bind no listeners at all — that is how the
|
|
123
|
+
* imperatively driven validation tooltips are configured, and they are expected to stay pinned while
|
|
124
|
+
* the user keeps interacting elsewhere.
|
|
125
|
+
*/
|
|
126
|
+
const INTERACTIVE_TRIGGERS = [
|
|
127
|
+
PopUpTriggers.Hover,
|
|
128
|
+
PopUpTriggers.Focus,
|
|
129
|
+
PopUpTriggers.Click,
|
|
130
|
+
PopUpTriggers.Keydown
|
|
131
|
+
];
|
|
77
132
|
const KBQ_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('kbq-tooltip-scroll-strategy');
|
|
78
133
|
/** @docs-private */
|
|
79
134
|
function kbqTooltipScrollStrategyFactory(overlay) {
|
|
@@ -85,7 +140,13 @@ const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {
|
|
|
85
140
|
deps: [Overlay],
|
|
86
141
|
useFactory: kbqTooltipScrollStrategyFactory
|
|
87
142
|
};
|
|
143
|
+
/**
|
|
144
|
+
* Trigger directive that shows a `KbqTooltipComponent` for its host element. Extends `KbqPopUpTrigger` with
|
|
145
|
+
* tooltip-specific inputs (content, placement, color, arrow, enter/leave delays, modifier and header) and
|
|
146
|
+
* behavior such as opening on keyboard focus only and positioning relative to the mouse cursor.
|
|
147
|
+
*/
|
|
88
148
|
class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
149
|
+
/** Input (`kbqVisible`) that programmatically shows or hides the tooltip; reflects the current `visible` state. */
|
|
89
150
|
// TODO: Skipped for migration because:
|
|
90
151
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
91
152
|
get tooltipVisible() {
|
|
@@ -94,6 +155,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
94
155
|
set tooltipVisible(value) {
|
|
95
156
|
super.updateVisible(value);
|
|
96
157
|
}
|
|
158
|
+
/** Input (`kbqPlacement`) that sets the tooltip placement relative to its trigger; reflects the current `placement`. */
|
|
97
159
|
// TODO: Skipped for migration because:
|
|
98
160
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
99
161
|
get tooltipPlacement() {
|
|
@@ -102,6 +164,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
102
164
|
set tooltipPlacement(value) {
|
|
103
165
|
super.updatePlacement(value);
|
|
104
166
|
}
|
|
167
|
+
/** Input (`kbqPlacementPriority`) that sets the ordered fallback placements; reflects the current `placementPriority`. */
|
|
105
168
|
// TODO: Skipped for migration because:
|
|
106
169
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
107
170
|
get tooltipPlacementPriority() {
|
|
@@ -110,6 +173,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
110
173
|
set tooltipPlacementPriority(value) {
|
|
111
174
|
super.updatePlacementPriority(value);
|
|
112
175
|
}
|
|
176
|
+
/** Input (`kbqTooltip`) with the tooltip content — a string or a template. Updating it refreshes an open tooltip. */
|
|
113
177
|
// TODO: Skipped for migration because:
|
|
114
178
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
115
179
|
get content() {
|
|
@@ -119,6 +183,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
119
183
|
this._content = content;
|
|
120
184
|
this.updateData();
|
|
121
185
|
}
|
|
186
|
+
/** Input (`kbqTooltipDisabled`) controlling whether the tooltip is disabled; setting it to `true` hides it. */
|
|
122
187
|
// TODO: Skipped for migration because:
|
|
123
188
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
124
189
|
get disabled() {
|
|
@@ -130,6 +195,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
130
195
|
this.hide();
|
|
131
196
|
}
|
|
132
197
|
}
|
|
198
|
+
/** Input (`kbqTrigger`) with the comma-separated trigger events. An empty value resets to hover + focus and rebinds listeners. */
|
|
133
199
|
// TODO: Skipped for migration because:
|
|
134
200
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
135
201
|
get trigger() {
|
|
@@ -144,6 +210,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
144
210
|
}
|
|
145
211
|
this.initListeners();
|
|
146
212
|
}
|
|
213
|
+
/** Input (`kbqTooltipClass`) with an extra CSS class applied to the tooltip; updating it refreshes the class map. */
|
|
147
214
|
// TODO: Skipped for migration because:
|
|
148
215
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
149
216
|
get customClass() {
|
|
@@ -158,6 +225,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
158
225
|
this._customClass = '';
|
|
159
226
|
}
|
|
160
227
|
}
|
|
228
|
+
/** Input (`kbqTooltipContext`) with the context object passed to a template tooltip; updating it refreshes the open tooltip. */
|
|
161
229
|
// TODO: Skipped for migration because:
|
|
162
230
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
163
231
|
get context() {
|
|
@@ -167,6 +235,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
167
235
|
this._context = ctx;
|
|
168
236
|
this.updateData();
|
|
169
237
|
}
|
|
238
|
+
/** Input (`kbqTooltipColor`) with the tooltip color theme; the getter returns the `kbq-`-prefixed CSS class. */
|
|
170
239
|
// TODO: Skipped for migration because:
|
|
171
240
|
// Accessor inputs cannot be migrated as they are too complex.
|
|
172
241
|
get color() {
|
|
@@ -175,6 +244,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
175
244
|
set color(value) {
|
|
176
245
|
this._color = value || KbqComponentColors.Contrast;
|
|
177
246
|
}
|
|
247
|
+
/** Whether the configured trigger list includes the `click` trigger. */
|
|
178
248
|
get hasClickInTrigger() {
|
|
179
249
|
return this.trigger.includes(PopUpTriggers.Click);
|
|
180
250
|
}
|
|
@@ -196,10 +266,35 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
196
266
|
this.updateData();
|
|
197
267
|
}
|
|
198
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Whether this tooltip takes part in the "only one tooltip is visible at a time" group.
|
|
271
|
+
*
|
|
272
|
+
* Read through the `trigger` getter on purpose: `KbqTitleDirective` always reports `hover`, so title
|
|
273
|
+
* tooltips participate, while `kbqValidationTooltip` consumers (datepicker, timepicker, inline-edit)
|
|
274
|
+
* assign `trigger = 'manual'` and therefore stay out of the group.
|
|
275
|
+
*/
|
|
276
|
+
get participatesInSingleInstance() {
|
|
277
|
+
return this.singleInstance() && INTERACTIVE_TRIGGERS.some((name) => this.trigger.includes(name));
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Sets up an effect that mirrors a `forDisabledComponent`'s disabled signal: when that component is disabled it
|
|
281
|
+
* makes the host focusable (so the tooltip can still be triggered) and enables the tooltip, otherwise disables it.
|
|
282
|
+
*
|
|
283
|
+
* Also joins the "only one tooltip is visible at a time" group. Both the subscription and the teardown live
|
|
284
|
+
* here rather than in `ngAfterViewInit`/`ngOnDestroy` because several subclasses override those hooks:
|
|
285
|
+
* `KbqTitleDirective` and `KbqEllipsisCenterDirective` skip `super.ngAfterViewInit()`, and `KbqPasswordToggle`
|
|
286
|
+
* skips `super` in both hooks entirely. `destroyRef` additionally covers a trigger destroyed while its
|
|
287
|
+
* tooltip is still visible — that path disposes the overlay without emitting `visibleChange(false)`.
|
|
288
|
+
*/
|
|
199
289
|
constructor() {
|
|
200
290
|
super();
|
|
291
|
+
/** Registry holding the single tooltip that is currently visible. */
|
|
292
|
+
this.tooltipRegistry = inject(KbqTooltipRegistry);
|
|
293
|
+
/** @docs-private */
|
|
201
294
|
this.scrollStrategy = inject(KBQ_TOOLTIP_SCROLL_STRATEGY);
|
|
295
|
+
/** @docs-private */
|
|
202
296
|
this.parentPopup = inject(KBQ_PARENT_POPUP, { optional: true });
|
|
297
|
+
/** @docs-private */
|
|
203
298
|
this.focusMonitor = inject(FocusMonitor);
|
|
204
299
|
/** @docs-private */
|
|
205
300
|
this.renderer = inject(Renderer2);
|
|
@@ -218,6 +313,21 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
218
313
|
* Defaults to `true`.
|
|
219
314
|
*/
|
|
220
315
|
this.ignoreTooltipPointerEvents = input(true, ...(ngDevMode ? [{ debugName: "ignoreTooltipPointerEvents" }] : []));
|
|
316
|
+
/**
|
|
317
|
+
* Whether the tooltip takes part in the "only one tooltip is visible at a time" group: showing it
|
|
318
|
+
* hides the previously visible tooltip, and it is hidden when another tooltip is shown.
|
|
319
|
+
*
|
|
320
|
+
* Defaults to `true`; the default can be changed application-wide with the
|
|
321
|
+
* `KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT` token.
|
|
322
|
+
*
|
|
323
|
+
* Tooltips without an interactive `kbqTrigger` (`manual`, `none`, …) never take part in the group,
|
|
324
|
+
* regardless of this input — they are shown imperatively and are expected to stay pinned.
|
|
325
|
+
*/
|
|
326
|
+
this.singleInstance = input(inject(KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT), ...(ngDevMode ? [{ debugName: "singleInstance", alias: 'kbqTooltipSingleInstance',
|
|
327
|
+
transform: booleanAttribute }] : [{
|
|
328
|
+
alias: 'kbqTooltipSingleInstance',
|
|
329
|
+
transform: booleanAttribute
|
|
330
|
+
}]));
|
|
221
331
|
/**
|
|
222
332
|
* Changes hiding behavior. By default, tooltip is hidden on mouseleave from trigger.
|
|
223
333
|
* Setting hideWithTimeout to true will delay tooltip hiding and will not hide when the mouse moves from trigger
|
|
@@ -235,25 +345,36 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
235
345
|
// Class of this input is manually instantiated. This is discouraged and prevents
|
|
236
346
|
// migration.
|
|
237
347
|
this.relativeToPointer = false;
|
|
348
|
+
/** Input (`kbqEnterDelay`) — delay in milliseconds before the tooltip is shown. Defaults to `400`. */
|
|
238
349
|
// TODO: Skipped for migration because:
|
|
239
350
|
// Your application code writes to the input. This prevents migration.
|
|
240
351
|
this.enterDelay = 400;
|
|
352
|
+
/** Input (`kbqLeaveDelay`) — delay in milliseconds before the tooltip is hidden. Defaults to `0`. */
|
|
241
353
|
// TODO: Skipped for migration because:
|
|
242
354
|
// This input overrides a field from a superclass, while the superclass field
|
|
243
355
|
// is not migrated.
|
|
244
356
|
this.leaveDelay = 0;
|
|
357
|
+
/** Backing field for `trigger`; defaults to hover + focus. */
|
|
245
358
|
this._trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;
|
|
359
|
+
/** Backing field for `context`. */
|
|
246
360
|
this._context = null;
|
|
361
|
+
/** Backing field for `color`; defaults to `KbqComponentColors.Contrast`. */
|
|
247
362
|
this._color = KbqComponentColors.Contrast;
|
|
363
|
+
/** Input (`kbqTooltipArrow`) — whether to render the tooltip's arrow/pointer. Defaults to `false`. */
|
|
248
364
|
// TODO: Skipped for migration because:
|
|
249
365
|
// Your application code writes to the input. This prevents migration.
|
|
250
366
|
this.arrow = false;
|
|
367
|
+
/** Input (`kbqTooltipOffset`) — distance in pixels between the tooltip and its trigger; `null` uses the default. */
|
|
251
368
|
// TODO: Skipped for migration because:
|
|
252
369
|
// Your application code writes to the input. This prevents migration.
|
|
253
370
|
this.offset = null;
|
|
371
|
+
/** Output (`kbqPlacementChange`) that emits the new placement whenever the tooltip repositions. */
|
|
254
372
|
this.placementChange = new EventEmitter();
|
|
373
|
+
/** Output (`kbqVisibleChange`) that emits when the tooltip's visibility changes. */
|
|
255
374
|
this.visibleChange = new EventEmitter();
|
|
375
|
+
/** @docs-private */
|
|
256
376
|
this.originSelector = '.kbq-tooltip';
|
|
377
|
+
/** @docs-private */
|
|
257
378
|
this.overlayConfig = {
|
|
258
379
|
panelClass: ['kbq-tooltip-panel']
|
|
259
380
|
};
|
|
@@ -267,6 +388,17 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
267
388
|
// Class of this input is manually instantiated. This is discouraged and prevents
|
|
268
389
|
// migration.
|
|
269
390
|
this.modifier = TooltipModifier.Default;
|
|
391
|
+
this.visibleChange.pipe(takeUntilDestroyed()).subscribe((visible) => {
|
|
392
|
+
if (visible) {
|
|
393
|
+
if (this.participatesInSingleInstance) {
|
|
394
|
+
this.tooltipRegistry.setVisible(this);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
this.tooltipRegistry.clearVisible(this);
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
this.destroyRef.onDestroy(() => this.tooltipRegistry.clearVisible(this));
|
|
270
402
|
effect(() => {
|
|
271
403
|
if (!this.forDisabledComponent())
|
|
272
404
|
return;
|
|
@@ -281,6 +413,10 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
281
413
|
this.disabled = !disabled;
|
|
282
414
|
});
|
|
283
415
|
}
|
|
416
|
+
/**
|
|
417
|
+
* Hides the tooltip when a parent pop-up closes, starts focus monitoring on the host, and—when
|
|
418
|
+
* `ignoreTooltipPointerEvents` is set—adds the panel class that makes the tooltip ignore pointer events.
|
|
419
|
+
*/
|
|
284
420
|
ngAfterViewInit() {
|
|
285
421
|
this.parentPopup?.closedStream.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.hide());
|
|
286
422
|
this.focusMonitor.monitor(this.elementRef.nativeElement);
|
|
@@ -288,10 +424,15 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
288
424
|
this.overlayConfig.panelClass.push('cdk-overlay-pane_ignore-pointer-events');
|
|
289
425
|
}
|
|
290
426
|
}
|
|
427
|
+
/** Stops focus monitoring on the host element and runs the base-class teardown. */
|
|
291
428
|
ngOnDestroy() {
|
|
292
429
|
this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);
|
|
293
430
|
super.ngOnDestroy();
|
|
294
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
* Shows the tooltip after `delay` ms. Suppresses showing on a focus trigger that did not originate from
|
|
434
|
+
* the keyboard, and applies cursor-relative positioning when `relativeToPointer` is enabled.
|
|
435
|
+
*/
|
|
295
436
|
show(delay = this.enterDelay) {
|
|
296
437
|
if (this.triggerName === 'focus' && this.focusMonitor['_lastFocusOrigin'] !== 'keyboard') {
|
|
297
438
|
return;
|
|
@@ -301,7 +442,21 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
301
442
|
this.applyRelativeToPointer();
|
|
302
443
|
}
|
|
303
444
|
}
|
|
304
|
-
/**
|
|
445
|
+
/**
|
|
446
|
+
* Hides the tooltip because another tooltip became visible.
|
|
447
|
+
*
|
|
448
|
+
* Goes straight to the pop-up instead of `hide()`: `hide()` silently no-ops when the last recorded
|
|
449
|
+
* `triggerName` is `mouseleave` and the pop-up itself is hovered. Hiding through the instance keeps
|
|
450
|
+
* `visibleChange(false)` firing, so `isOpen`, `kbqVisibleChange` and the `kbqVisible` input stay in sync.
|
|
451
|
+
* Does nothing when the tooltip is already detached or when closing is prevented.
|
|
452
|
+
* @docs-private */
|
|
453
|
+
hideAsInactive() {
|
|
454
|
+
if (this.preventClose)
|
|
455
|
+
return;
|
|
456
|
+
this.ngZone.run(() => this.instance?.hide(0));
|
|
457
|
+
}
|
|
458
|
+
/** method allows to show the tooltip relative to the given mouse event.
|
|
459
|
+
* @docs-private */
|
|
305
460
|
showForMouseEvent(event) {
|
|
306
461
|
if (!(event.currentTarget instanceof HTMLElement))
|
|
307
462
|
return;
|
|
@@ -318,11 +473,12 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
318
473
|
* For example:
|
|
319
474
|
* const tooltip = new KbqTooltipTrigger();
|
|
320
475
|
* tooltip.showForElement(element);
|
|
321
|
-
*/
|
|
476
|
+
* @docs-private */
|
|
322
477
|
showForElement(element) {
|
|
323
478
|
this.show();
|
|
324
479
|
this.strategy.setOrigin(element);
|
|
325
480
|
}
|
|
481
|
+
/** @docs-private */
|
|
326
482
|
updateData() {
|
|
327
483
|
if (!this.instance) {
|
|
328
484
|
return;
|
|
@@ -335,12 +491,15 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
335
491
|
this.instance.detectChanges();
|
|
336
492
|
this.updatePosition(true);
|
|
337
493
|
}
|
|
494
|
+
/** @docs-private */
|
|
338
495
|
closingActions() {
|
|
339
496
|
return merge(this.hasClickInTrigger ? this.overlayRef.outsidePointerEvents() : EMPTY, this.overlayRef.detachments());
|
|
340
497
|
}
|
|
498
|
+
/** @docs-private */
|
|
341
499
|
getOverlayHandleComponentType() {
|
|
342
500
|
return KbqTooltipComponent;
|
|
343
501
|
}
|
|
502
|
+
/** @docs-private */
|
|
344
503
|
updateClassMap(newPlacement = this.placement) {
|
|
345
504
|
if (!this.instance) {
|
|
346
505
|
return;
|
|
@@ -350,6 +509,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
350
509
|
});
|
|
351
510
|
this.instance.markForCheck();
|
|
352
511
|
}
|
|
512
|
+
/** @docs-private */
|
|
353
513
|
applyRelativeToPointer() {
|
|
354
514
|
if (!this.strategy ||
|
|
355
515
|
![PopUpPlacements.Top, PopUpPlacements.Bottom].includes(this.placement) ||
|
|
@@ -371,7 +531,7 @@ class KbqTooltipTrigger extends KbqPopUpTrigger {
|
|
|
371
531
|
this.strategy.setOrigin(point);
|
|
372
532
|
}
|
|
373
533
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqTooltipTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
374
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: KbqTooltipTrigger, isStandalone: true, selector: "[kbqTooltip]", inputs: { forDisabledComponent: { classPropertyName: "forDisabledComponent", publicName: "forDisabledComponent", isSignal: true, isRequired: false, transformFunction: null }, ignoreTooltipPointerEvents: { classPropertyName: "ignoreTooltipPointerEvents", publicName: "ignoreTooltipPointerEvents", isSignal: true, isRequired: false, transformFunction: null }, hideWithTimeout: { classPropertyName: "hideWithTimeout", publicName: "hideWithTimeout", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, tooltipVisible: { classPropertyName: "tooltipVisible", publicName: "kbqVisible", isSignal: false, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "kbqPlacement", isSignal: false, isRequired: false, transformFunction: null }, relativeToPointer: { classPropertyName: "relativeToPointer", publicName: "kbqRelativeToPointer", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, tooltipPlacementPriority: { classPropertyName: "tooltipPlacementPriority", publicName: "kbqPlacementPriority", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "kbqTooltip", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "kbqTooltipDisabled", isSignal: false, isRequired: false, transformFunction: null }, enterDelay: { classPropertyName: "enterDelay", publicName: "kbqEnterDelay", isSignal: false, isRequired: false, transformFunction: null }, leaveDelay: { classPropertyName: "leaveDelay", publicName: "kbqLeaveDelay", isSignal: false, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "kbqTrigger", isSignal: false, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "kbqTooltipClass", isSignal: false, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "kbqTooltipContext", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "kbqTooltipColor", isSignal: false, isRequired: false, transformFunction: null }, arrow: { classPropertyName: "arrow", publicName: "kbqTooltipArrow", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, offset: { classPropertyName: "offset", publicName: "kbqTooltipOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, modifier: { classPropertyName: "modifier", publicName: "kbqTooltipModifier", isSignal: false, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "kbqTooltipHeader", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { placementChange: "kbqPlacementChange", visibleChange: "kbqVisibleChange" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-tooltip_open": "isOpen" } }, exportAs: ["kbqTooltip"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
534
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: KbqTooltipTrigger, isStandalone: true, selector: "[kbqTooltip]", inputs: { forDisabledComponent: { classPropertyName: "forDisabledComponent", publicName: "forDisabledComponent", isSignal: true, isRequired: false, transformFunction: null }, ignoreTooltipPointerEvents: { classPropertyName: "ignoreTooltipPointerEvents", publicName: "ignoreTooltipPointerEvents", isSignal: true, isRequired: false, transformFunction: null }, singleInstance: { classPropertyName: "singleInstance", publicName: "kbqTooltipSingleInstance", isSignal: true, isRequired: false, transformFunction: null }, hideWithTimeout: { classPropertyName: "hideWithTimeout", publicName: "hideWithTimeout", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, tooltipVisible: { classPropertyName: "tooltipVisible", publicName: "kbqVisible", isSignal: false, isRequired: false, transformFunction: null }, tooltipPlacement: { classPropertyName: "tooltipPlacement", publicName: "kbqPlacement", isSignal: false, isRequired: false, transformFunction: null }, relativeToPointer: { classPropertyName: "relativeToPointer", publicName: "kbqRelativeToPointer", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, tooltipPlacementPriority: { classPropertyName: "tooltipPlacementPriority", publicName: "kbqPlacementPriority", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "kbqTooltip", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "kbqTooltipDisabled", isSignal: false, isRequired: false, transformFunction: null }, enterDelay: { classPropertyName: "enterDelay", publicName: "kbqEnterDelay", isSignal: false, isRequired: false, transformFunction: null }, leaveDelay: { classPropertyName: "leaveDelay", publicName: "kbqLeaveDelay", isSignal: false, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "kbqTrigger", isSignal: false, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "kbqTooltipClass", isSignal: false, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "kbqTooltipContext", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "kbqTooltipColor", isSignal: false, isRequired: false, transformFunction: null }, arrow: { classPropertyName: "arrow", publicName: "kbqTooltipArrow", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, offset: { classPropertyName: "offset", publicName: "kbqTooltipOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, modifier: { classPropertyName: "modifier", publicName: "kbqTooltipModifier", isSignal: false, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "kbqTooltipHeader", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { placementChange: "kbqPlacementChange", visibleChange: "kbqVisibleChange" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-tooltip_open": "isOpen" } }, exportAs: ["kbqTooltip"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
375
535
|
}
|
|
376
536
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqTooltipTrigger, decorators: [{
|
|
377
537
|
type: Directive,
|
|
@@ -384,7 +544,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
384
544
|
},
|
|
385
545
|
exportAs: 'kbqTooltip'
|
|
386
546
|
}]
|
|
387
|
-
}], ctorParameters: () => [], propDecorators: { forDisabledComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "forDisabledComponent", required: false }] }], ignoreTooltipPointerEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreTooltipPointerEvents", required: false }] }], hideWithTimeout: [{
|
|
547
|
+
}], ctorParameters: () => [], propDecorators: { forDisabledComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "forDisabledComponent", required: false }] }], ignoreTooltipPointerEvents: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreTooltipPointerEvents", required: false }] }], singleInstance: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTooltipSingleInstance", required: false }] }], hideWithTimeout: [{
|
|
388
548
|
type: Input,
|
|
389
549
|
args: [{ transform: booleanAttribute }]
|
|
390
550
|
}], tooltipVisible: [{
|
|
@@ -473,5 +633,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
|
|
|
473
633
|
* Generated bundle index. Do not edit.
|
|
474
634
|
*/
|
|
475
635
|
|
|
476
|
-
export { KBQ_TOOLTIP_OPEN_TIME, KBQ_TOOLTIP_OPEN_TIME_PROVIDER, KBQ_TOOLTIP_SCROLL_STRATEGY, KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, KbqToolTipModule, KbqTooltipComponent, KbqTooltipTrigger, MIN_TIME_FOR_DELAY, TooltipModifier, kbqTooltipScrollStrategyFactory };
|
|
636
|
+
export { KBQ_TOOLTIP_OPEN_TIME, KBQ_TOOLTIP_OPEN_TIME_PROVIDER, KBQ_TOOLTIP_SCROLL_STRATEGY, KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT, KbqToolTipModule, KbqTooltipComponent, KbqTooltipRegistry, KbqTooltipTrigger, MIN_TIME_FOR_DELAY, TooltipModifier, kbqTooltipScrollStrategyFactory };
|
|
477
637
|
//# sourceMappingURL=koobiq-components-tooltip.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-tooltip.mjs","sources":["../../../packages/components/tooltip/tooltip.animations.ts","../../../packages/components/tooltip/tooltip.component.ts","../../../packages/components/tooltip/tooltip.component.html","../../../packages/components/tooltip/tooltip.module.ts","../../../packages/components/tooltip/koobiq-components-tooltip.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, keyframes, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Animations used by KbqTooltip.\n * @docs-private\n */\nexport const kbqTooltipAnimations: {\n readonly tooltipState: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n tooltipState: trigger('state', [\n state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0)' })),\n state('visible', style({ transform: 'scale(0.99)' })),\n transition(\n '* => visible',\n animate(\n '200ms cubic-bezier(0, 0, 0.2, 1)',\n keyframes([\n style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n style({ opacity: 0.5, transform: 'scale(0.9)', offset: 0.5 }),\n style({ opacity: 1, transform: 'scale(0.99)', offset: 1 })\n ])\n )\n ),\n transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 })))\n ])\n};\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Point } from '@angular/cdk/drag-drop';\nimport { Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n booleanAttribute,\n effect,\n inject,\n input,\n numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n KBQ_PARENT_POPUP,\n KbqComponentColors,\n KbqParentPopup,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpTrigger,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpTriggers,\n applyPopupMargins\n} from '@koobiq/components/core';\nimport { EMPTY, merge } from 'rxjs';\nimport { kbqTooltipAnimations } from './tooltip.animations';\n\nexport enum TooltipModifier {\n Default = 'default',\n Warning = 'warning',\n Extended = 'extended'\n}\n\nexport const KBQ_TOOLTIP_OPEN_TIME = new InjectionToken<{ value: number }>('kbq-tooltip-open-time');\n\n/** @docs-private */\nexport const KBQ_TOOLTIP_OPEN_TIME_PROVIDER = {\n provide: KBQ_TOOLTIP_OPEN_TIME,\n useValue: { value: 0 }\n};\n\nexport const MIN_TIME_FOR_DELAY = 2000;\n\n@Component({\n selector: 'kbq-tooltip-component',\n imports: [\n NgTemplateOutlet\n ],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.scss', './tooltip-tokens.scss'],\n providers: [KBQ_TOOLTIP_OPEN_TIME_PROVIDER],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [kbqTooltipAnimations.tooltipState]\n})\nexport class KbqTooltipComponent extends KbqPopUp {\n private openTime = inject(KBQ_TOOLTIP_OPEN_TIME);\n\n prefix = 'kbq-tooltip';\n\n @ViewChild('tooltip') elementRef: ElementRef;\n\n show(delay: number) {\n if (!this.content) {\n return;\n }\n\n super.show(Date.now() - this.openTime.value < MIN_TIME_FOR_DELAY ? 0 : delay);\n\n if (this.offset !== null) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n }\n\n this.openTime.value = Date.now();\n }\n\n updateClassMap(placement: string, customClass: string, { modifier }) {\n const classMap = {\n [`${this.prefix}_${modifier}`]: true\n };\n\n super.updateClassMap(placement, customClass, classMap);\n }\n}\n\nexport const KBQ_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('kbq-tooltip-scroll-strategy');\n\n/** @docs-private */\nexport function kbqTooltipScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.close();\n}\n\n/** @docs-private */\nexport const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqTooltipScrollStrategyFactory\n};\n\n@Directive({\n selector: '[kbqTooltip]',\n host: {\n '[class.kbq-tooltip_open]': 'isOpen',\n\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqTooltip'\n})\nexport class KbqTooltipTrigger\n extends KbqPopUpTrigger<KbqTooltipComponent>\n implements AfterViewInit, OnChanges, OnDestroy\n{\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_TOOLTIP_SCROLL_STRATEGY);\n protected parentPopup = inject<KbqParentPopup>(KBQ_PARENT_POPUP, { optional: true });\n protected focusMonitor: FocusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected renderer: Renderer2 = inject(Renderer2);\n\n /**\n * Input for controlling the disabled state of a component.\n *\n * The input expects a component containing `disabledSignal` property, which is\n * a writable signal emitting boolean values.\n */\n readonly forDisabledComponent = input<Record<'disabledSignal', WritableSignal<boolean>>>();\n\n /**\n * Determines whether pointer events should be ignored on tooltips.\n *\n * When set to `true`, tooltip elements will not receive pointer events,\n * allowing interactions to pass through to underlying elements.\n * Defaults to `true`.\n */\n readonly ignoreTooltipPointerEvents = input<boolean>(true);\n\n /**\n * Changes hiding behavior. By default, tooltip is hidden on mouseleave from trigger.\n * Setting hideWithTimeout to true will delay tooltip hiding and will not hide when the mouse moves from trigger\n * to tooltip.\n */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input({ transform: booleanAttribute }) hideWithTimeout: boolean = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqVisible')\n get tooltipVisible(): boolean {\n return this.visible;\n }\n\n set tooltipVisible(value: boolean) {\n super.updateVisible(value);\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqPlacement')\n get tooltipPlacement(): KbqPopUpPlacementValues {\n return this.placement;\n }\n\n /**\n * Positions the tooltip relative to the mouse cursor. Only available for top and bottom kbqPlacement.\n * Does not work with kbqPlacementPriority.\n */\n // TODO: Skipped for migration because:\n // Class of this input is manually instantiated. This is discouraged and prevents\n // migration.\n @Input({ alias: 'kbqRelativeToPointer', transform: booleanAttribute }) relativeToPointer: boolean = false;\n\n set tooltipPlacement(value: KbqPopUpPlacementValues) {\n super.updatePlacement(value);\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqPlacementPriority')\n get tooltipPlacementPriority() {\n return this.placementPriority;\n }\n\n set tooltipPlacementPriority(value) {\n super.updatePlacementPriority(value);\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltip')\n get content(): string | TemplateRef<any> {\n return this._content;\n }\n\n set content(content: string | TemplateRef<any>) {\n this._content = content;\n\n this.updateData();\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input('kbqEnterDelay') enterDelay = 400;\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input('kbqLeaveDelay') leaveDelay = 0;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTrigger')\n get trigger(): string {\n return this._trigger;\n }\n\n set trigger(value: string) {\n if (value) {\n this._trigger = value;\n } else {\n this._trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;\n }\n\n this.initListeners();\n }\n\n protected _trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipClass')\n get customClass(): string {\n return this._customClass || '';\n }\n\n set customClass(value: string) {\n if (value) {\n this._customClass = value;\n\n this.updateClassMap();\n } else {\n this._customClass = '';\n }\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipContext')\n get context() {\n return this._context;\n }\n\n set context(ctx) {\n this._context = ctx;\n this.updateData();\n }\n\n private _context: any = null;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipColor')\n get color(): string {\n return `kbq-${this._color}`;\n }\n\n set color(value: KbqComponentColors | string) {\n this._color = value || KbqComponentColors.Contrast;\n }\n\n private _color: KbqComponentColors | string = KbqComponentColors.Contrast;\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ alias: 'kbqTooltipArrow', transform: booleanAttribute }) arrow: boolean = false;\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ alias: 'kbqTooltipOffset', transform: numberAttribute }) offset: number | null = null;\n\n @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n private get hasClickInTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n protected originSelector = '.kbq-tooltip';\n\n protected overlayConfig: OverlayConfig = {\n panelClass: ['kbq-tooltip-panel']\n };\n\n /**\n * Visual variant of the tooltip. Accepts `'default'` | `'warning'` | `'extended'`.\n * Replaces the removed `KbqWarningTooltipTrigger` and `KbqExtendedTooltipTrigger`\n * subclasses — to render a warning tooltip use `kbqTooltipModifier=\"warning\"`,\n * and `kbqTooltipModifier=\"extended\"` for the extended variant (combine with `kbqTooltipHeader`).\n */\n // TODO: Skipped for migration because:\n // Class of this input is manually instantiated. This is discouraged and prevents\n // migration.\n @Input('kbqTooltipModifier') modifier: TooltipModifier | `${TooltipModifier}` = TooltipModifier.Default;\n\n /**\n * Header text or template, rendered above the tooltip content. Only meaningful with\n * `kbqTooltipModifier=\"extended\"`. Replaces the removed `KbqExtendedTooltipTrigger.header`.\n */\n // TODO: Skipped for migration because:\n // Class of this input is manually instantiated. This is discouraged and prevents\n // migration.\n @Input('kbqTooltipHeader') header: string | TemplateRef<any>;\n\n /**\n * The old `KbqWarningTooltipTrigger` / `KbqExtendedTooltipTrigger` subclasses had\n * setters on their content/header inputs that pushed updates into the open tooltip.\n * Now that `modifier` and `header` are plain `@Input` fields on this base class,\n * we need to mirror that reactivity manually — without it, changing the inputs\n * while a tooltip is open silently leaves the overlay showing stale data until\n * the next show/hide cycle.\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.instance) return;\n\n if (changes.modifier && !changes.modifier.firstChange) {\n this.updateClassMap();\n }\n\n if (changes.header && !changes.header.firstChange) {\n this.updateData();\n }\n }\n\n constructor() {\n super();\n\n effect(() => {\n if (!this.forDisabledComponent()) return;\n\n const disabled = this.forDisabledComponent()!.disabledSignal();\n\n if (disabled) {\n this.renderer.setAttribute(this.getNativeElement(), 'tabindex', '0');\n this.renderer.setStyle(this.getNativeElement(), 'outline-color', 'var(--kbq-states-line-focus-theme)');\n } else {\n this.renderer.setAttribute(this.getNativeElement(), 'tabindex', '-1');\n }\n\n this.disabled = !disabled;\n });\n }\n\n ngAfterViewInit(): void {\n this.parentPopup?.closedStream.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.hide());\n\n this.focusMonitor.monitor(this.elementRef.nativeElement);\n\n if (this.ignoreTooltipPointerEvents() && Array.isArray(this.overlayConfig.panelClass)) {\n this.overlayConfig.panelClass.push('cdk-overlay-pane_ignore-pointer-events');\n }\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n\n super.ngOnDestroy();\n }\n\n show(delay: number = this.enterDelay) {\n if (this.triggerName === 'focus' && this.focusMonitor['_lastFocusOrigin'] !== 'keyboard') {\n return;\n }\n\n super.show(delay);\n\n if (this.relativeToPointer) {\n this.applyRelativeToPointer();\n }\n }\n\n /** method allows to show the tooltip relative to the given mouse event. */\n showForMouseEvent(event: MouseEvent) {\n if (!(event.currentTarget instanceof HTMLElement)) return;\n\n this.triggerName = 'mouseenter';\n this.mouseEvent = event;\n this.setExternalNativeElement(event.currentTarget);\n\n super.show();\n\n this.applyRelativeToPointer();\n }\n\n /**\n * method allows to show the tooltip relative to the element\n * Use this approach when it is not possible to define a trigger in the template.\n *\n * For example:\n * const tooltip = new KbqTooltipTrigger();\n * tooltip.showForElement(element);\n */\n showForElement(element: HTMLElement) {\n this.show();\n this.strategy.setOrigin(element);\n }\n\n updateData() {\n if (!this.instance) {\n return;\n }\n\n this.instance.content = this.content;\n this.instance.header = this.header;\n this.instance.context = this.context && { $implicit: this.context };\n this.instance.arrow = this.arrow;\n this.instance.offset = this.offset;\n this.instance.detectChanges();\n this.updatePosition(true);\n }\n\n closingActions() {\n return merge(\n this.hasClickInTrigger ? this.overlayRef!.outsidePointerEvents() : EMPTY,\n this.overlayRef!.detachments()\n );\n }\n\n getOverlayHandleComponentType(): Type<KbqTooltipComponent> {\n return KbqTooltipComponent;\n }\n\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) {\n return;\n }\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], `${this.customClass} ${this.color}`, {\n modifier: this.modifier\n });\n this.instance.markForCheck();\n }\n\n protected applyRelativeToPointer() {\n if (\n !this.strategy ||\n ![PopUpPlacements.Top, PopUpPlacements.Bottom].includes(this.placement as PopUpPlacements) ||\n this.triggerName !== 'mouseenter'\n ) {\n this.resetOrigin();\n\n return;\n }\n\n const triggerRects = this.getNativeElement().getBoundingClientRect();\n const point: Point = { x: 0, y: 0 };\n\n this.placementPriority = null;\n\n if (this.placement === PopUpPlacements.Top) {\n point.x = this.mouseEvent!.x;\n point.y = triggerRects.y;\n } else if (this.placement === PopUpPlacements.Bottom) {\n point.x = this.mouseEvent!.x;\n point.y = triggerRects.y + triggerRects.height;\n }\n\n this.strategy.setOrigin(point);\n }\n}\n","<div\n #tooltip\n class=\"kbq-tooltip\"\n [class.kbq-tooltip_arrowless]=\"!arrow\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-tooltip__inner\">\n @if (arrow) {\n <div class=\"kbq-tooltip__arrow\"></div>\n }\n\n @if (header) {\n <div class=\"kbq-tooltip__header\">\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ header }}</div>\n }\n </div>\n }\n <div class=\"kbq-tooltip__content\">\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport {\n KBQ_TOOLTIP_OPEN_TIME_PROVIDER,\n KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqTooltipComponent,\n KbqTooltipTrigger\n} from './tooltip.component';\n\nconst COMPONENTS = [\n KbqTooltipComponent,\n KbqTooltipTrigger\n];\n\n@NgModule({\n imports: COMPONENTS,\n providers: [\n KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KBQ_TOOLTIP_OPEN_TIME_PROVIDER\n ],\n exports: COMPONENTS\n})\nexport class KbqToolTipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-tooltip.mjs","sources":["../../../packages/components/tooltip/tooltip-registry.ts","../../../packages/components/tooltip/tooltip.animations.ts","../../../packages/components/tooltip/tooltip.component.ts","../../../packages/components/tooltip/tooltip.component.html","../../../packages/components/tooltip/tooltip.module.ts","../../../packages/components/tooltip/koobiq-components-tooltip.ts"],"sourcesContent":["import { Injectable, InjectionToken } from '@angular/core';\n\n/**\n * Default value of the `kbqTooltipSingleInstance` input. Provide `false` at the application level to\n * globally disable the \"only one tooltip is visible at a time\" behavior.\n */\nexport const KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT = new InjectionToken<boolean>('KbqTooltipSingleInstanceDefault', {\n providedIn: 'root',\n factory: () => true\n});\n\n/**\n * Contract of a tooltip taking part in the \"only one tooltip is visible at a time\" group.\n * @docs-private\n */\nexport interface KbqExclusiveTooltip {\n /** Hides the tooltip because another one has taken its place. */\n hideAsInactive(): void;\n}\n\n/**\n * Keeps track of the single tooltip that is currently visible, so that showing a new one hides the\n * previous. Holds the *trigger*, not the overlay component — the latter is re-created on every show.\n */\n@Injectable({ providedIn: 'root' })\nexport class KbqTooltipRegistry {\n /** Tooltip that currently owns the screen, or `null` when nothing is visible. */\n private visibleTooltip: KbqExclusiveTooltip | null = null;\n\n /** Marks the tooltip as the only visible one, hiding the previously visible tooltip. */\n setVisible(tooltip: KbqExclusiveTooltip): void {\n if (this.visibleTooltip && this.visibleTooltip !== tooltip) {\n this.visibleTooltip.hideAsInactive();\n }\n\n this.visibleTooltip = tooltip;\n }\n\n /**\n * Clears the registry, but only when the given tooltip is still the registered one. The guard\n * matters because hiding the previous tooltip is asynchronous: its `visibleChange(false)` arrives\n * after the new tooltip has already been registered, and must not wipe that newer entry.\n */\n clearVisible(tooltip: KbqExclusiveTooltip): void {\n if (this.visibleTooltip === tooltip) {\n this.visibleTooltip = null;\n }\n }\n}\n","import { animate, AnimationTriggerMetadata, keyframes, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Animations used by KbqTooltip.\n * @docs-private\n */\nexport const kbqTooltipAnimations: {\n readonly tooltipState: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n tooltipState: trigger('state', [\n state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0)' })),\n state('visible', style({ transform: 'scale(0.99)' })),\n transition(\n '* => visible',\n animate(\n '200ms cubic-bezier(0, 0, 0.2, 1)',\n keyframes([\n style({ opacity: 0, transform: 'scale(0)', offset: 0 }),\n style({ opacity: 0.5, transform: 'scale(0.9)', offset: 0.5 }),\n style({ opacity: 1, transform: 'scale(0.99)', offset: 1 })\n ])\n )\n ),\n transition('* => hidden', animate('100ms cubic-bezier(0, 0, 0.2, 1)', style({ opacity: 0 })))\n ])\n};\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Point } from '@angular/cdk/drag-drop';\nimport { Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n booleanAttribute,\n effect,\n inject,\n input,\n numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n KBQ_PARENT_POPUP,\n KbqComponentColors,\n KbqParentPopup,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpTrigger,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpTriggers,\n applyPopupMargins\n} from '@koobiq/components/core';\nimport { EMPTY, merge } from 'rxjs';\nimport { KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT, KbqExclusiveTooltip, KbqTooltipRegistry } from './tooltip-registry';\nimport { kbqTooltipAnimations } from './tooltip.animations';\n\nexport enum TooltipModifier {\n Default = 'default',\n Warning = 'warning',\n Extended = 'extended'\n}\n\nexport const KBQ_TOOLTIP_OPEN_TIME = new InjectionToken<{ value: number }>('kbq-tooltip-open-time');\n\n/** @docs-private */\nexport const KBQ_TOOLTIP_OPEN_TIME_PROVIDER = {\n provide: KBQ_TOOLTIP_OPEN_TIME,\n useValue: { value: 0 }\n};\n\nexport const MIN_TIME_FOR_DELAY = 2000;\n\n@Component({\n selector: 'kbq-tooltip-component',\n imports: [\n NgTemplateOutlet\n ],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.scss', './tooltip-tokens.scss'],\n providers: [KBQ_TOOLTIP_OPEN_TIME_PROVIDER],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [kbqTooltipAnimations.tooltipState]\n})\nexport class KbqTooltipComponent extends KbqPopUp {\n private openTime = inject(KBQ_TOOLTIP_OPEN_TIME);\n\n prefix = 'kbq-tooltip';\n\n @ViewChild('tooltip') elementRef: ElementRef;\n\n show(delay: number) {\n if (!this.content) {\n return;\n }\n\n super.show(Date.now() - this.openTime.value < MIN_TIME_FOR_DELAY ? 0 : delay);\n\n if (this.offset !== null) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n }\n\n this.openTime.value = Date.now();\n }\n\n updateClassMap(placement: string, customClass: string, { modifier }) {\n const classMap = {\n [`${this.prefix}_${modifier}`]: true\n };\n\n super.updateClassMap(placement, customClass, classMap);\n }\n}\n\n/**\n * Triggers that make a tooltip part of the \"only one tooltip is visible at a time\" group.\n *\n * Values that match none of them (`manual`, `none`, …) bind no listeners at all — that is how the\n * imperatively driven validation tooltips are configured, and they are expected to stay pinned while\n * the user keeps interacting elsewhere.\n */\nconst INTERACTIVE_TRIGGERS = [\n PopUpTriggers.Hover,\n PopUpTriggers.Focus,\n PopUpTriggers.Click,\n PopUpTriggers.Keydown\n];\n\nexport const KBQ_TOOLTIP_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('kbq-tooltip-scroll-strategy');\n\n/** @docs-private */\nexport function kbqTooltipScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.close();\n}\n\n/** @docs-private */\nexport const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqTooltipScrollStrategyFactory\n};\n\n/**\n * Trigger directive that shows a `KbqTooltipComponent` for its host element. Extends `KbqPopUpTrigger` with\n * tooltip-specific inputs (content, placement, color, arrow, enter/leave delays, modifier and header) and\n * behavior such as opening on keyboard focus only and positioning relative to the mouse cursor.\n */\n@Directive({\n selector: '[kbqTooltip]',\n host: {\n '[class.kbq-tooltip_open]': 'isOpen',\n\n '(keydown)': 'keydownHandler($event)',\n '(touchend)': 'touchendHandler()'\n },\n exportAs: 'kbqTooltip'\n})\nexport class KbqTooltipTrigger\n extends KbqPopUpTrigger<KbqTooltipComponent>\n implements AfterViewInit, OnChanges, OnDestroy, KbqExclusiveTooltip\n{\n /** Registry holding the single tooltip that is currently visible. */\n private readonly tooltipRegistry = inject(KbqTooltipRegistry);\n\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_TOOLTIP_SCROLL_STRATEGY);\n /** @docs-private */\n protected parentPopup = inject<KbqParentPopup>(KBQ_PARENT_POPUP, { optional: true });\n /** @docs-private */\n protected focusMonitor: FocusMonitor = inject(FocusMonitor);\n /** @docs-private */\n protected renderer: Renderer2 = inject(Renderer2);\n\n /**\n * Input for controlling the disabled state of a component.\n *\n * The input expects a component containing `disabledSignal` property, which is\n * a writable signal emitting boolean values.\n */\n readonly forDisabledComponent = input<Record<'disabledSignal', WritableSignal<boolean>>>();\n\n /**\n * Determines whether pointer events should be ignored on tooltips.\n *\n * When set to `true`, tooltip elements will not receive pointer events,\n * allowing interactions to pass through to underlying elements.\n * Defaults to `true`.\n */\n readonly ignoreTooltipPointerEvents = input<boolean>(true);\n\n /**\n * Whether the tooltip takes part in the \"only one tooltip is visible at a time\" group: showing it\n * hides the previously visible tooltip, and it is hidden when another tooltip is shown.\n *\n * Defaults to `true`; the default can be changed application-wide with the\n * `KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT` token.\n *\n * Tooltips without an interactive `kbqTrigger` (`manual`, `none`, …) never take part in the group,\n * regardless of this input — they are shown imperatively and are expected to stay pinned.\n */\n readonly singleInstance = input<boolean, unknown>(inject(KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT), {\n alias: 'kbqTooltipSingleInstance',\n transform: booleanAttribute\n });\n\n /**\n * Changes hiding behavior. By default, tooltip is hidden on mouseleave from trigger.\n * Setting hideWithTimeout to true will delay tooltip hiding and will not hide when the mouse moves from trigger\n * to tooltip.\n */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input({ transform: booleanAttribute }) hideWithTimeout: boolean = false;\n\n /** Input (`kbqVisible`) that programmatically shows or hides the tooltip; reflects the current `visible` state. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqVisible')\n get tooltipVisible(): boolean {\n return this.visible;\n }\n\n set tooltipVisible(value: boolean) {\n super.updateVisible(value);\n }\n\n /** Input (`kbqPlacement`) that sets the tooltip placement relative to its trigger; reflects the current `placement`. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqPlacement')\n get tooltipPlacement(): KbqPopUpPlacementValues {\n return this.placement;\n }\n\n set tooltipPlacement(value: KbqPopUpPlacementValues) {\n super.updatePlacement(value);\n }\n\n /**\n * Positions the tooltip relative to the mouse cursor. Only available for top and bottom kbqPlacement.\n * Does not work with kbqPlacementPriority.\n */\n // TODO: Skipped for migration because:\n // Class of this input is manually instantiated. This is discouraged and prevents\n // migration.\n @Input({ alias: 'kbqRelativeToPointer', transform: booleanAttribute }) relativeToPointer: boolean = false;\n\n /** Input (`kbqPlacementPriority`) that sets the ordered fallback placements; reflects the current `placementPriority`. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqPlacementPriority')\n get tooltipPlacementPriority() {\n return this.placementPriority;\n }\n\n set tooltipPlacementPriority(value) {\n super.updatePlacementPriority(value);\n }\n\n /** Input (`kbqTooltip`) with the tooltip content — a string or a template. Updating it refreshes an open tooltip. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltip')\n get content(): string | TemplateRef<any> {\n return this._content;\n }\n\n set content(content: string | TemplateRef<any>) {\n this._content = content;\n\n this.updateData();\n }\n\n /** Input (`kbqTooltipDisabled`) controlling whether the tooltip is disabled; setting it to `true` hides it. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /** Input (`kbqEnterDelay`) — delay in milliseconds before the tooltip is shown. Defaults to `400`. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input('kbqEnterDelay') enterDelay = 400;\n /** Input (`kbqLeaveDelay`) — delay in milliseconds before the tooltip is hidden. Defaults to `0`. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input('kbqLeaveDelay') leaveDelay = 0;\n\n /** Input (`kbqTrigger`) with the comma-separated trigger events. An empty value resets to hover + focus and rebinds listeners. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTrigger')\n get trigger(): string {\n return this._trigger;\n }\n\n set trigger(value: string) {\n if (value) {\n this._trigger = value;\n } else {\n this._trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;\n }\n\n this.initListeners();\n }\n\n /** Backing field for `trigger`; defaults to hover + focus. */\n protected _trigger = `${PopUpTriggers.Hover}, ${PopUpTriggers.Focus}`;\n\n /** Input (`kbqTooltipClass`) with an extra CSS class applied to the tooltip; updating it refreshes the class map. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipClass')\n get customClass(): string {\n return this._customClass || '';\n }\n\n set customClass(value: string) {\n if (value) {\n this._customClass = value;\n\n this.updateClassMap();\n } else {\n this._customClass = '';\n }\n }\n\n /** Input (`kbqTooltipContext`) with the context object passed to a template tooltip; updating it refreshes the open tooltip. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipContext')\n get context() {\n return this._context;\n }\n\n set context(ctx) {\n this._context = ctx;\n this.updateData();\n }\n\n /** Backing field for `context`. */\n private _context: any = null;\n\n /** Input (`kbqTooltipColor`) with the tooltip color theme; the getter returns the `kbq-`-prefixed CSS class. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipColor')\n get color(): string {\n return `kbq-${this._color}`;\n }\n\n set color(value: KbqComponentColors | string) {\n this._color = value || KbqComponentColors.Contrast;\n }\n\n /** Backing field for `color`; defaults to `KbqComponentColors.Contrast`. */\n private _color: KbqComponentColors | string = KbqComponentColors.Contrast;\n\n /** Input (`kbqTooltipArrow`) — whether to render the tooltip's arrow/pointer. Defaults to `false`. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ alias: 'kbqTooltipArrow', transform: booleanAttribute }) arrow: boolean = false;\n /** Input (`kbqTooltipOffset`) — distance in pixels between the tooltip and its trigger; `null` uses the default. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ alias: 'kbqTooltipOffset', transform: numberAttribute }) offset: number | null = null;\n\n /** Output (`kbqPlacementChange`) that emits the new placement whenever the tooltip repositions. */\n @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n /** Output (`kbqVisibleChange`) that emits when the tooltip's visibility changes. */\n @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n /** Whether the configured trigger list includes the `click` trigger. */\n private get hasClickInTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /** @docs-private */\n protected originSelector = '.kbq-tooltip';\n\n /** @docs-private */\n protected overlayConfig: OverlayConfig = {\n panelClass: ['kbq-tooltip-panel']\n };\n\n /**\n * Visual variant of the tooltip. Accepts `'default'` | `'warning'` | `'extended'`.\n * Replaces the removed `KbqWarningTooltipTrigger` and `KbqExtendedTooltipTrigger`\n * subclasses — to render a warning tooltip use `kbqTooltipModifier=\"warning\"`,\n * and `kbqTooltipModifier=\"extended\"` for the extended variant (combine with `kbqTooltipHeader`).\n */\n // TODO: Skipped for migration because:\n // Class of this input is manually instantiated. This is discouraged and prevents\n // migration.\n @Input('kbqTooltipModifier') modifier: TooltipModifier | `${TooltipModifier}` = TooltipModifier.Default;\n\n /**\n * Header text or template, rendered above the tooltip content. Only meaningful with\n * `kbqTooltipModifier=\"extended\"`. Replaces the removed `KbqExtendedTooltipTrigger.header`.\n */\n // TODO: Skipped for migration because:\n // Class of this input is manually instantiated. This is discouraged and prevents\n // migration.\n @Input('kbqTooltipHeader') header: string | TemplateRef<any>;\n\n /**\n * The old `KbqWarningTooltipTrigger` / `KbqExtendedTooltipTrigger` subclasses had\n * setters on their content/header inputs that pushed updates into the open tooltip.\n * Now that `modifier` and `header` are plain `@Input` fields on this base class,\n * we need to mirror that reactivity manually — without it, changing the inputs\n * while a tooltip is open silently leaves the overlay showing stale data until\n * the next show/hide cycle.\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.instance) return;\n\n if (changes.modifier && !changes.modifier.firstChange) {\n this.updateClassMap();\n }\n\n if (changes.header && !changes.header.firstChange) {\n this.updateData();\n }\n }\n\n /**\n * Whether this tooltip takes part in the \"only one tooltip is visible at a time\" group.\n *\n * Read through the `trigger` getter on purpose: `KbqTitleDirective` always reports `hover`, so title\n * tooltips participate, while `kbqValidationTooltip` consumers (datepicker, timepicker, inline-edit)\n * assign `trigger = 'manual'` and therefore stay out of the group.\n */\n private get participatesInSingleInstance(): boolean {\n return this.singleInstance() && INTERACTIVE_TRIGGERS.some((name) => this.trigger.includes(name));\n }\n\n /**\n * Sets up an effect that mirrors a `forDisabledComponent`'s disabled signal: when that component is disabled it\n * makes the host focusable (so the tooltip can still be triggered) and enables the tooltip, otherwise disables it.\n *\n * Also joins the \"only one tooltip is visible at a time\" group. Both the subscription and the teardown live\n * here rather than in `ngAfterViewInit`/`ngOnDestroy` because several subclasses override those hooks:\n * `KbqTitleDirective` and `KbqEllipsisCenterDirective` skip `super.ngAfterViewInit()`, and `KbqPasswordToggle`\n * skips `super` in both hooks entirely. `destroyRef` additionally covers a trigger destroyed while its\n * tooltip is still visible — that path disposes the overlay without emitting `visibleChange(false)`.\n */\n constructor() {\n super();\n\n this.visibleChange.pipe(takeUntilDestroyed()).subscribe((visible) => {\n if (visible) {\n if (this.participatesInSingleInstance) {\n this.tooltipRegistry.setVisible(this);\n }\n } else {\n this.tooltipRegistry.clearVisible(this);\n }\n });\n\n this.destroyRef.onDestroy(() => this.tooltipRegistry.clearVisible(this));\n\n effect(() => {\n if (!this.forDisabledComponent()) return;\n\n const disabled = this.forDisabledComponent()!.disabledSignal();\n\n if (disabled) {\n this.renderer.setAttribute(this.getNativeElement(), 'tabindex', '0');\n this.renderer.setStyle(this.getNativeElement(), 'outline-color', 'var(--kbq-states-line-focus-theme)');\n } else {\n this.renderer.setAttribute(this.getNativeElement(), 'tabindex', '-1');\n }\n\n this.disabled = !disabled;\n });\n }\n\n /**\n * Hides the tooltip when a parent pop-up closes, starts focus monitoring on the host, and—when\n * `ignoreTooltipPointerEvents` is set—adds the panel class that makes the tooltip ignore pointer events.\n */\n ngAfterViewInit(): void {\n this.parentPopup?.closedStream.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.hide());\n\n this.focusMonitor.monitor(this.elementRef.nativeElement);\n\n if (this.ignoreTooltipPointerEvents() && Array.isArray(this.overlayConfig.panelClass)) {\n this.overlayConfig.panelClass.push('cdk-overlay-pane_ignore-pointer-events');\n }\n }\n\n /** Stops focus monitoring on the host element and runs the base-class teardown. */\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n\n super.ngOnDestroy();\n }\n\n /**\n * Shows the tooltip after `delay` ms. Suppresses showing on a focus trigger that did not originate from\n * the keyboard, and applies cursor-relative positioning when `relativeToPointer` is enabled.\n */\n show(delay: number = this.enterDelay) {\n if (this.triggerName === 'focus' && this.focusMonitor['_lastFocusOrigin'] !== 'keyboard') {\n return;\n }\n\n super.show(delay);\n\n if (this.relativeToPointer) {\n this.applyRelativeToPointer();\n }\n }\n\n /**\n * Hides the tooltip because another tooltip became visible.\n *\n * Goes straight to the pop-up instead of `hide()`: `hide()` silently no-ops when the last recorded\n * `triggerName` is `mouseleave` and the pop-up itself is hovered. Hiding through the instance keeps\n * `visibleChange(false)` firing, so `isOpen`, `kbqVisibleChange` and the `kbqVisible` input stay in sync.\n * Does nothing when the tooltip is already detached or when closing is prevented.\n * @docs-private */\n hideAsInactive(): void {\n if (this.preventClose) return;\n\n this.ngZone.run(() => this.instance?.hide(0));\n }\n\n /** method allows to show the tooltip relative to the given mouse event.\n * @docs-private */\n showForMouseEvent(event: MouseEvent) {\n if (!(event.currentTarget instanceof HTMLElement)) return;\n\n this.triggerName = 'mouseenter';\n this.mouseEvent = event;\n this.setExternalNativeElement(event.currentTarget);\n\n super.show();\n\n this.applyRelativeToPointer();\n }\n\n /**\n * method allows to show the tooltip relative to the element\n * Use this approach when it is not possible to define a trigger in the template.\n *\n * For example:\n * const tooltip = new KbqTooltipTrigger();\n * tooltip.showForElement(element);\n * @docs-private */\n showForElement(element: HTMLElement) {\n this.show();\n this.strategy.setOrigin(element);\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) {\n return;\n }\n\n this.instance.content = this.content;\n this.instance.header = this.header;\n this.instance.context = this.context && { $implicit: this.context };\n this.instance.arrow = this.arrow;\n this.instance.offset = this.offset;\n this.instance.detectChanges();\n this.updatePosition(true);\n }\n\n /** @docs-private */\n closingActions() {\n return merge(\n this.hasClickInTrigger ? this.overlayRef!.outsidePointerEvents() : EMPTY,\n this.overlayRef!.detachments()\n );\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqTooltipComponent> {\n return KbqTooltipComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) {\n return;\n }\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], `${this.customClass} ${this.color}`, {\n modifier: this.modifier\n });\n this.instance.markForCheck();\n }\n\n /** @docs-private */\n protected applyRelativeToPointer() {\n if (\n !this.strategy ||\n ![PopUpPlacements.Top, PopUpPlacements.Bottom].includes(this.placement as PopUpPlacements) ||\n this.triggerName !== 'mouseenter'\n ) {\n this.resetOrigin();\n\n return;\n }\n\n const triggerRects = this.getNativeElement().getBoundingClientRect();\n const point: Point = { x: 0, y: 0 };\n\n this.placementPriority = null;\n\n if (this.placement === PopUpPlacements.Top) {\n point.x = this.mouseEvent!.x;\n point.y = triggerRects.y;\n } else if (this.placement === PopUpPlacements.Bottom) {\n point.x = this.mouseEvent!.x;\n point.y = triggerRects.y + triggerRects.height;\n }\n\n this.strategy.setOrigin(point);\n }\n}\n","<div\n #tooltip\n class=\"kbq-tooltip\"\n [class.kbq-tooltip_arrowless]=\"!arrow\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-tooltip__inner\">\n @if (arrow) {\n <div class=\"kbq-tooltip__arrow\"></div>\n }\n\n @if (header) {\n <div class=\"kbq-tooltip__header\">\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ header }}</div>\n }\n </div>\n }\n <div class=\"kbq-tooltip__content\">\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport {\n KBQ_TOOLTIP_OPEN_TIME_PROVIDER,\n KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqTooltipComponent,\n KbqTooltipTrigger\n} from './tooltip.component';\n\nconst COMPONENTS = [\n KbqTooltipComponent,\n KbqTooltipTrigger\n];\n\n@NgModule({\n imports: COMPONENTS,\n providers: [\n KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KBQ_TOOLTIP_OPEN_TIME_PROVIDER\n ],\n exports: COMPONENTS\n})\nexport class KbqToolTipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|