@ngneat/helipopper 12.1.2 → 13.0.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/README.md +59 -2
- package/fesm2022/ngneat-helipopper-config.mjs +1 -1
- package/fesm2022/ngneat-helipopper-config.mjs.map +1 -1
- package/fesm2022/ngneat-helipopper.mjs +200 -191
- package/fesm2022/ngneat-helipopper.mjs.map +1 -1
- package/package.json +8 -7
- package/{config/index.d.ts → types/ngneat-helipopper-config.d.ts} +1 -1
- package/{index.d.ts → types/ngneat-helipopper.d.ts} +14 -6
package/README.md
CHANGED
|
@@ -35,6 +35,8 @@ If you're using v1 and don't want to migrate, you can find it [here](https://git
|
|
|
35
35
|
✅ Manual Trigger Support<br>
|
|
36
36
|
✅ Text Overflow Support<br>
|
|
37
37
|
✅ Context Menu Support<br>
|
|
38
|
+
✅ Component Bindings via `inputBinding` / `outputBinding` / `twoWayBinding`<br>
|
|
39
|
+
✅ Global Enable / Disable All<br>
|
|
38
40
|
|
|
39
41
|
### Installation
|
|
40
42
|
|
|
@@ -142,6 +144,40 @@ class MyComponent {
|
|
|
142
144
|
<button [tp]="MyComponent">Click Me</button>
|
|
143
145
|
```
|
|
144
146
|
|
|
147
|
+
### Component Bindings
|
|
148
|
+
|
|
149
|
+
Pass reactive Angular bindings (`inputBinding`, `outputBinding`, `twoWayBinding`) to a dynamically created component using the `tpBindings` input:
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
import { inputBinding, signal } from '@angular/core';
|
|
153
|
+
import { MyPopoverComponent } from './my-popover.component';
|
|
154
|
+
|
|
155
|
+
@Component({})
|
|
156
|
+
class HostComponent {
|
|
157
|
+
component = MyPopoverComponent;
|
|
158
|
+
readonly greeting = signal('Hello!');
|
|
159
|
+
readonly bindings = [
|
|
160
|
+
inputBinding('greeting', () => this.greeting()),
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
```html
|
|
166
|
+
<button [tp]="component" tpVariation="popper" [tpBindings]="bindings">Open</button>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The same `bindings` option is available when creating a tooltip programmatically via `TippyService`:
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
import { inputBinding } from '@angular/core';
|
|
173
|
+
|
|
174
|
+
this.tippyService.create(host, MyPopoverComponent, {
|
|
175
|
+
bindings: [inputBinding('greeting', () => this.greeting())],
|
|
176
|
+
}).subscribe((instance) => { ... });
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Host directives can be applied the same way using `tpDirectives` / `directives`.
|
|
180
|
+
|
|
145
181
|
### Text Overflow
|
|
146
182
|
|
|
147
183
|
You can pass the `onlyTextOverflow` input to show the tooltip only when the host overflows its container:
|
|
@@ -293,13 +329,14 @@ tpIsEnabled: boolean;
|
|
|
293
329
|
tpIsVisible: boolean;
|
|
294
330
|
tpClassName: string;
|
|
295
331
|
tpOnlyTextOverflow: boolean;
|
|
332
|
+
tpStaticWidthHost: boolean;
|
|
296
333
|
tpData: any;
|
|
297
334
|
tpUseHostWidth: boolean;
|
|
298
335
|
tpHideOnEscape: boolean;
|
|
299
|
-
tpDetectChangesComponent: boolean;
|
|
300
336
|
tpPopperWidth: number | string;
|
|
301
337
|
tpHost: HTMLElement;
|
|
302
|
-
|
|
338
|
+
tpBindings: Binding[]; // inputBinding / outputBinding / twoWayBinding descriptors
|
|
339
|
+
tpDirectives: DirectiveWithBindings[]; // host directives with optional bindings
|
|
303
340
|
```
|
|
304
341
|
|
|
305
342
|
### Outputs
|
|
@@ -340,6 +377,26 @@ class Component {
|
|
|
340
377
|
}
|
|
341
378
|
```
|
|
342
379
|
|
|
380
|
+
### Enable / Disable All Tooltips
|
|
381
|
+
|
|
382
|
+
`TippyService` exposes `enableAll()` and `disableAll()` methods that globally enable or disable every tooltip managed by the service:
|
|
383
|
+
|
|
384
|
+
```ts
|
|
385
|
+
class MyComponent {
|
|
386
|
+
private tippyService = inject(TippyService);
|
|
387
|
+
|
|
388
|
+
disableTooltips() {
|
|
389
|
+
this.tippyService.disableAll();
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
enableTooltips() {
|
|
393
|
+
this.tippyService.enableAll();
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Tooltips that were individually disabled via `[tpIsEnabled]="false"` are not re-enabled by `enableAll()`.
|
|
399
|
+
|
|
343
400
|
## Contributors ✨
|
|
344
401
|
|
|
345
402
|
Thank goes to all these wonderful [people who contributed](https://github.com/ngneat/helipopper/graphs/contributors) ❤️
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngneat-helipopper-config.mjs","sources":["../../../../projects/ngneat/helipopper/config/src/defaults.ts","../../../../projects/ngneat/helipopper/config/src/tippy.types.ts","../../../../projects/ngneat/helipopper/config/src/providers.ts","../../../../projects/ngneat/helipopper/config/src/ngneat-helipopper-config.ts"],"sourcesContent":["import type { TippyProps } from './tippy.types';\n\n// A variation is a set of predefined tippy properties.\ntype Variation = Partial<TippyProps>;\n\nexport const tooltipVariation: Variation = {\n theme: undefined,\n arrow: false,\n animation: 'scale',\n trigger: 'mouseenter',\n offset: [0, 5],\n};\n\nexport const popperVariation: Variation = {\n theme: 'light',\n arrow: true,\n offset: [0, 10],\n animation: undefined,\n trigger: 'click',\n interactive: true,\n};\n\nexport function withContextMenuVariation(baseVariation: Variation): Variation {\n return {\n ...baseVariation,\n placement: 'right-start',\n trigger: 'manual',\n arrow: false,\n offset: [0, 0],\n };\n}\n","import type tippy from 'tippy.js';\nimport type { Instance, Props } from 'tippy.js';\nimport { ElementRef, InjectionToken } from '@angular/core';\nimport type { ResolveViewRef, ViewOptions } from '@ngneat/overview';\n\nexport interface CreateOptions extends Partial<TippyProps>, ViewOptions {\n variation: string;\n preserveView: boolean;\n className: string | string[];\n data: any;\n}\n\nexport interface TippyInstance extends Instance {\n data?: any;\n}\n\nexport type TippyProps = Props;\n\nexport interface ExtendedTippyProps extends TippyProps {\n variations: Record<string, Partial<TippyProps>>;\n defaultVariation: keyof ExtendedTippyProps['variations'];\n beforeRender?: (text: string) => string;\n zIndexGetter?(): number;\n}\n\nexport type TippyElement = ElementRef | Element;\n\nexport interface ExtendedTippyInstance<T> extends TippyInstance {\n view: ResolveViewRef<T> | null;\n $viewOptions: ViewOptions;\n context?: ViewOptions['context'];\n}\n\nexport type TippyConfig = Partial<ExtendedTippyProps>;\n\nexport type TippyLoader = () => typeof tippy | Promise<{ default: typeof tippy }>;\n\nexport const TIPPY_LOADER = new InjectionToken<TippyLoader>(\n ngDevMode ? 'TIPPY_LOADER' : '',\n);\n\nexport const TIPPY_CONFIG = new InjectionToken<TippyConfig>(\n ngDevMode ? 'TIPPY_CONFIG' : '',\n);\n","import { makeEnvironmentProviders, type Provider } from '@angular/core';\n\nimport {\n TIPPY_CONFIG,\n TIPPY_LOADER,\n type TippyLoader,\n type TippyConfig,\n} from './tippy.types';\n\nexport function provideTippyLoader(loader: TippyLoader) {\n return makeEnvironmentProviders([{ provide: TIPPY_LOADER, useValue: loader }]);\n}\n\nexport function provideTippyConfig(config: TippyConfig): Provider {\n return { provide: TIPPY_CONFIG, useValue: config };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAKO,MAAM,gBAAgB,GAAc;AACzC,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ngneat-helipopper-config.mjs","sources":["../../../../projects/ngneat/helipopper/config/src/defaults.ts","../../../../projects/ngneat/helipopper/config/src/tippy.types.ts","../../../../projects/ngneat/helipopper/config/src/providers.ts","../../../../projects/ngneat/helipopper/config/src/ngneat-helipopper-config.ts"],"sourcesContent":["import type { TippyProps } from './tippy.types';\n\n// A variation is a set of predefined tippy properties.\ntype Variation = Partial<TippyProps>;\n\nexport const tooltipVariation: Variation = {\n theme: undefined,\n arrow: false,\n animation: 'scale',\n trigger: 'mouseenter focus',\n offset: [0, 5],\n};\n\nexport const popperVariation: Variation = {\n theme: 'light',\n arrow: true,\n offset: [0, 10],\n animation: undefined,\n trigger: 'click',\n interactive: true,\n};\n\nexport function withContextMenuVariation(baseVariation: Variation): Variation {\n return {\n ...baseVariation,\n placement: 'right-start',\n trigger: 'manual',\n arrow: false,\n offset: [0, 0],\n };\n}\n","import type tippy from 'tippy.js';\nimport type { Instance, Props } from 'tippy.js';\nimport { ElementRef, InjectionToken } from '@angular/core';\nimport type { ResolveViewRef, ViewOptions } from '@ngneat/overview';\n\nexport interface CreateOptions extends Partial<TippyProps>, ViewOptions {\n variation: string;\n preserveView: boolean;\n className: string | string[];\n data: any;\n}\n\nexport interface TippyInstance extends Instance {\n data?: any;\n}\n\nexport type TippyProps = Props;\n\nexport interface ExtendedTippyProps extends TippyProps {\n variations: Record<string, Partial<TippyProps>>;\n defaultVariation: keyof ExtendedTippyProps['variations'];\n beforeRender?: (text: string) => string;\n zIndexGetter?(): number;\n}\n\nexport type TippyElement = ElementRef | Element;\n\nexport interface ExtendedTippyInstance<T> extends TippyInstance {\n view: ResolveViewRef<T> | null;\n $viewOptions: ViewOptions;\n context?: ViewOptions['context'];\n}\n\nexport type TippyConfig = Partial<ExtendedTippyProps>;\n\nexport type TippyLoader = () => typeof tippy | Promise<{ default: typeof tippy }>;\n\nexport const TIPPY_LOADER = new InjectionToken<TippyLoader>(\n ngDevMode ? 'TIPPY_LOADER' : '',\n);\n\nexport const TIPPY_CONFIG = new InjectionToken<TippyConfig>(\n ngDevMode ? 'TIPPY_CONFIG' : '',\n);\n","import { makeEnvironmentProviders, type Provider } from '@angular/core';\n\nimport {\n TIPPY_CONFIG,\n TIPPY_LOADER,\n type TippyLoader,\n type TippyConfig,\n} from './tippy.types';\n\nexport function provideTippyLoader(loader: TippyLoader) {\n return makeEnvironmentProviders([{ provide: TIPPY_LOADER, useValue: loader }]);\n}\n\nexport function provideTippyConfig(config: TippyConfig): Provider {\n return { provide: TIPPY_CONFIG, useValue: config };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAKO,MAAM,gBAAgB,GAAc;AACzC,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGT,MAAM,eAAe,GAAc;AACxC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACf,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,WAAW,EAAE,IAAI;;AAGb,SAAU,wBAAwB,CAAC,aAAwB,EAAA;IAC/D,OAAO;AACL,QAAA,GAAG,aAAa;AAChB,QAAA,SAAS,EAAE,aAAa;AACxB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KACf;AACH;;ACOO,MAAM,YAAY,GAAG,IAAI,cAAc,CAC5C,SAAS,GAAG,cAAc,GAAG,EAAE;AAG1B,MAAM,YAAY,GAAG,IAAI,cAAc,CAC5C,SAAS,GAAG,cAAc,GAAG,EAAE;;ACjC3B,SAAU,kBAAkB,CAAC,MAAmB,EAAA;AACpD,IAAA,OAAO,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF;AAEM,SAAU,kBAAkB,CAAC,MAAmB,EAAA;IACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE;AACpD;;ACfA;;AAEG;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { ElementRef, inject, NgZone, ɵisPromise as _isPromise, Injectable,
|
|
2
|
+
import { ElementRef, inject, NgZone, ɵisPromise as _isPromise, Injectable, InjectionToken, Injector, signal, booleanAttribute, input, output, model, computed, DestroyRef, PLATFORM_ID, ViewContainerRef, afterEveryRender, untracked, effect, Directive } from '@angular/core';
|
|
3
3
|
import { isPlatformServer } from '@angular/common';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { Observable, defer, of, tap, map as map$1, Subject, merge } from 'rxjs';
|
|
6
6
|
import { auditTime, map, switchMap, takeUntil } from 'rxjs/operators';
|
|
7
|
-
import { ViewService,
|
|
7
|
+
import { ViewService, isTemplateRef, isComponent, isString } from '@ngneat/overview';
|
|
8
8
|
import { TIPPY_LOADER, TIPPY_CONFIG } from '@ngneat/helipopper/config';
|
|
9
9
|
|
|
10
10
|
// Let's retrieve the native `IntersectionObserver` implementation hidden by
|
|
@@ -47,10 +47,12 @@ function inView(host, options = {
|
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
function isElementOverflow(host) {
|
|
50
|
-
// Don't access the `offsetWidth` multiple times since it triggers layout updates.
|
|
50
|
+
// Don't access the `offsetWidth`/`offsetHeight` multiple times since it triggers layout updates.
|
|
51
51
|
const hostOffsetWidth = host.offsetWidth;
|
|
52
|
+
const hostOffsetHeight = host.offsetHeight;
|
|
52
53
|
return (hostOffsetWidth > host.parentElement.offsetWidth ||
|
|
53
|
-
hostOffsetWidth < host.scrollWidth
|
|
54
|
+
hostOffsetWidth < host.scrollWidth ||
|
|
55
|
+
hostOffsetHeight < host.scrollHeight);
|
|
54
56
|
}
|
|
55
57
|
function overflowChanges(host) {
|
|
56
58
|
const element = coerceElement(host);
|
|
@@ -63,7 +65,7 @@ function dimensionsChanges(target) {
|
|
|
63
65
|
subscriber.complete();
|
|
64
66
|
return;
|
|
65
67
|
}
|
|
66
|
-
const observer = new ResizeObserver(() => subscriber.next(
|
|
68
|
+
const observer = new ResizeObserver(() => subscriber.next());
|
|
67
69
|
observer.observe(target);
|
|
68
70
|
return () => observer.disconnect();
|
|
69
71
|
});
|
|
@@ -95,6 +97,8 @@ function onlyTippyProps(allProps) {
|
|
|
95
97
|
'popperWidth',
|
|
96
98
|
'zIndexGetter',
|
|
97
99
|
'staticWidthHost',
|
|
100
|
+
'bindings',
|
|
101
|
+
'directives',
|
|
98
102
|
];
|
|
99
103
|
const overriddenMethods = ['onShow', 'onHidden', 'onCreate'];
|
|
100
104
|
Object.keys(allProps).forEach((prop) => {
|
|
@@ -181,22 +185,14 @@ class TippyFactory {
|
|
|
181
185
|
return this._ngZone.runOutsideAngular(() => tippy(target, props));
|
|
182
186
|
}));
|
|
183
187
|
}
|
|
184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
185
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
188
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
189
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyFactory, providedIn: 'root' }); }
|
|
186
190
|
}
|
|
187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyFactory, decorators: [{
|
|
188
192
|
type: Injectable,
|
|
189
193
|
args: [{ providedIn: 'root' }]
|
|
190
194
|
}] });
|
|
191
195
|
|
|
192
|
-
/**
|
|
193
|
-
* Transforms a value (typically a string) to a boolean.
|
|
194
|
-
* Intended to be used as a transform function of an input.
|
|
195
|
-
*
|
|
196
|
-
* @see https://material.angular.io/cdk/coercion/overview
|
|
197
|
-
*/
|
|
198
|
-
const coerceBooleanAttribute = booleanAttribute;
|
|
199
|
-
|
|
200
196
|
const TIPPY_REF = /* @__PURE__ */ new InjectionToken(ngDevMode ? 'TIPPY_REF' : '');
|
|
201
197
|
function injectTippyRef() {
|
|
202
198
|
const instance = inject(TIPPY_REF, { optional: true });
|
|
@@ -211,6 +207,95 @@ function injectTippyRef() {
|
|
|
211
207
|
return instance;
|
|
212
208
|
}
|
|
213
209
|
|
|
210
|
+
class TippyService {
|
|
211
|
+
constructor() {
|
|
212
|
+
this._injector = inject(Injector);
|
|
213
|
+
this._globalConfig = inject(TIPPY_CONFIG, { optional: true });
|
|
214
|
+
this._viewService = inject(ViewService);
|
|
215
|
+
this._tippyFactory = inject(TippyFactory);
|
|
216
|
+
this.enabled = signal(true, ...(ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []));
|
|
217
|
+
}
|
|
218
|
+
enableAll() {
|
|
219
|
+
this.enabled.set(true);
|
|
220
|
+
}
|
|
221
|
+
disableAll() {
|
|
222
|
+
this.enabled.set(false);
|
|
223
|
+
}
|
|
224
|
+
create(host, content, options = {}) {
|
|
225
|
+
const variation = options.variation || this._globalConfig?.defaultVariation || '';
|
|
226
|
+
const config = {
|
|
227
|
+
onShow: (instance) => {
|
|
228
|
+
host.setAttribute('data-tippy-open', '');
|
|
229
|
+
if (!instance.$viewOptions) {
|
|
230
|
+
instance.$viewOptions = {
|
|
231
|
+
injector: Injector.create({
|
|
232
|
+
providers: [
|
|
233
|
+
{
|
|
234
|
+
provide: TIPPY_REF,
|
|
235
|
+
useValue: instance,
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
parent: options.injector || this._injector,
|
|
239
|
+
}),
|
|
240
|
+
};
|
|
241
|
+
if (isTemplateRef(content)) {
|
|
242
|
+
instance.$viewOptions.context = {
|
|
243
|
+
$implicit: instance.hide.bind(instance),
|
|
244
|
+
...options.context,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
else if (isComponent(content)) {
|
|
248
|
+
instance.context = options.context;
|
|
249
|
+
instance.data = options.data;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
instance.view ||= this._viewService.createView(content, {
|
|
253
|
+
...options,
|
|
254
|
+
...instance.$viewOptions,
|
|
255
|
+
});
|
|
256
|
+
instance.setContent(instance.view.getElement());
|
|
257
|
+
options?.onShow?.(instance);
|
|
258
|
+
},
|
|
259
|
+
onHidden: (instance) => {
|
|
260
|
+
host.removeAttribute('data-tippy-open');
|
|
261
|
+
if (!options.preserveView) {
|
|
262
|
+
instance.view?.destroy();
|
|
263
|
+
instance.view = null;
|
|
264
|
+
}
|
|
265
|
+
options?.onHidden?.(instance);
|
|
266
|
+
},
|
|
267
|
+
...onlyTippyProps(this._globalConfig),
|
|
268
|
+
...this._globalConfig?.variations?.[variation],
|
|
269
|
+
...onlyTippyProps(options),
|
|
270
|
+
onCreate: (instance) => {
|
|
271
|
+
instance.popper.classList.add(`tippy-variation-${variation}`);
|
|
272
|
+
if (options.className) {
|
|
273
|
+
for (const klass of normalizeClassName(options.className)) {
|
|
274
|
+
instance.popper.classList.add(klass);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
this._globalConfig?.onCreate?.(instance);
|
|
278
|
+
options.onCreate?.(instance);
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
return this._tippyFactory.create(host, config);
|
|
282
|
+
}
|
|
283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
284
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyService, providedIn: 'root' }); }
|
|
285
|
+
}
|
|
286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyService, decorators: [{
|
|
287
|
+
type: Injectable,
|
|
288
|
+
args: [{ providedIn: 'root' }]
|
|
289
|
+
}] });
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Transforms a value (typically a string) to a boolean.
|
|
293
|
+
* Intended to be used as a transform function of an input.
|
|
294
|
+
*
|
|
295
|
+
* @see https://material.angular.io/cdk/coercion/overview
|
|
296
|
+
*/
|
|
297
|
+
const coerceBooleanAttribute = booleanAttribute;
|
|
298
|
+
|
|
214
299
|
// An arrow function defined inside a method closes over the method's lexical scope,
|
|
215
300
|
// causing V8 to allocate a Context object that indirectly references the directive
|
|
216
301
|
// instance — keeping it alive after destroy.
|
|
@@ -243,95 +328,49 @@ class TippyDirective {
|
|
|
243
328
|
return this.host().getBoundingClientRect().width;
|
|
244
329
|
}
|
|
245
330
|
constructor() {
|
|
246
|
-
this.appendTo = input(defaultAppendTo, ...(ngDevMode ?
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
this.
|
|
250
|
-
this.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
this.
|
|
254
|
-
alias: 'tpDuration',
|
|
255
|
-
}]));
|
|
256
|
-
this.hideOnClick = input(true, ...(ngDevMode ? [{ debugName: "hideOnClick", alias: 'tpHideOnClick' }] : [{
|
|
257
|
-
alias: 'tpHideOnClick',
|
|
258
|
-
}]));
|
|
259
|
-
this.interactive = input(false, ...(ngDevMode ? [{ debugName: "interactive", alias: 'tpInteractive' }] : [{
|
|
260
|
-
alias: 'tpInteractive',
|
|
261
|
-
}]));
|
|
262
|
-
this.interactiveBorder = input(defaultInteractiveBorder, ...(ngDevMode ? [{ debugName: "interactiveBorder", alias: 'tpInteractiveBorder' }] : [{
|
|
263
|
-
alias: 'tpInteractiveBorder',
|
|
264
|
-
}]));
|
|
265
|
-
this.maxWidth = input(defaultMaxWidth, ...(ngDevMode ? [{ debugName: "maxWidth", alias: 'tpMaxWidth' }] : [{
|
|
266
|
-
alias: 'tpMaxWidth',
|
|
267
|
-
}]));
|
|
331
|
+
this.appendTo = input(defaultAppendTo, { ...(ngDevMode ? { debugName: "appendTo" } : /* istanbul ignore next */ {}), alias: 'tpAppendTo' });
|
|
332
|
+
this.content = input('', { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'tp' });
|
|
333
|
+
this.delay = input(defaultDelay, { ...(ngDevMode ? { debugName: "delay" } : /* istanbul ignore next */ {}), alias: 'tpDelay' });
|
|
334
|
+
this.duration = input(defaultDuration, { ...(ngDevMode ? { debugName: "duration" } : /* istanbul ignore next */ {}), alias: 'tpDuration' });
|
|
335
|
+
this.hideOnClick = input(true, { ...(ngDevMode ? { debugName: "hideOnClick" } : /* istanbul ignore next */ {}), alias: 'tpHideOnClick' });
|
|
336
|
+
this.interactive = input(false, { ...(ngDevMode ? { debugName: "interactive" } : /* istanbul ignore next */ {}), alias: 'tpInteractive' });
|
|
337
|
+
this.interactiveBorder = input(defaultInteractiveBorder, { ...(ngDevMode ? { debugName: "interactiveBorder" } : /* istanbul ignore next */ {}), alias: 'tpInteractiveBorder' });
|
|
338
|
+
this.maxWidth = input(defaultMaxWidth, { ...(ngDevMode ? { debugName: "maxWidth" } : /* istanbul ignore next */ {}), alias: 'tpMaxWidth' });
|
|
268
339
|
// Note that some of the input signal types are declared explicitly because the compiler
|
|
269
340
|
// also uses types from `@popperjs/core` and requires a type annotation.
|
|
270
|
-
this.offset = input(defaultOffset, ...(ngDevMode ?
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
this.
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
this.
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
}
|
|
282
|
-
this.
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
this.
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
this.
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
this.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
this.
|
|
300
|
-
alias: 'tpIsLazy' }] : [{
|
|
301
|
-
transform: coerceBooleanAttribute,
|
|
302
|
-
alias: 'tpIsLazy',
|
|
303
|
-
}]));
|
|
304
|
-
this.variation = input(undefined, ...(ngDevMode ? [{ debugName: "variation", alias: 'tpVariation' }] : [{ alias: 'tpVariation' }]));
|
|
305
|
-
this.isEnabled = input(true, ...(ngDevMode ? [{ debugName: "isEnabled", alias: 'tpIsEnabled' }] : [{ alias: 'tpIsEnabled' }]));
|
|
306
|
-
this.className = input('', ...(ngDevMode ? [{ debugName: "className", alias: 'tpClassName' }] : [{ alias: 'tpClassName' }]));
|
|
307
|
-
this.onlyTextOverflow = input(false, ...(ngDevMode ? [{ debugName: "onlyTextOverflow", transform: coerceBooleanAttribute,
|
|
308
|
-
alias: 'tpOnlyTextOverflow' }] : [{
|
|
309
|
-
transform: coerceBooleanAttribute,
|
|
310
|
-
alias: 'tpOnlyTextOverflow',
|
|
311
|
-
}]));
|
|
312
|
-
this.staticWidthHost = input(false, ...(ngDevMode ? [{ debugName: "staticWidthHost", transform: coerceBooleanAttribute,
|
|
313
|
-
alias: 'tpStaticWidthHost' }] : [{
|
|
314
|
-
transform: coerceBooleanAttribute,
|
|
315
|
-
alias: 'tpStaticWidthHost',
|
|
316
|
-
}]));
|
|
317
|
-
this.data = input(undefined, ...(ngDevMode ? [{ debugName: "data", alias: 'tpData' }] : [{ alias: 'tpData' }]));
|
|
318
|
-
this.useHostWidth = input(false, ...(ngDevMode ? [{ debugName: "useHostWidth", transform: coerceBooleanAttribute,
|
|
319
|
-
alias: 'tpUseHostWidth' }] : [{
|
|
320
|
-
transform: coerceBooleanAttribute,
|
|
321
|
-
alias: 'tpUseHostWidth',
|
|
322
|
-
}]));
|
|
323
|
-
this.hideOnEscape = input(false, ...(ngDevMode ? [{ debugName: "hideOnEscape", transform: coerceBooleanAttribute,
|
|
324
|
-
alias: 'tpHideOnEscape' }] : [{
|
|
325
|
-
transform: coerceBooleanAttribute,
|
|
326
|
-
alias: 'tpHideOnEscape',
|
|
327
|
-
}]));
|
|
328
|
-
this.popperWidth = input(undefined, ...(ngDevMode ? [{ debugName: "popperWidth", alias: 'tpPopperWidth' }] : [{
|
|
329
|
-
alias: 'tpPopperWidth',
|
|
330
|
-
}]));
|
|
331
|
-
this.customHost = input(undefined, ...(ngDevMode ? [{ debugName: "customHost", alias: 'tpHost' }] : [{ alias: 'tpHost' }]));
|
|
341
|
+
this.offset = input(defaultOffset, { ...(ngDevMode ? { debugName: "offset" } : /* istanbul ignore next */ {}), alias: 'tpOffset' });
|
|
342
|
+
this.placement = input(defaultPlacement, { ...(ngDevMode ? { debugName: "placement" } : /* istanbul ignore next */ {}), alias: 'tpPlacement' });
|
|
343
|
+
this.popperOptions = input({}, { ...(ngDevMode ? { debugName: "popperOptions" } : /* istanbul ignore next */ {}), alias: 'tpPopperOptions' });
|
|
344
|
+
this.showOnCreate = input(false, { ...(ngDevMode ? { debugName: "showOnCreate" } : /* istanbul ignore next */ {}), alias: 'tpShowOnCreate' });
|
|
345
|
+
this.trigger = input(defaultTrigger, { ...(ngDevMode ? { debugName: "trigger" } : /* istanbul ignore next */ {}), alias: 'tpTrigger' });
|
|
346
|
+
this.triggerTarget = input(defaultTriggerTarget, { ...(ngDevMode ? { debugName: "triggerTarget" } : /* istanbul ignore next */ {}), alias: 'tpTriggerTarget' });
|
|
347
|
+
this.zIndex = input(defaultZIndex, { ...(ngDevMode ? { debugName: "zIndex" } : /* istanbul ignore next */ {}), alias: 'tpZIndex' });
|
|
348
|
+
this.animation = input(defaultAnimation, { ...(ngDevMode ? { debugName: "animation" } : /* istanbul ignore next */ {}), alias: 'tpAnimation' });
|
|
349
|
+
this.useTextContent = input(false, { ...(ngDevMode ? { debugName: "useTextContent" } : /* istanbul ignore next */ {}), transform: coerceBooleanAttribute,
|
|
350
|
+
alias: 'tpUseTextContent' });
|
|
351
|
+
this.isLazy = input(false, { ...(ngDevMode ? { debugName: "isLazy" } : /* istanbul ignore next */ {}), transform: coerceBooleanAttribute,
|
|
352
|
+
alias: 'tpIsLazy' });
|
|
353
|
+
this.variation = input(undefined, { ...(ngDevMode ? { debugName: "variation" } : /* istanbul ignore next */ {}), alias: 'tpVariation' });
|
|
354
|
+
this.isEnabled = input(true, { ...(ngDevMode ? { debugName: "isEnabled" } : /* istanbul ignore next */ {}), alias: 'tpIsEnabled' });
|
|
355
|
+
this.className = input('', { ...(ngDevMode ? { debugName: "className" } : /* istanbul ignore next */ {}), alias: 'tpClassName' });
|
|
356
|
+
this.onlyTextOverflow = input(false, { ...(ngDevMode ? { debugName: "onlyTextOverflow" } : /* istanbul ignore next */ {}), transform: coerceBooleanAttribute,
|
|
357
|
+
alias: 'tpOnlyTextOverflow' });
|
|
358
|
+
this.staticWidthHost = input(false, { ...(ngDevMode ? { debugName: "staticWidthHost" } : /* istanbul ignore next */ {}), transform: coerceBooleanAttribute,
|
|
359
|
+
alias: 'tpStaticWidthHost' });
|
|
360
|
+
this.data = input(undefined, { ...(ngDevMode ? { debugName: "data" } : /* istanbul ignore next */ {}), alias: 'tpData' });
|
|
361
|
+
/** Angular `inputBinding`/`outputBinding`/`twoWayBinding` descriptors forwarded to `createComponent`. */
|
|
362
|
+
this.bindings = input(undefined, { ...(ngDevMode ? { debugName: "bindings" } : /* istanbul ignore next */ {}), alias: 'tpBindings' });
|
|
363
|
+
/** Host directives (with optional bindings) forwarded to `createComponent`. */
|
|
364
|
+
this.directives = input(undefined, { ...(ngDevMode ? { debugName: "directives" } : /* istanbul ignore next */ {}), alias: 'tpDirectives' });
|
|
365
|
+
this.useHostWidth = input(false, { ...(ngDevMode ? { debugName: "useHostWidth" } : /* istanbul ignore next */ {}), transform: coerceBooleanAttribute,
|
|
366
|
+
alias: 'tpUseHostWidth' });
|
|
367
|
+
this.hideOnEscape = input(false, { ...(ngDevMode ? { debugName: "hideOnEscape" } : /* istanbul ignore next */ {}), transform: coerceBooleanAttribute,
|
|
368
|
+
alias: 'tpHideOnEscape' });
|
|
369
|
+
this.popperWidth = input(undefined, { ...(ngDevMode ? { debugName: "popperWidth" } : /* istanbul ignore next */ {}), alias: 'tpPopperWidth' });
|
|
370
|
+
this.customHost = input(undefined, { ...(ngDevMode ? { debugName: "customHost" } : /* istanbul ignore next */ {}), alias: 'tpHost' });
|
|
332
371
|
this.onShow = output({ alias: 'tpOnShow' });
|
|
333
372
|
this.onHide = output({ alias: 'tpOnHide' });
|
|
334
|
-
this.isVisible = model(false, ...(ngDevMode ?
|
|
373
|
+
this.isVisible = model(false, { ...(ngDevMode ? { debugName: "isVisible" } : /* istanbul ignore next */ {}), alias: 'tpIsVisible' });
|
|
335
374
|
this.visible = output({ alias: 'tpVisible' });
|
|
336
375
|
this.viewRef = null;
|
|
337
376
|
this.variationDefined = false;
|
|
@@ -346,8 +385,9 @@ class TippyDirective {
|
|
|
346
385
|
this.visibleInternal = new Subject();
|
|
347
386
|
this.visibilityObserverCleanup = null;
|
|
348
387
|
this.contentChanged = new Subject();
|
|
349
|
-
this.host = computed(() => this.customHost() || this.hostRef.nativeElement, ...(ngDevMode ? [{ debugName: "host" }] : []));
|
|
388
|
+
this.host = computed(() => this.customHost() || this.hostRef.nativeElement, ...(ngDevMode ? [{ debugName: "host" }] : /* istanbul ignore next */ []));
|
|
350
389
|
this.destroyRef = inject(DestroyRef);
|
|
390
|
+
this.tippyService = inject(TippyService);
|
|
351
391
|
this.isServer =
|
|
352
392
|
// Drop `isPlatformServer` once `ngServeMode` is available during compilation.
|
|
353
393
|
(typeof ngServerMode !== 'undefined' && ngServerMode) ||
|
|
@@ -364,6 +404,19 @@ class TippyDirective {
|
|
|
364
404
|
if (this.isServer)
|
|
365
405
|
return;
|
|
366
406
|
this.setupListeners();
|
|
407
|
+
// `afterEveryRender` fires synchronously within Angular's CD cycle.
|
|
408
|
+
// This lets us update the enabled/disabled state of the instance BEFORE a
|
|
409
|
+
// synthetic mouseenter event is dispatched, which fixes test timing when
|
|
410
|
+
// Angular-triggered changes (content/style bindings) cause the overflow
|
|
411
|
+
// state to change. ResizeObserver (`overflowChanges`) remains as a fallback
|
|
412
|
+
// for non-Angular-triggered resize events (browser window resize, etc.).
|
|
413
|
+
afterEveryRender({
|
|
414
|
+
read: () => {
|
|
415
|
+
if (!this.onlyTextOverflow())
|
|
416
|
+
return;
|
|
417
|
+
untracked(() => this.checkOverflow(isElementOverflow(this.host())));
|
|
418
|
+
},
|
|
419
|
+
});
|
|
367
420
|
this.destroyRef.onDestroy(() => {
|
|
368
421
|
this.destroyed = true;
|
|
369
422
|
this.instance?.destroy();
|
|
@@ -374,17 +427,26 @@ class TippyDirective {
|
|
|
374
427
|
ngOnChanges(changes) {
|
|
375
428
|
if (this.isServer)
|
|
376
429
|
return;
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
// in an effect-like manner.
|
|
430
|
+
// `isVisible` is not required as a prop since we update it manually
|
|
431
|
+
// in an effect-like manner.
|
|
432
|
+
const changedProps = Object.keys(changes)
|
|
381
433
|
.filter((key) => key !== 'isVisible')
|
|
382
|
-
.reduce((accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }), {
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
434
|
+
.reduce((accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }), {});
|
|
435
|
+
// Variation defaults are applied only on the first call or when the variation
|
|
436
|
+
// input itself changes. Re-applying them on every ngOnChanges call would
|
|
437
|
+
// overwrite explicitly-bound inputs (e.g. tpTrigger) with variation defaults
|
|
438
|
+
// whenever any other input (e.g. tpData, tpIsEnabled) changes.
|
|
439
|
+
if (!this.variationDefined || 'variation' in changes) {
|
|
440
|
+
this.variationDefined = true;
|
|
441
|
+
const variation = this.variation() || this.globalConfig.defaultVariation || '';
|
|
442
|
+
this.setProps({
|
|
443
|
+
...this.globalConfig.variations?.[variation],
|
|
444
|
+
...this.props,
|
|
445
|
+
...changedProps,
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
this.updateProps(changedProps);
|
|
388
450
|
}
|
|
389
451
|
}
|
|
390
452
|
ngAfterViewInit() {
|
|
@@ -513,6 +575,15 @@ class TippyDirective {
|
|
|
513
575
|
}
|
|
514
576
|
},
|
|
515
577
|
onShow: (instance) => {
|
|
578
|
+
// In onlyTextOverflow mode the tooltip must not appear when the host is
|
|
579
|
+
// not overflowing. Returning false from onShow prevents tippy from
|
|
580
|
+
// showing regardless of the instance's enabled/disabled state. This
|
|
581
|
+
// acts as a last-resort guard for cases where checkOverflow() hasn't
|
|
582
|
+
// been called yet (e.g. Angular's scheduler hasn't flushed CD between
|
|
583
|
+
// the content/width change and the trigger event).
|
|
584
|
+
if (this.onlyTextOverflow() && !isElementOverflow(this.host())) {
|
|
585
|
+
return false;
|
|
586
|
+
}
|
|
516
587
|
instance.reference.setAttribute('data-tippy-open', '');
|
|
517
588
|
// We're re-entering because we might create an Angular component,
|
|
518
589
|
// which should be done within the zone.
|
|
@@ -528,6 +599,7 @@ class TippyDirective {
|
|
|
528
599
|
}
|
|
529
600
|
instance.setContent(content);
|
|
530
601
|
this.hideOnEscape() && this.handleEscapeButton();
|
|
602
|
+
this.clearInstanceWidth(instance);
|
|
531
603
|
if (this.useHostWidth()) {
|
|
532
604
|
this.setInstanceWidth(instance, this.hostWidth);
|
|
533
605
|
}
|
|
@@ -569,6 +641,8 @@ class TippyDirective {
|
|
|
569
641
|
this.instance.data = data;
|
|
570
642
|
this.viewOptions$ = {
|
|
571
643
|
injector,
|
|
644
|
+
bindings: this.bindings(),
|
|
645
|
+
directives: this.directives(),
|
|
572
646
|
};
|
|
573
647
|
}
|
|
574
648
|
else if (isTemplateRef(content)) {
|
|
@@ -663,6 +737,11 @@ class TippyDirective {
|
|
|
663
737
|
this.setInstanceWidth(this.instance, this.hostWidth);
|
|
664
738
|
});
|
|
665
739
|
}
|
|
740
|
+
clearInstanceWidth(instance) {
|
|
741
|
+
instance.popper.style.width = '';
|
|
742
|
+
instance.popper.style.maxWidth = '';
|
|
743
|
+
instance.popper.firstElementChild.style.maxWidth = '';
|
|
744
|
+
}
|
|
666
745
|
setInstanceWidth(instance, width) {
|
|
667
746
|
const inPixels = coerceCssPixelValue(width);
|
|
668
747
|
instance.popper.style.width = inPixels;
|
|
@@ -708,7 +787,11 @@ class TippyDirective {
|
|
|
708
787
|
this.content();
|
|
709
788
|
untracked(() => this.contentChanged.next());
|
|
710
789
|
});
|
|
711
|
-
effect(() => this.setStatus(this.isEnabled()));
|
|
790
|
+
effect(() => this.setStatus(this.tippyService.enabled() && this.isEnabled()));
|
|
791
|
+
effect(() => {
|
|
792
|
+
const maxWidth = this.useHostWidth() ? this.hostWidth : defaultMaxWidth;
|
|
793
|
+
untracked(() => this.setProps({ ...this.props, maxWidth }));
|
|
794
|
+
});
|
|
712
795
|
effect(() => {
|
|
713
796
|
const isVisible = this.isVisible();
|
|
714
797
|
isVisible ? this.show() : this.hide();
|
|
@@ -726,91 +809,17 @@ class TippyDirective {
|
|
|
726
809
|
}
|
|
727
810
|
});
|
|
728
811
|
}
|
|
729
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
730
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
812
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
813
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.8", type: TippyDirective, isStandalone: true, selector: "[tp]", inputs: { appendTo: { classPropertyName: "appendTo", publicName: "tpAppendTo", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "tp", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "tpDelay", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "tpDuration", isSignal: true, isRequired: false, transformFunction: null }, hideOnClick: { classPropertyName: "hideOnClick", publicName: "tpHideOnClick", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "tpInteractive", isSignal: true, isRequired: false, transformFunction: null }, interactiveBorder: { classPropertyName: "interactiveBorder", publicName: "tpInteractiveBorder", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "tpMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "tpOffset", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "tpPlacement", isSignal: true, isRequired: false, transformFunction: null }, popperOptions: { classPropertyName: "popperOptions", publicName: "tpPopperOptions", isSignal: true, isRequired: false, transformFunction: null }, showOnCreate: { classPropertyName: "showOnCreate", publicName: "tpShowOnCreate", isSignal: true, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "tpTrigger", isSignal: true, isRequired: false, transformFunction: null }, triggerTarget: { classPropertyName: "triggerTarget", publicName: "tpTriggerTarget", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "tpZIndex", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "tpAnimation", isSignal: true, isRequired: false, transformFunction: null }, useTextContent: { classPropertyName: "useTextContent", publicName: "tpUseTextContent", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "tpIsLazy", isSignal: true, isRequired: false, transformFunction: null }, variation: { classPropertyName: "variation", publicName: "tpVariation", isSignal: true, isRequired: false, transformFunction: null }, isEnabled: { classPropertyName: "isEnabled", publicName: "tpIsEnabled", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "tpClassName", isSignal: true, isRequired: false, transformFunction: null }, onlyTextOverflow: { classPropertyName: "onlyTextOverflow", publicName: "tpOnlyTextOverflow", isSignal: true, isRequired: false, transformFunction: null }, staticWidthHost: { classPropertyName: "staticWidthHost", publicName: "tpStaticWidthHost", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "tpData", isSignal: true, isRequired: false, transformFunction: null }, bindings: { classPropertyName: "bindings", publicName: "tpBindings", isSignal: true, isRequired: false, transformFunction: null }, directives: { classPropertyName: "directives", publicName: "tpDirectives", isSignal: true, isRequired: false, transformFunction: null }, useHostWidth: { classPropertyName: "useHostWidth", publicName: "tpUseHostWidth", isSignal: true, isRequired: false, transformFunction: null }, hideOnEscape: { classPropertyName: "hideOnEscape", publicName: "tpHideOnEscape", isSignal: true, isRequired: false, transformFunction: null }, popperWidth: { classPropertyName: "popperWidth", publicName: "tpPopperWidth", isSignal: true, isRequired: false, transformFunction: null }, customHost: { classPropertyName: "customHost", publicName: "tpHost", isSignal: true, isRequired: false, transformFunction: null }, isVisible: { classPropertyName: "isVisible", publicName: "tpIsVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onShow: "tpOnShow", onHide: "tpOnHide", isVisible: "tpIsVisibleChange", visible: "tpVisible" }, exportAs: ["tippy"], usesOnChanges: true, ngImport: i0 }); }
|
|
731
814
|
}
|
|
732
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
815
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TippyDirective, decorators: [{
|
|
733
816
|
type: Directive,
|
|
734
817
|
args: [{
|
|
735
818
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
736
819
|
selector: '[tp]',
|
|
737
820
|
exportAs: 'tippy',
|
|
738
821
|
}]
|
|
739
|
-
}], ctorParameters: () => [] });
|
|
740
|
-
|
|
741
|
-
class TippyService {
|
|
742
|
-
constructor() {
|
|
743
|
-
this._injector = inject(Injector);
|
|
744
|
-
this._globalConfig = inject(TIPPY_CONFIG, { optional: true });
|
|
745
|
-
this._viewService = inject(ViewService);
|
|
746
|
-
this._tippyFactory = inject(TippyFactory);
|
|
747
|
-
}
|
|
748
|
-
create(host, content, options = {}) {
|
|
749
|
-
const variation = options.variation || this._globalConfig?.defaultVariation || '';
|
|
750
|
-
const config = {
|
|
751
|
-
onShow: (instance) => {
|
|
752
|
-
host.setAttribute('data-tippy-open', '');
|
|
753
|
-
if (!instance.$viewOptions) {
|
|
754
|
-
instance.$viewOptions = {
|
|
755
|
-
injector: Injector.create({
|
|
756
|
-
providers: [
|
|
757
|
-
{
|
|
758
|
-
provide: TIPPY_REF,
|
|
759
|
-
useValue: instance,
|
|
760
|
-
},
|
|
761
|
-
],
|
|
762
|
-
parent: options.injector || this._injector,
|
|
763
|
-
}),
|
|
764
|
-
};
|
|
765
|
-
if (isTemplateRef(content)) {
|
|
766
|
-
instance.$viewOptions.context = {
|
|
767
|
-
$implicit: instance.hide.bind(instance),
|
|
768
|
-
...options.context,
|
|
769
|
-
};
|
|
770
|
-
}
|
|
771
|
-
else if (isComponent(content)) {
|
|
772
|
-
instance.context = options.context;
|
|
773
|
-
instance.data = options.data;
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
instance.view ||= this._viewService.createView(content, {
|
|
777
|
-
...options,
|
|
778
|
-
...instance.$viewOptions,
|
|
779
|
-
});
|
|
780
|
-
instance.setContent(instance.view.getElement());
|
|
781
|
-
options?.onShow?.(instance);
|
|
782
|
-
},
|
|
783
|
-
onHidden: (instance) => {
|
|
784
|
-
host.removeAttribute('data-tippy-open');
|
|
785
|
-
if (!options.preserveView) {
|
|
786
|
-
instance.view?.destroy();
|
|
787
|
-
instance.view = null;
|
|
788
|
-
}
|
|
789
|
-
options?.onHidden?.(instance);
|
|
790
|
-
},
|
|
791
|
-
...onlyTippyProps(this._globalConfig),
|
|
792
|
-
...this._globalConfig?.variations?.[variation],
|
|
793
|
-
...onlyTippyProps(options),
|
|
794
|
-
onCreate: (instance) => {
|
|
795
|
-
instance.popper.classList.add(`tippy-variation-${variation}`);
|
|
796
|
-
if (options.className) {
|
|
797
|
-
for (const klass of normalizeClassName(options.className)) {
|
|
798
|
-
instance.popper.classList.add(klass);
|
|
799
|
-
}
|
|
800
|
-
}
|
|
801
|
-
this._globalConfig?.onCreate?.(instance);
|
|
802
|
-
options.onCreate?.(instance);
|
|
803
|
-
},
|
|
804
|
-
};
|
|
805
|
-
return this._tippyFactory.create(host, config);
|
|
806
|
-
}
|
|
807
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: TippyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
808
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: TippyService, providedIn: 'root' }); }
|
|
809
|
-
}
|
|
810
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: TippyService, decorators: [{
|
|
811
|
-
type: Injectable,
|
|
812
|
-
args: [{ providedIn: 'root' }]
|
|
813
|
-
}] });
|
|
822
|
+
}], ctorParameters: () => [], propDecorators: { appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpAppendTo", required: false }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "tp", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpDelay", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpDuration", required: false }] }], hideOnClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpHideOnClick", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpInteractive", required: false }] }], interactiveBorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpInteractiveBorder", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpMaxWidth", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpOffset", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpPlacement", required: false }] }], popperOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpPopperOptions", required: false }] }], showOnCreate: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpShowOnCreate", required: false }] }], trigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpTrigger", required: false }] }], triggerTarget: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpTriggerTarget", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpZIndex", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpAnimation", required: false }] }], useTextContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpUseTextContent", required: false }] }], isLazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpIsLazy", required: false }] }], variation: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpVariation", required: false }] }], isEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpIsEnabled", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpClassName", required: false }] }], onlyTextOverflow: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpOnlyTextOverflow", required: false }] }], staticWidthHost: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpStaticWidthHost", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpData", required: false }] }], bindings: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpBindings", required: false }] }], directives: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpDirectives", required: false }] }], useHostWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpUseHostWidth", required: false }] }], hideOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpHideOnEscape", required: false }] }], popperWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpPopperWidth", required: false }] }], customHost: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpHost", required: false }] }], onShow: [{ type: i0.Output, args: ["tpOnShow"] }], onHide: [{ type: i0.Output, args: ["tpOnHide"] }], isVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "tpIsVisible", required: false }] }, { type: i0.Output, args: ["tpIsVisibleChange"] }], visible: [{ type: i0.Output, args: ["tpVisible"] }] } });
|
|
814
823
|
|
|
815
824
|
/**
|
|
816
825
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngneat-helipopper.mjs","sources":["../../../../projects/ngneat/helipopper/src/lib/intersection-observer.ts","../../../../projects/ngneat/helipopper/src/lib/utils.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.factory.ts","../../../../projects/ngneat/helipopper/src/lib/coercion.ts","../../../../projects/ngneat/helipopper/src/lib/inject-tippy.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.directive.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.service.ts","../../../../projects/ngneat/helipopper/src/ngneat-helipopper.ts"],"sourcesContent":["// Let's retrieve the native `IntersectionObserver` implementation hidden by\n// `__zone_symbol__IntersectionObserver`. This would be the unpatched version of\n// the observer present in zone.js environments.\n// Otherwise, if the user is using zoneless change detection (and zone.js is not included),\n// we fall back to the native implementation. Accessing the native implementation\n// allows us to remove `runOutsideAngular` calls and reduce indentation,\n// making the code a bit more readable.\nexport const IntersectionObserver: typeof globalThis.IntersectionObserver =\n (globalThis as any)['__zone_symbol__IntersectionObserver'] ||\n globalThis.IntersectionObserver;\n","import { ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { auditTime, map } from 'rxjs/operators';\nimport type { TippyElement } from '@ngneat/helipopper/config';\n\nimport { IntersectionObserver } from './intersection-observer';\n\nlet supportsIntersectionObserver = false;\nlet supportsResizeObserver = false;\n\nif (typeof window !== 'undefined') {\n supportsIntersectionObserver = 'IntersectionObserver' in window;\n supportsResizeObserver = 'ResizeObserver' in window;\n}\n\nexport const enum TippyErrorCode {\n TippyNotProvided = 1,\n}\n\nexport function inView(\n host: TippyElement,\n options: IntersectionObserverInit = {\n root: null,\n threshold: 0.3,\n },\n) {\n const element = coerceElement(host);\n\n return new Observable((subscriber) => {\n if (!supportsIntersectionObserver) {\n subscriber.next();\n subscriber.complete();\n return;\n }\n\n const observer = new IntersectionObserver((entries) => {\n // Several changes may occur in the same tick, we want to check the latest entry state.\n const entry = entries[entries.length - 1];\n if (entry.isIntersecting) {\n subscriber.next();\n subscriber.complete();\n }\n }, options);\n\n observer.observe(element);\n\n return () => observer.disconnect();\n });\n}\n\nexport function isElementOverflow(host: HTMLElement): boolean {\n // Don't access the `offsetWidth` multiple times since it triggers layout updates.\n const hostOffsetWidth = host.offsetWidth;\n\n return (\n hostOffsetWidth > host.parentElement!.offsetWidth ||\n hostOffsetWidth < host.scrollWidth\n );\n}\n\nexport function overflowChanges(host: TippyElement) {\n const element = coerceElement(host);\n\n return dimensionsChanges(element).pipe(\n auditTime(150),\n map(() => isElementOverflow(element)),\n );\n}\n\nexport function dimensionsChanges(target: HTMLElement) {\n return new Observable<boolean>((subscriber) => {\n if (!supportsResizeObserver) {\n subscriber.next();\n subscriber.complete();\n return;\n }\n\n const observer = new ResizeObserver(() => subscriber.next(true));\n observer.observe(target);\n return () => observer.disconnect();\n });\n}\n\nexport function onlyTippyProps(allProps: any) {\n const tippyProps: any = {};\n\n if (!allProps) {\n return tippyProps;\n }\n\n const ownProps = [\n 'useTextContent',\n 'variations',\n 'useHostWidth',\n 'defaultVariation',\n 'beforeRender',\n 'isLazy',\n 'variation',\n 'isEnabled',\n 'className',\n 'onlyTextOverflow',\n 'data',\n 'content',\n 'context',\n 'hideOnEscape',\n 'customHost',\n 'injector',\n 'preserveView',\n 'vcr',\n 'popperWidth',\n 'zIndexGetter',\n 'staticWidthHost',\n ];\n\n const overriddenMethods = ['onShow', 'onHidden', 'onCreate'];\n\n Object.keys(allProps).forEach((prop) => {\n if (!ownProps.includes(prop) && !overriddenMethods.includes(prop)) {\n tippyProps[prop] = allProps[prop];\n }\n });\n\n return tippyProps;\n}\n\nexport function normalizeClassName(className: string | string[]): string[] {\n const classes = typeof className === 'string' ? className.split(' ') : className;\n\n return classes.map((klass) => klass?.trim()).filter(Boolean);\n}\n\nexport function coerceCssPixelValue<T>(value: T): string {\n if (value == null) {\n return '';\n }\n\n return typeof value === 'string' ? value : `${value}px`;\n}\n\nfunction coerceElement(element: TippyElement) {\n return element instanceof ElementRef ? element.nativeElement : element;\n}\n\nlet observer: IntersectionObserver;\nconst elementHiddenHandlers = new WeakMap<Element, () => void>();\nexport function observeVisibility(host: Element, hiddenHandler: () => void) {\n observer ??= new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n elementHiddenHandlers.get(entry.target)!();\n }\n });\n });\n elementHiddenHandlers.set(host, hiddenHandler);\n observer.observe(host);\n\n return () => {\n elementHiddenHandlers.delete(host);\n observer.unobserve(host);\n };\n}\n","import type tippy from 'tippy.js';\nimport { inject, Injectable, NgZone, ɵisPromise as isPromise } from '@angular/core';\nimport { defer, map, Observable, of, tap } from 'rxjs';\nimport { TIPPY_LOADER, type TippyProps } from '@ngneat/helipopper/config';\n\n@Injectable({ providedIn: 'root' })\nexport class TippyFactory {\n private readonly _ngZone = inject(NgZone);\n\n private readonly _loader = inject(TIPPY_LOADER);\n\n private _tippyImpl$: Observable<typeof tippy> | null = null;\n private _tippy: typeof tippy | null = null;\n\n /**\n * This returns an observable because the user should provide a `loader`\n * function, which may return a promise if the tippy.js library is to be\n * loaded asynchronously.\n */\n create(target: HTMLElement, props?: Partial<TippyProps>) {\n this._tippyImpl$ ||= defer(() => {\n if (this._tippy) return of(this._tippy);\n\n // Call the `loader` function lazily — only when a subscriber\n // arrives — to avoid importing `tippy.js` on the server.\n const maybeTippy = this._ngZone.runOutsideAngular(() => this._loader());\n\n let tippy$: Observable<typeof tippy>;\n // We need to use `isPromise` instead of checking whether\n // `result instanceof Promise`. In zone.js patched environments, `global.Promise`\n // is the `ZoneAwarePromise`. Some APIs, which are likely not patched by zone.js\n // for certain reasons, might not work with `instanceof`. For instance, the dynamic\n // import `() => import('./chunk.js')` returns a native promise (not a `ZoneAwarePromise`),\n // causing this check to be falsy.\n if (isPromise(maybeTippy)) {\n // This pulls less RxJS symbols compared to using `from()` to resolve a promise value.\n tippy$ = new Observable((subscriber) => {\n maybeTippy.then((tippy) => {\n subscriber.next(tippy.default);\n subscriber.complete();\n });\n });\n } else {\n tippy$ = of(maybeTippy);\n }\n\n return tippy$.pipe(\n tap((tippy) => {\n this._tippy = tippy;\n })\n );\n });\n\n return this._tippyImpl$.pipe(\n map((tippy) => {\n return this._ngZone.runOutsideAngular(() => tippy(target, props));\n })\n );\n }\n}\n","import { booleanAttribute as originalBooleanAttribute } from '@angular/core';\n\ntype BooleanInput = boolean | `${boolean}` | '' | null | undefined;\n\n/**\n * Transforms a value (typically a string) to a boolean.\n * Intended to be used as a transform function of an input.\n *\n * @see https://material.angular.io/cdk/coercion/overview\n */\nconst coerceBooleanAttribute: (value: BooleanInput) => boolean = originalBooleanAttribute;\n\nexport { coerceBooleanAttribute };\n","import { inject, InjectionToken, isDevMode } from '@angular/core';\nimport type { TippyInstance } from '@ngneat/helipopper/config';\n\nimport { TippyErrorCode } from './utils';\n\nexport const TIPPY_REF = /* @__PURE__ */ new InjectionToken<TippyInstance>(\n ngDevMode ? 'TIPPY_REF' : '',\n);\n\nexport function injectTippyRef(): TippyInstance {\n const instance = inject(TIPPY_REF, { optional: true });\n\n if (!instance) {\n if (ngDevMode) {\n throw new Error(\n 'tp is not provided in the current context or on one of its ancestors',\n );\n } else {\n throw new Error(`[tp]: ${TippyErrorCode.TippyNotProvided}`);\n }\n }\n\n return instance;\n}\n","import {\n AfterViewInit,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n InputSignal,\n model,\n NgZone,\n OnChanges,\n OnInit,\n output,\n PLATFORM_ID,\n SimpleChanges,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instance } from 'tippy.js';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport {\n Content,\n isComponent,\n isString,\n isTemplateRef,\n ViewOptions,\n ViewRef,\n ViewService,\n} from '@ngneat/overview';\n\nimport {\n coerceCssPixelValue,\n dimensionsChanges,\n inView,\n isElementOverflow,\n normalizeClassName,\n observeVisibility,\n onlyTippyProps,\n overflowChanges,\n} from './utils';\nimport {\n TIPPY_CONFIG,\n TippyConfig,\n TippyInstance,\n TippyProps,\n} from '@ngneat/helipopper/config';\nimport { TippyFactory } from './tippy.factory';\nimport { coerceBooleanAttribute } from './coercion';\nimport { TIPPY_REF } from './inject-tippy';\n\n// An arrow function defined inside a method closes over the method's lexical scope,\n// causing V8 to allocate a Context object that indirectly references the directive\n// instance — keeping it alive after destroy.\n//\n// A bound function (JSBoundFunction) has no [[context]] field in V8's heap layout;\n// it only stores { bound_target_function, bound_this, bound_arguments }.\n// Binding to `null` produces a context-free callable, breaking the retention chain.\nconst appendTo = function appendTo() {\n return document.fullscreenElement || document.body;\n}.bind(null);\n\n// These are the default values used by `tippy.js`.\n// We are providing them as default input values.\n// The `tippy.js` repository has been archived and is unlikely to\n// change in the future, so it is safe to use these values as defaults.\nconst defaultAppendTo: TippyProps['appendTo'] = () => document.body;\nconst defaultDelay: TippyProps['delay'] = 0;\nconst defaultDuration: TippyProps['duration'] = [300, 250];\nconst defaultInteractiveBorder: TippyProps['interactiveBorder'] = 2;\nconst defaultMaxWidth: TippyProps['maxWidth'] = 350;\nconst defaultOffset: TippyProps['offset'] = [0, 10];\nconst defaultPlacement: TippyProps['placement'] = 'top';\nconst defaultTrigger: TippyProps['trigger'] = 'mouseenter focus';\nconst defaultTriggerTarget: TippyProps['triggerTarget'] = null;\nconst defaultZIndex: TippyProps['zIndex'] = 9999;\nconst defaultAnimation: TippyProps['animation'] = 'fade';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[tp]',\n exportAs: 'tippy',\n})\nexport class TippyDirective implements OnChanges, AfterViewInit, OnInit {\n readonly appendTo = input(defaultAppendTo, {\n alias: 'tpAppendTo',\n });\n\n readonly content = input<Content | undefined | null>('', { alias: 'tp' });\n\n readonly delay = input(defaultDelay, {\n alias: 'tpDelay',\n });\n\n readonly duration = input(defaultDuration, {\n alias: 'tpDuration',\n });\n\n readonly hideOnClick = input(true, {\n alias: 'tpHideOnClick',\n });\n\n readonly interactive = input(false, {\n alias: 'tpInteractive',\n });\n\n readonly interactiveBorder = input(defaultInteractiveBorder, {\n alias: 'tpInteractiveBorder',\n });\n\n readonly maxWidth = input(defaultMaxWidth, {\n alias: 'tpMaxWidth',\n });\n\n // Note that some of the input signal types are declared explicitly because the compiler\n // also uses types from `@popperjs/core` and requires a type annotation.\n readonly offset: InputSignal<TippyProps['offset']> = input(defaultOffset, {\n alias: 'tpOffset',\n });\n\n readonly placement: InputSignal<TippyProps['placement']> = input(defaultPlacement, {\n alias: 'tpPlacement',\n });\n\n readonly popperOptions: InputSignal<TippyProps['popperOptions']> = input(\n {},\n {\n alias: 'tpPopperOptions',\n },\n );\n\n readonly showOnCreate = input(false, {\n alias: 'tpShowOnCreate',\n });\n\n readonly trigger = input(defaultTrigger, {\n alias: 'tpTrigger',\n });\n\n readonly triggerTarget = input(defaultTriggerTarget, {\n alias: 'tpTriggerTarget',\n });\n\n readonly zIndex = input(defaultZIndex, {\n alias: 'tpZIndex',\n });\n\n readonly animation = input(defaultAnimation, {\n alias: 'tpAnimation',\n });\n\n readonly useTextContent = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpUseTextContent',\n });\n\n readonly isLazy = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpIsLazy',\n });\n\n readonly variation = input<string | undefined>(undefined, { alias: 'tpVariation' });\n\n readonly isEnabled = input(true, { alias: 'tpIsEnabled' });\n\n readonly className = input<string | string[]>('', { alias: 'tpClassName' });\n\n readonly onlyTextOverflow = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpOnlyTextOverflow',\n });\n\n readonly staticWidthHost = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpStaticWidthHost',\n });\n\n readonly data = input<any>(undefined, { alias: 'tpData' });\n\n readonly useHostWidth = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpUseHostWidth',\n });\n\n readonly hideOnEscape = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpHideOnEscape',\n });\n\n readonly popperWidth = input<number | string | undefined>(undefined, {\n alias: 'tpPopperWidth',\n });\n\n readonly customHost = input<HTMLElement | undefined>(undefined, { alias: 'tpHost' });\n\n readonly onShow = output<void>({ alias: 'tpOnShow' });\n\n readonly onHide = output<void>({ alias: 'tpOnHide' });\n\n readonly isVisible = model(false, { alias: 'tpIsVisible' });\n\n visible = output<boolean>({ alias: 'tpVisible' });\n\n protected instance!: TippyInstance;\n protected viewRef: ViewRef | null = null;\n protected props!: Partial<TippyConfig>;\n protected variationDefined = false;\n protected viewOptions$: ViewOptions | null = null;\n\n /**\n * We had use `visible` event emitter previously as a `takeUntil` subscriber in multiple places\n * within the directive.\n * This is for internal use only; thus we don't have to deal with the `visible` event emitter\n * and trigger change detections only when the `visible` event is being listened outside\n * in the template (`<button [tippy]=\"...\" (visible)=\"...\"></button>`).\n */\n protected visibleInternal = new Subject<boolean>();\n private visibilityObserverCleanup: VoidFunction | null = null;\n private contentChanged = new Subject<void>();\n\n private host = computed<HTMLElement>(\n () => this.customHost() || this.hostRef.nativeElement,\n );\n\n // It should be a getter because computations are cached until\n // any of the producers change.\n private get hostWidth() {\n return this.host().getBoundingClientRect().width;\n }\n\n private destroyRef = inject(DestroyRef);\n private isServer =\n // Drop `isPlatformServer` once `ngServeMode` is available during compilation.\n (typeof ngServerMode !== 'undefined' && ngServerMode) ||\n isPlatformServer(inject(PLATFORM_ID));\n private tippyFactory = inject(TippyFactory);\n private destroyed = false;\n private created = false;\n\n protected globalConfig = inject(TIPPY_CONFIG);\n protected injector = inject(Injector);\n protected viewService = inject(ViewService);\n protected vcr = inject(ViewContainerRef);\n protected ngZone = inject(NgZone);\n protected hostRef = inject(ElementRef);\n\n constructor() {\n if (this.isServer) return;\n\n this.setupListeners();\n\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.instance?.destroy();\n this.destroyView();\n this.visibilityObserverCleanup?.();\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isServer) return;\n\n const variation = this.variation() || this.globalConfig.defaultVariation || '';\n const props = Object.keys(changes)\n // `isVisible` is not required as a prop since we update it manually\n // in an effect-like manner.\n .filter((key) => key !== 'isVisible')\n .reduce(\n (accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }),\n { ...this.globalConfig.variations?.[variation] },\n );\n\n this.updateProps(props);\n }\n\n ngOnInit() {\n if (this.useHostWidth()) {\n this.props.maxWidth = this.hostWidth;\n }\n }\n\n ngAfterViewInit() {\n if (this.isServer) return;\n\n if (this.isLazy()) {\n const hostInView$ = inView(this.host());\n\n if (this.onlyTextOverflow()) {\n hostInView$\n .pipe(\n switchMap(() => this.isOverflowing$()),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((isElementOverflow) => {\n this.checkOverflow(isElementOverflow);\n });\n } else {\n hostInView$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.createInstance();\n });\n }\n } else if (this.onlyTextOverflow()) {\n this.isOverflowing$()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((isElementOverflow) => {\n this.checkOverflow(isElementOverflow);\n });\n } else {\n this.createInstance();\n }\n }\n\n destroyView() {\n this.viewOptions$ = null;\n this.viewRef?.destroy();\n this.viewRef = null;\n }\n\n /**\n * This method is useful when you append to an element that you might remove from the DOM.\n * In such cases we want to hide the tooltip and let it go through the destroy lifecycle.\n * For example, if you have a grid row with an element that you toggle using the display CSS property on hover.\n */\n observeHostVisibility() {\n if (this.isServer) return;\n // We don't want to observe the host visibility if we are appending to the body.\n if (this.props.appendTo && this.props.appendTo !== document.body) {\n this.visibilityObserverCleanup?.();\n return this.visibleInternal\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((isVisible) => {\n if (isVisible) {\n this.visibilityObserverCleanup = observeVisibility(\n this.instance.reference,\n () => {\n this.hide();\n // Because we have animation on the popper it doesn't close immediately doesn't trigger the `tpVisible` event.\n // Tippy is relying on the transitionend event to trigger the `onHidden` callback.\n // https://github.com/atomiks/tippyjs/blob/master/src/dom-utils.ts#L117\n // This event never fires because the popper is removed from the DOM before the transition ends.\n if (this.props.animation) {\n this.onHidden();\n }\n },\n );\n } else {\n this.visibilityObserverCleanup?.();\n }\n });\n }\n }\n\n show() {\n this.instance?.show();\n }\n\n hide() {\n this.instance?.hide();\n }\n\n enable() {\n this.instance?.enable();\n }\n\n disable() {\n this.instance?.disable();\n }\n\n protected updateProps(props: Partial<TippyConfig>) {\n this.setProps({ ...this.props, ...props });\n }\n\n protected setProps(props: Partial<TippyConfig>) {\n this.props = props;\n this.instance?.setProps(onlyTippyProps(props));\n }\n\n protected setStatus(isEnabled: boolean) {\n isEnabled ? this.instance?.enable() : this.instance?.disable();\n }\n\n protected hasContent(): boolean {\n return !!(this.content() || this.useTextContent());\n }\n\n protected createInstance() {\n if (this.created || !this.hasContent()) {\n return;\n }\n\n this.created = true;\n\n this.tippyFactory\n .create(this.host(), {\n appendTo,\n allowHTML: true,\n ...(this.globalConfig.zIndexGetter\n ? { zIndex: this.globalConfig.zIndexGetter() }\n : {}),\n ...onlyTippyProps(this.globalConfig),\n ...onlyTippyProps(this.props),\n onMount: (instance) => {\n const isVisible = true;\n this.isVisible.set(isVisible);\n this.visibleInternal.next(isVisible);\n this.ngZone.run(() => this.visible.emit(isVisible));\n this.useHostWidth() && this.listenToHostResize();\n this.globalConfig.onMount?.(instance);\n },\n onCreate: (instance) => {\n instance.popper.classList.add(\n `tippy-variation-${this.variation() || this.globalConfig.defaultVariation}`,\n );\n if (this.className()) {\n for (const klass of normalizeClassName(this.className())) {\n instance.popper.classList.add(klass);\n }\n }\n this.globalConfig.onCreate?.(instance);\n if (this.isVisible() === true) {\n instance.show();\n }\n },\n onShow: (instance) => {\n instance.reference.setAttribute('data-tippy-open', '');\n\n // We're re-entering because we might create an Angular component,\n // which should be done within the zone.\n const content = this.ngZone.run(() => this.resolveContent(instance));\n\n if (isString(content)) {\n instance.setProps({ allowHTML: false });\n\n if (!content?.trim()) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n instance.setContent(content);\n this.hideOnEscape() && this.handleEscapeButton();\n\n if (this.useHostWidth()) {\n this.setInstanceWidth(instance, this.hostWidth);\n } else if (this.popperWidth()) {\n this.setInstanceWidth(instance, this.popperWidth()!);\n }\n this.globalConfig.onShow?.(instance);\n this.onShow.emit();\n },\n onHide(instance) {\n instance.reference.removeAttribute('data-tippy-open');\n },\n onHidden: (instance) => {\n this.onHidden(instance);\n },\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((instance) => {\n this.instance = instance;\n\n this.setStatus(this.isEnabled());\n this.setProps(this.props);\n\n this.variation() === 'contextMenu' && this.handleContextMenu();\n });\n }\n\n protected resolveContent(instance: TippyInstance) {\n const content = this.content();\n\n if (!this.viewOptions$ && !isString(content)) {\n const injector = Injector.create({\n providers: [\n {\n provide: TIPPY_REF,\n useValue: this.instance,\n },\n ],\n parent: this.injector,\n });\n\n const data = this.data();\n\n if (isComponent(content)) {\n this.instance.data = data;\n\n this.viewOptions$ = {\n injector,\n };\n } else if (isTemplateRef(content)) {\n this.viewOptions$ = {\n injector,\n context: {\n data,\n $implicit: this.hide.bind(this),\n },\n };\n }\n }\n\n this.viewRef = this.viewService.createView(content!, {\n vcr: this.vcr,\n ...this.viewOptions$,\n });\n\n // We need to call `detectChanges` for OnPush components to update their content.\n if (isComponent(content)) {\n // `ɵcmp` is a component defition set for any component.\n // Checking the `onPush` property of the component definition is a\n // smarter way to determine whether we need to call `detectChanges()`,\n // as users may be unaware of setting the binding.\n const isOnPush = (content as { ɵcmp?: { onPush: boolean } }).ɵcmp?.onPush;\n if (isOnPush) {\n this.viewRef.detectChanges();\n }\n }\n\n let newContent = this.viewRef.getElement();\n\n if (this.useTextContent()) {\n newContent = instance.reference.textContent!;\n }\n\n if (isString(newContent) && this.globalConfig.beforeRender) {\n newContent = this.globalConfig.beforeRender(newContent);\n }\n\n return newContent;\n }\n\n protected handleContextMenu() {\n const host = this.host();\n const onContextMenu = (event: MouseEvent) => {\n event.preventDefault();\n\n this.instance.setProps({\n getReferenceClientRect: () =>\n ({\n width: 0,\n height: 0,\n top: event.clientY,\n bottom: event.clientY,\n left: event.clientX,\n right: event.clientX,\n }) as DOMRectReadOnly,\n });\n\n this.instance.show();\n };\n\n host.addEventListener('contextmenu', onContextMenu);\n this.destroyRef.onDestroy(() =>\n host.removeEventListener('contextmenu', onContextMenu),\n );\n }\n\n protected handleEscapeButton(): void {\n const onKeydown = (event: KeyboardEvent) => {\n if (event.code === 'Escape') {\n this.hide();\n }\n };\n\n document.body.addEventListener('keydown', onKeydown);\n\n // Remove listener when `visibleInternal` becomes false.\n const visibleSubscription = this.visibleInternal.subscribe((v) => {\n if (!v) {\n document.body.removeEventListener('keydown', onKeydown);\n visibleSubscription.unsubscribe();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n document.body.removeEventListener('keydown', onKeydown);\n visibleSubscription.unsubscribe();\n });\n }\n\n protected checkOverflow(isElementOverflow: boolean) {\n if (isElementOverflow) {\n if (!this.instance) {\n this.createInstance();\n } else {\n this.instance.enable();\n }\n } else {\n this.instance?.disable();\n }\n }\n\n protected listenToHostResize() {\n dimensionsChanges(this.host())\n .pipe(takeUntil(this.visibleInternal), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setInstanceWidth(this.instance, this.hostWidth);\n });\n }\n\n protected setInstanceWidth(instance: Instance, width: string | number) {\n const inPixels = coerceCssPixelValue(width);\n instance.popper.style.width = inPixels;\n instance.popper.style.maxWidth = inPixels;\n (instance.popper.firstElementChild as HTMLElement).style.maxWidth = inPixels;\n }\n\n private onHidden(instance: TippyInstance = this.instance) {\n this.destroyView();\n const isVisible = false;\n // `model()` uses `OutputEmitterRef` internally to emit events when the\n // signal changes. If the directive is destroyed, it will throw an error:\n // \"Unexpected emit for destroyed `OutputRef`\".\n if (!this.destroyed) {\n this.isVisible.set(isVisible);\n this.ngZone.run(() => this.visible.emit(isVisible));\n this.onHide.emit();\n }\n this.visibleInternal.next(isVisible);\n\n this.globalConfig.onHidden?.(instance);\n }\n\n private isOverflowing$() {\n const host = this.host();\n const notifiers$ = [overflowChanges(host)];\n\n // We need to handle cases where the host has a static width but the content might change\n if (this.staticWidthHost()) {\n notifiers$.push(\n this.contentChanged.pipe(\n // We need to wait for the content to be rendered before we can check if it's overflowing.\n switchMap(() => {\n return new Observable<boolean>((subscriber) => {\n const id = window.requestAnimationFrame(() => {\n subscriber.next(isElementOverflow(host));\n subscriber.complete();\n });\n\n return () => cancelAnimationFrame(id);\n });\n }),\n ),\n );\n }\n\n return merge(...notifiers$);\n }\n\n private setupListeners(): void {\n effect(() => {\n // Capture signal read to track its changes.\n this.content();\n untracked(() => this.contentChanged.next());\n });\n\n effect(() => this.setStatus(this.isEnabled()));\n\n effect(() => {\n const isVisible = this.isVisible();\n isVisible ? this.show() : this.hide();\n });\n\n effect(() => {\n const hasContent = this.hasContent();\n\n if (hasContent && !this.instance && !this.isLazy() && !this.onlyTextOverflow()) {\n this.createInstance();\n } else if (!hasContent && this.instance) {\n this.instance.destroy();\n this.instance = null as any;\n this.destroyView();\n this.created = false;\n }\n });\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport {\n isComponent,\n isTemplateRef,\n ResolveViewRef,\n ViewService,\n} from '@ngneat/overview';\nimport { Content } from '@ngneat/overview';\nimport type { Observable } from 'rxjs';\n\nimport {\n CreateOptions,\n ExtendedTippyInstance,\n TIPPY_CONFIG,\n TippyInstance,\n} from '@ngneat/helipopper/config';\n\nimport { TIPPY_REF } from './inject-tippy';\nimport { TippyFactory } from './tippy.factory';\nimport { normalizeClassName, onlyTippyProps } from './utils';\n\n@Injectable({ providedIn: 'root' })\nexport class TippyService {\n private readonly _injector = inject(Injector);\n private readonly _globalConfig = inject(TIPPY_CONFIG, { optional: true });\n private readonly _viewService = inject(ViewService);\n private readonly _tippyFactory = inject(TippyFactory);\n\n create<T extends Content>(\n host: HTMLElement,\n content: T,\n options: Partial<CreateOptions> = {},\n ): Observable<ExtendedTippyInstance<T>> {\n const variation = options.variation || this._globalConfig?.defaultVariation || '';\n const config = {\n onShow: (instance: ExtendedTippyInstance<T>) => {\n host.setAttribute('data-tippy-open', '');\n if (!instance.$viewOptions) {\n instance.$viewOptions = {\n injector: Injector.create({\n providers: [\n {\n provide: TIPPY_REF,\n useValue: instance,\n },\n ],\n parent: options.injector || this._injector,\n }),\n };\n\n if (isTemplateRef(content)) {\n instance.$viewOptions.context = {\n $implicit: instance.hide.bind(instance),\n ...options.context,\n };\n } else if (isComponent(content)) {\n instance.context = options.context;\n instance.data = options.data;\n }\n }\n\n instance.view ||= this._viewService.createView(content, {\n ...options,\n ...instance.$viewOptions,\n }) as ResolveViewRef<T>;\n\n instance.setContent(instance.view.getElement());\n options?.onShow?.(instance);\n },\n onHidden: (instance: ExtendedTippyInstance<T>) => {\n host.removeAttribute('data-tippy-open');\n\n if (!options.preserveView) {\n instance.view?.destroy();\n instance.view = null;\n }\n options?.onHidden?.(instance);\n },\n ...onlyTippyProps(this._globalConfig),\n ...this._globalConfig?.variations?.[variation],\n ...onlyTippyProps(options),\n onCreate: (instance: TippyInstance) => {\n instance.popper.classList.add(`tippy-variation-${variation}`);\n if (options.className) {\n for (const klass of normalizeClassName(options.className)) {\n instance.popper.classList.add(klass);\n }\n }\n this._globalConfig?.onCreate?.(instance);\n options.onCreate?.(instance);\n },\n };\n\n return this._tippyFactory.create(host, config) as Observable<\n ExtendedTippyInstance<T>\n >;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["isPromise","map","originalBooleanAttribute"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngneat-helipopper.mjs","sources":["../../../../projects/ngneat/helipopper/src/lib/intersection-observer.ts","../../../../projects/ngneat/helipopper/src/lib/utils.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.factory.ts","../../../../projects/ngneat/helipopper/src/lib/inject-tippy.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.service.ts","../../../../projects/ngneat/helipopper/src/lib/coercion.ts","../../../../projects/ngneat/helipopper/src/lib/tippy.directive.ts","../../../../projects/ngneat/helipopper/src/ngneat-helipopper.ts"],"sourcesContent":["// Let's retrieve the native `IntersectionObserver` implementation hidden by\n// `__zone_symbol__IntersectionObserver`. This would be the unpatched version of\n// the observer present in zone.js environments.\n// Otherwise, if the user is using zoneless change detection (and zone.js is not included),\n// we fall back to the native implementation. Accessing the native implementation\n// allows us to remove `runOutsideAngular` calls and reduce indentation,\n// making the code a bit more readable.\nexport const IntersectionObserver: typeof globalThis.IntersectionObserver =\n (globalThis as any)['__zone_symbol__IntersectionObserver'] ||\n globalThis.IntersectionObserver;\n","import { ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { auditTime, map } from 'rxjs/operators';\nimport type { TippyElement } from '@ngneat/helipopper/config';\n\nimport { IntersectionObserver } from './intersection-observer';\n\nlet supportsIntersectionObserver = false;\nlet supportsResizeObserver = false;\n\nif (typeof window !== 'undefined') {\n supportsIntersectionObserver = 'IntersectionObserver' in window;\n supportsResizeObserver = 'ResizeObserver' in window;\n}\n\nexport const enum TippyErrorCode {\n TippyNotProvided = 1,\n}\n\nexport function inView(\n host: TippyElement,\n options: IntersectionObserverInit = {\n root: null,\n threshold: 0.3,\n },\n) {\n const element = coerceElement(host);\n\n return new Observable<void>((subscriber) => {\n if (!supportsIntersectionObserver) {\n subscriber.next();\n subscriber.complete();\n return;\n }\n\n const observer = new IntersectionObserver((entries) => {\n // Several changes may occur in the same tick, we want to check the latest entry state.\n const entry = entries[entries.length - 1];\n if (entry.isIntersecting) {\n subscriber.next();\n subscriber.complete();\n }\n }, options);\n\n observer.observe(element);\n\n return () => observer.disconnect();\n });\n}\n\nexport function isElementOverflow(host: HTMLElement): boolean {\n // Don't access the `offsetWidth`/`offsetHeight` multiple times since it triggers layout updates.\n const hostOffsetWidth = host.offsetWidth;\n const hostOffsetHeight = host.offsetHeight;\n\n return (\n hostOffsetWidth > host.parentElement!.offsetWidth ||\n hostOffsetWidth < host.scrollWidth ||\n hostOffsetHeight < host.scrollHeight\n );\n}\n\nexport function overflowChanges(host: TippyElement) {\n const element = coerceElement(host);\n\n return dimensionsChanges(element).pipe(\n auditTime(150),\n map(() => isElementOverflow(element)),\n );\n}\n\nexport function dimensionsChanges(target: HTMLElement) {\n return new Observable<void>((subscriber) => {\n if (!supportsResizeObserver) {\n subscriber.next();\n subscriber.complete();\n return;\n }\n\n const observer = new ResizeObserver(() => subscriber.next());\n observer.observe(target);\n return () => observer.disconnect();\n });\n}\n\nexport function onlyTippyProps(allProps: any) {\n const tippyProps: any = {};\n\n if (!allProps) {\n return tippyProps;\n }\n\n const ownProps = [\n 'useTextContent',\n 'variations',\n 'useHostWidth',\n 'defaultVariation',\n 'beforeRender',\n 'isLazy',\n 'variation',\n 'isEnabled',\n 'className',\n 'onlyTextOverflow',\n 'data',\n 'content',\n 'context',\n 'hideOnEscape',\n 'customHost',\n 'injector',\n 'preserveView',\n 'vcr',\n 'popperWidth',\n 'zIndexGetter',\n 'staticWidthHost',\n 'bindings',\n 'directives',\n ];\n\n const overriddenMethods = ['onShow', 'onHidden', 'onCreate'];\n\n Object.keys(allProps).forEach((prop) => {\n if (!ownProps.includes(prop) && !overriddenMethods.includes(prop)) {\n tippyProps[prop] = allProps[prop];\n }\n });\n\n return tippyProps;\n}\n\nexport function normalizeClassName(className: string | string[]): string[] {\n const classes = typeof className === 'string' ? className.split(' ') : className;\n\n return classes.map((klass) => klass?.trim()).filter(Boolean);\n}\n\nexport function coerceCssPixelValue<T>(value: T): string {\n if (value == null) {\n return '';\n }\n\n return typeof value === 'string' ? value : `${value}px`;\n}\n\nfunction coerceElement(element: TippyElement) {\n return element instanceof ElementRef ? element.nativeElement : element;\n}\n\nlet observer: IntersectionObserver;\nconst elementHiddenHandlers = new WeakMap<Element, () => void>();\nexport function observeVisibility(host: Element, hiddenHandler: () => void) {\n observer ??= new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n elementHiddenHandlers.get(entry.target)!();\n }\n });\n });\n elementHiddenHandlers.set(host, hiddenHandler);\n observer.observe(host);\n\n return () => {\n elementHiddenHandlers.delete(host);\n observer.unobserve(host);\n };\n}\n","import type tippy from 'tippy.js';\nimport { inject, Injectable, NgZone, ɵisPromise as isPromise } from '@angular/core';\nimport { defer, map, Observable, of, tap } from 'rxjs';\nimport { TIPPY_LOADER, type TippyProps } from '@ngneat/helipopper/config';\n\n@Injectable({ providedIn: 'root' })\nexport class TippyFactory {\n private readonly _ngZone = inject(NgZone);\n\n private readonly _loader = inject(TIPPY_LOADER);\n\n private _tippyImpl$: Observable<typeof tippy> | null = null;\n private _tippy: typeof tippy | null = null;\n\n /**\n * This returns an observable because the user should provide a `loader`\n * function, which may return a promise if the tippy.js library is to be\n * loaded asynchronously.\n */\n create(target: HTMLElement, props?: Partial<TippyProps>) {\n this._tippyImpl$ ||= defer(() => {\n if (this._tippy) return of(this._tippy);\n\n // Call the `loader` function lazily — only when a subscriber\n // arrives — to avoid importing `tippy.js` on the server.\n const maybeTippy = this._ngZone.runOutsideAngular(() => this._loader());\n\n let tippy$: Observable<typeof tippy>;\n // We need to use `isPromise` instead of checking whether\n // `result instanceof Promise`. In zone.js patched environments, `global.Promise`\n // is the `ZoneAwarePromise`. Some APIs, which are likely not patched by zone.js\n // for certain reasons, might not work with `instanceof`. For instance, the dynamic\n // import `() => import('./chunk.js')` returns a native promise (not a `ZoneAwarePromise`),\n // causing this check to be falsy.\n if (isPromise(maybeTippy)) {\n // This pulls less RxJS symbols compared to using `from()` to resolve a promise value.\n tippy$ = new Observable((subscriber) => {\n maybeTippy.then((tippy) => {\n subscriber.next(tippy.default);\n subscriber.complete();\n });\n });\n } else {\n tippy$ = of(maybeTippy);\n }\n\n return tippy$.pipe(\n tap((tippy) => {\n this._tippy = tippy;\n })\n );\n });\n\n return this._tippyImpl$.pipe(\n map((tippy) => {\n return this._ngZone.runOutsideAngular(() => tippy(target, props));\n })\n );\n }\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport type { TippyInstance } from '@ngneat/helipopper/config';\n\nimport { TippyErrorCode } from './utils';\n\nexport const TIPPY_REF = /* @__PURE__ */ new InjectionToken<TippyInstance>(\n ngDevMode ? 'TIPPY_REF' : '',\n);\n\nexport function injectTippyRef(): TippyInstance {\n const instance = inject(TIPPY_REF, { optional: true });\n\n if (!instance) {\n if (ngDevMode) {\n throw new Error(\n 'tp is not provided in the current context or on one of its ancestors',\n );\n } else {\n throw new Error(`[tp]: ${TippyErrorCode.TippyNotProvided}`);\n }\n }\n\n return instance;\n}\n","import { inject, Injectable, Injector, signal } from '@angular/core';\nimport {\n isComponent,\n isTemplateRef,\n ResolveViewRef,\n ViewService,\n} from '@ngneat/overview';\nimport { Content } from '@ngneat/overview';\nimport type { Observable } from 'rxjs';\n\nimport {\n CreateOptions,\n ExtendedTippyInstance,\n TIPPY_CONFIG,\n TippyInstance,\n} from '@ngneat/helipopper/config';\n\nimport { TIPPY_REF } from './inject-tippy';\nimport { TippyFactory } from './tippy.factory';\nimport { normalizeClassName, onlyTippyProps } from './utils';\n\n@Injectable({ providedIn: 'root' })\nexport class TippyService {\n private readonly _injector = inject(Injector);\n private readonly _globalConfig = inject(TIPPY_CONFIG, { optional: true });\n private readonly _viewService = inject(ViewService);\n private readonly _tippyFactory = inject(TippyFactory);\n\n readonly enabled = signal(true);\n\n enableAll(): void {\n this.enabled.set(true);\n }\n\n disableAll(): void {\n this.enabled.set(false);\n }\n\n create<T extends Content>(\n host: HTMLElement,\n content: T,\n options: Partial<CreateOptions> = {},\n ): Observable<ExtendedTippyInstance<T>> {\n const variation = options.variation || this._globalConfig?.defaultVariation || '';\n const config = {\n onShow: (instance: ExtendedTippyInstance<T>) => {\n host.setAttribute('data-tippy-open', '');\n if (!instance.$viewOptions) {\n instance.$viewOptions = {\n injector: Injector.create({\n providers: [\n {\n provide: TIPPY_REF,\n useValue: instance,\n },\n ],\n parent: options.injector || this._injector,\n }),\n };\n\n if (isTemplateRef(content)) {\n instance.$viewOptions.context = {\n $implicit: instance.hide.bind(instance),\n ...options.context,\n };\n } else if (isComponent(content)) {\n instance.context = options.context;\n instance.data = options.data;\n }\n }\n\n instance.view ||= this._viewService.createView(content, {\n ...options,\n ...instance.$viewOptions,\n }) as ResolveViewRef<T>;\n\n instance.setContent(instance.view.getElement());\n options?.onShow?.(instance);\n },\n onHidden: (instance: ExtendedTippyInstance<T>) => {\n host.removeAttribute('data-tippy-open');\n\n if (!options.preserveView) {\n instance.view?.destroy();\n instance.view = null;\n }\n options?.onHidden?.(instance);\n },\n ...onlyTippyProps(this._globalConfig),\n ...this._globalConfig?.variations?.[variation],\n ...onlyTippyProps(options),\n onCreate: (instance: TippyInstance) => {\n instance.popper.classList.add(`tippy-variation-${variation}`);\n if (options.className) {\n for (const klass of normalizeClassName(options.className)) {\n instance.popper.classList.add(klass);\n }\n }\n this._globalConfig?.onCreate?.(instance);\n options.onCreate?.(instance);\n },\n };\n\n return this._tippyFactory.create(host, config) as Observable<\n ExtendedTippyInstance<T>\n >;\n }\n}\n","import { booleanAttribute as originalBooleanAttribute } from '@angular/core';\n\ntype BooleanInput = boolean | `${boolean}` | '' | null | undefined;\n\n/**\n * Transforms a value (typically a string) to a boolean.\n * Intended to be used as a transform function of an input.\n *\n * @see https://material.angular.io/cdk/coercion/overview\n */\nconst coerceBooleanAttribute: (value: BooleanInput) => boolean = originalBooleanAttribute;\n\nexport { coerceBooleanAttribute };\n","import {\n afterEveryRender,\n AfterViewInit,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n InputSignal,\n model,\n NgZone,\n OnChanges,\n output,\n PLATFORM_ID,\n SimpleChanges,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport type { Instance } from 'tippy.js';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport {\n Content,\n isComponent,\n isString,\n isTemplateRef,\n ViewOptions,\n ViewRef,\n ViewService,\n} from '@ngneat/overview';\n\nimport {\n coerceCssPixelValue,\n dimensionsChanges,\n inView,\n isElementOverflow,\n normalizeClassName,\n observeVisibility,\n onlyTippyProps,\n overflowChanges,\n} from './utils';\nimport {\n TIPPY_CONFIG,\n TippyConfig,\n TippyInstance,\n TippyProps,\n} from '@ngneat/helipopper/config';\nimport { TippyFactory } from './tippy.factory';\nimport { TippyService } from './tippy.service';\nimport { coerceBooleanAttribute } from './coercion';\nimport { TIPPY_REF } from './inject-tippy';\n\n// An arrow function defined inside a method closes over the method's lexical scope,\n// causing V8 to allocate a Context object that indirectly references the directive\n// instance — keeping it alive after destroy.\n//\n// A bound function (JSBoundFunction) has no [[context]] field in V8's heap layout;\n// it only stores { bound_target_function, bound_this, bound_arguments }.\n// Binding to `null` produces a context-free callable, breaking the retention chain.\nconst appendTo = function appendTo() {\n return document.fullscreenElement || document.body;\n}.bind(null);\n\n// These are the default values used by `tippy.js`.\n// We are providing them as default input values.\n// The `tippy.js` repository has been archived and is unlikely to\n// change in the future, so it is safe to use these values as defaults.\nconst defaultAppendTo: TippyProps['appendTo'] = () => document.body;\nconst defaultDelay: TippyProps['delay'] = 0;\nconst defaultDuration: TippyProps['duration'] = [300, 250];\nconst defaultInteractiveBorder: TippyProps['interactiveBorder'] = 2;\nconst defaultMaxWidth: TippyProps['maxWidth'] = 350;\nconst defaultOffset: TippyProps['offset'] = [0, 10];\nconst defaultPlacement: TippyProps['placement'] = 'top';\nconst defaultTrigger: TippyProps['trigger'] = 'mouseenter focus';\nconst defaultTriggerTarget: TippyProps['triggerTarget'] = null;\nconst defaultZIndex: TippyProps['zIndex'] = 9999;\nconst defaultAnimation: TippyProps['animation'] = 'fade';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[tp]',\n exportAs: 'tippy',\n})\nexport class TippyDirective implements OnChanges, AfterViewInit {\n readonly appendTo = input(defaultAppendTo, {\n alias: 'tpAppendTo',\n });\n\n readonly content = input<Content | undefined | null>('', { alias: 'tp' });\n\n readonly delay = input(defaultDelay, {\n alias: 'tpDelay',\n });\n\n readonly duration = input(defaultDuration, {\n alias: 'tpDuration',\n });\n\n readonly hideOnClick = input(true, {\n alias: 'tpHideOnClick',\n });\n\n readonly interactive = input(false, {\n alias: 'tpInteractive',\n });\n\n readonly interactiveBorder = input(defaultInteractiveBorder, {\n alias: 'tpInteractiveBorder',\n });\n\n readonly maxWidth = input(defaultMaxWidth, {\n alias: 'tpMaxWidth',\n });\n\n // Note that some of the input signal types are declared explicitly because the compiler\n // also uses types from `@popperjs/core` and requires a type annotation.\n readonly offset: InputSignal<TippyProps['offset']> = input(defaultOffset, {\n alias: 'tpOffset',\n });\n\n readonly placement: InputSignal<TippyProps['placement']> = input(defaultPlacement, {\n alias: 'tpPlacement',\n });\n\n readonly popperOptions: InputSignal<TippyProps['popperOptions']> = input(\n {},\n {\n alias: 'tpPopperOptions',\n },\n );\n\n readonly showOnCreate = input(false, {\n alias: 'tpShowOnCreate',\n });\n\n readonly trigger = input(defaultTrigger, {\n alias: 'tpTrigger',\n });\n\n readonly triggerTarget = input(defaultTriggerTarget, {\n alias: 'tpTriggerTarget',\n });\n\n readonly zIndex = input(defaultZIndex, {\n alias: 'tpZIndex',\n });\n\n readonly animation = input(defaultAnimation, {\n alias: 'tpAnimation',\n });\n\n readonly useTextContent = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpUseTextContent',\n });\n\n readonly isLazy = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpIsLazy',\n });\n\n readonly variation = input<string | undefined>(undefined, { alias: 'tpVariation' });\n\n readonly isEnabled = input(true, { alias: 'tpIsEnabled' });\n\n readonly className = input<string | string[]>('', { alias: 'tpClassName' });\n\n readonly onlyTextOverflow = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpOnlyTextOverflow',\n });\n\n readonly staticWidthHost = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpStaticWidthHost',\n });\n\n readonly data = input<any>(undefined, { alias: 'tpData' });\n\n /** Angular `inputBinding`/`outputBinding`/`twoWayBinding` descriptors forwarded to `createComponent`. */\n readonly bindings = input<ViewOptions['bindings']>(undefined, { alias: 'tpBindings' });\n\n /** Host directives (with optional bindings) forwarded to `createComponent`. */\n readonly directives = input<ViewOptions['directives']>(undefined, {\n alias: 'tpDirectives',\n });\n\n readonly useHostWidth = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpUseHostWidth',\n });\n\n readonly hideOnEscape = input(false, {\n transform: coerceBooleanAttribute,\n alias: 'tpHideOnEscape',\n });\n\n readonly popperWidth = input<number | string | undefined>(undefined, {\n alias: 'tpPopperWidth',\n });\n\n readonly customHost = input<HTMLElement | undefined>(undefined, { alias: 'tpHost' });\n\n readonly onShow = output<void>({ alias: 'tpOnShow' });\n\n readonly onHide = output<void>({ alias: 'tpOnHide' });\n\n readonly isVisible = model(false, { alias: 'tpIsVisible' });\n\n visible = output<boolean>({ alias: 'tpVisible' });\n\n protected instance!: TippyInstance;\n protected viewRef: ViewRef | null = null;\n protected props!: Partial<TippyConfig>;\n protected variationDefined = false;\n protected viewOptions$: ViewOptions | null = null;\n\n /**\n * We had use `visible` event emitter previously as a `takeUntil` subscriber in multiple places\n * within the directive.\n * This is for internal use only; thus we don't have to deal with the `visible` event emitter\n * and trigger change detections only when the `visible` event is being listened outside\n * in the template (`<button [tippy]=\"...\" (visible)=\"...\"></button>`).\n */\n protected visibleInternal = new Subject<boolean>();\n private visibilityObserverCleanup: VoidFunction | null = null;\n private contentChanged = new Subject<void>();\n\n private host = computed<HTMLElement>(\n () => this.customHost() || this.hostRef.nativeElement,\n );\n\n // It should be a getter because computations are cached until\n // any of the producers change.\n private get hostWidth() {\n return this.host().getBoundingClientRect().width;\n }\n\n private destroyRef = inject(DestroyRef);\n private tippyService = inject(TippyService);\n private isServer =\n // Drop `isPlatformServer` once `ngServeMode` is available during compilation.\n (typeof ngServerMode !== 'undefined' && ngServerMode) ||\n isPlatformServer(inject(PLATFORM_ID));\n private tippyFactory = inject(TippyFactory);\n private destroyed = false;\n private created = false;\n\n protected globalConfig = inject(TIPPY_CONFIG);\n protected injector = inject(Injector);\n protected viewService = inject(ViewService);\n protected vcr = inject(ViewContainerRef);\n protected ngZone = inject(NgZone);\n protected hostRef = inject(ElementRef);\n\n constructor() {\n if (this.isServer) return;\n\n this.setupListeners();\n\n // `afterEveryRender` fires synchronously within Angular's CD cycle.\n // This lets us update the enabled/disabled state of the instance BEFORE a\n // synthetic mouseenter event is dispatched, which fixes test timing when\n // Angular-triggered changes (content/style bindings) cause the overflow\n // state to change. ResizeObserver (`overflowChanges`) remains as a fallback\n // for non-Angular-triggered resize events (browser window resize, etc.).\n afterEveryRender({\n read: () => {\n if (!this.onlyTextOverflow()) return;\n untracked(() => this.checkOverflow(isElementOverflow(this.host())));\n },\n });\n\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.instance?.destroy();\n this.destroyView();\n this.visibilityObserverCleanup?.();\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.isServer) return;\n\n // `isVisible` is not required as a prop since we update it manually\n // in an effect-like manner.\n const changedProps = Object.keys(changes)\n .filter((key) => key !== 'isVisible')\n .reduce(\n (accumulator, key) => ({ ...accumulator, [key]: changes[key].currentValue }),\n {} as Partial<TippyConfig>,\n );\n\n // Variation defaults are applied only on the first call or when the variation\n // input itself changes. Re-applying them on every ngOnChanges call would\n // overwrite explicitly-bound inputs (e.g. tpTrigger) with variation defaults\n // whenever any other input (e.g. tpData, tpIsEnabled) changes.\n if (!this.variationDefined || 'variation' in changes) {\n this.variationDefined = true;\n const variation = this.variation() || this.globalConfig.defaultVariation || '';\n this.setProps({\n ...this.globalConfig.variations?.[variation],\n ...this.props,\n ...changedProps,\n });\n } else {\n this.updateProps(changedProps);\n }\n }\n\n ngAfterViewInit() {\n if (this.isServer) return;\n\n if (this.isLazy()) {\n const hostInView$ = inView(this.host());\n\n if (this.onlyTextOverflow()) {\n hostInView$\n .pipe(\n switchMap(() => this.isOverflowing$()),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((isElementOverflow) => {\n this.checkOverflow(isElementOverflow);\n });\n } else {\n hostInView$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.createInstance();\n });\n }\n } else if (this.onlyTextOverflow()) {\n this.isOverflowing$()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((isElementOverflow) => {\n this.checkOverflow(isElementOverflow);\n });\n } else {\n this.createInstance();\n }\n }\n\n destroyView() {\n this.viewOptions$ = null;\n this.viewRef?.destroy();\n this.viewRef = null;\n }\n\n /**\n * This method is useful when you append to an element that you might remove from the DOM.\n * In such cases we want to hide the tooltip and let it go through the destroy lifecycle.\n * For example, if you have a grid row with an element that you toggle using the display CSS property on hover.\n */\n observeHostVisibility() {\n if (this.isServer) return;\n // We don't want to observe the host visibility if we are appending to the body.\n if (this.props.appendTo && this.props.appendTo !== document.body) {\n this.visibilityObserverCleanup?.();\n return this.visibleInternal\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((isVisible) => {\n if (isVisible) {\n this.visibilityObserverCleanup = observeVisibility(\n this.instance.reference,\n () => {\n this.hide();\n // Because we have animation on the popper it doesn't close immediately doesn't trigger the `tpVisible` event.\n // Tippy is relying on the transitionend event to trigger the `onHidden` callback.\n // https://github.com/atomiks/tippyjs/blob/master/src/dom-utils.ts#L117\n // This event never fires because the popper is removed from the DOM before the transition ends.\n if (this.props.animation) {\n this.onHidden();\n }\n },\n );\n } else {\n this.visibilityObserverCleanup?.();\n }\n });\n }\n }\n\n show() {\n this.instance?.show();\n }\n\n hide() {\n this.instance?.hide();\n }\n\n enable() {\n this.instance?.enable();\n }\n\n disable() {\n this.instance?.disable();\n }\n\n protected updateProps(props: Partial<TippyConfig>) {\n this.setProps({ ...this.props, ...props });\n }\n\n protected setProps(props: Partial<TippyConfig>) {\n this.props = props;\n this.instance?.setProps(onlyTippyProps(props));\n }\n\n protected setStatus(isEnabled: boolean) {\n isEnabled ? this.instance?.enable() : this.instance?.disable();\n }\n\n protected hasContent(): boolean {\n return !!(this.content() || this.useTextContent());\n }\n\n protected createInstance() {\n if (this.created || !this.hasContent()) {\n return;\n }\n\n this.created = true;\n\n this.tippyFactory\n .create(this.host(), {\n appendTo,\n allowHTML: true,\n ...(this.globalConfig.zIndexGetter\n ? { zIndex: this.globalConfig.zIndexGetter() }\n : {}),\n ...onlyTippyProps(this.globalConfig),\n ...onlyTippyProps(this.props),\n onMount: (instance) => {\n const isVisible = true;\n this.isVisible.set(isVisible);\n this.visibleInternal.next(isVisible);\n this.ngZone.run(() => this.visible.emit(isVisible));\n this.useHostWidth() && this.listenToHostResize();\n this.globalConfig.onMount?.(instance);\n },\n onCreate: (instance) => {\n instance.popper.classList.add(\n `tippy-variation-${this.variation() || this.globalConfig.defaultVariation}`,\n );\n if (this.className()) {\n for (const klass of normalizeClassName(this.className())) {\n instance.popper.classList.add(klass);\n }\n }\n this.globalConfig.onCreate?.(instance);\n if (this.isVisible() === true) {\n instance.show();\n }\n },\n onShow: (instance) => {\n // In onlyTextOverflow mode the tooltip must not appear when the host is\n // not overflowing. Returning false from onShow prevents tippy from\n // showing regardless of the instance's enabled/disabled state. This\n // acts as a last-resort guard for cases where checkOverflow() hasn't\n // been called yet (e.g. Angular's scheduler hasn't flushed CD between\n // the content/width change and the trigger event).\n if (this.onlyTextOverflow() && !isElementOverflow(this.host())) {\n return false;\n }\n\n instance.reference.setAttribute('data-tippy-open', '');\n\n // We're re-entering because we might create an Angular component,\n // which should be done within the zone.\n const content = this.ngZone.run(() => this.resolveContent(instance));\n\n if (isString(content)) {\n instance.setProps({ allowHTML: false });\n\n if (!content?.trim()) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n instance.setContent(content);\n this.hideOnEscape() && this.handleEscapeButton();\n\n this.clearInstanceWidth(instance);\n if (this.useHostWidth()) {\n this.setInstanceWidth(instance, this.hostWidth);\n } else if (this.popperWidth()) {\n this.setInstanceWidth(instance, this.popperWidth()!);\n }\n this.globalConfig.onShow?.(instance);\n this.onShow.emit();\n },\n onHide(instance) {\n instance.reference.removeAttribute('data-tippy-open');\n },\n onHidden: (instance) => {\n this.onHidden(instance);\n },\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((instance) => {\n this.instance = instance;\n\n this.setStatus(this.isEnabled());\n this.setProps(this.props);\n\n this.variation() === 'contextMenu' && this.handleContextMenu();\n });\n }\n\n protected resolveContent(instance: TippyInstance) {\n const content = this.content();\n\n if (!this.viewOptions$ && !isString(content)) {\n const injector = Injector.create({\n providers: [\n {\n provide: TIPPY_REF,\n useValue: this.instance,\n },\n ],\n parent: this.injector,\n });\n\n const data = this.data();\n\n if (isComponent(content)) {\n this.instance.data = data;\n\n this.viewOptions$ = {\n injector,\n bindings: this.bindings(),\n directives: this.directives(),\n };\n } else if (isTemplateRef(content)) {\n this.viewOptions$ = {\n injector,\n context: {\n data,\n $implicit: this.hide.bind(this),\n },\n };\n }\n }\n\n this.viewRef = this.viewService.createView(content!, {\n vcr: this.vcr,\n ...this.viewOptions$,\n });\n\n // We need to call `detectChanges` for OnPush components to update their content.\n if (isComponent(content)) {\n // `ɵcmp` is a component defition set for any component.\n // Checking the `onPush` property of the component definition is a\n // smarter way to determine whether we need to call `detectChanges()`,\n // as users may be unaware of setting the binding.\n const isOnPush = (content as { ɵcmp?: { onPush: boolean } }).ɵcmp?.onPush;\n if (isOnPush) {\n this.viewRef.detectChanges();\n }\n }\n\n let newContent = this.viewRef.getElement();\n\n if (this.useTextContent()) {\n newContent = instance.reference.textContent!;\n }\n\n if (isString(newContent) && this.globalConfig.beforeRender) {\n newContent = this.globalConfig.beforeRender(newContent);\n }\n\n return newContent;\n }\n\n protected handleContextMenu() {\n const host = this.host();\n const onContextMenu = (event: MouseEvent) => {\n event.preventDefault();\n\n this.instance.setProps({\n getReferenceClientRect: () =>\n ({\n width: 0,\n height: 0,\n top: event.clientY,\n bottom: event.clientY,\n left: event.clientX,\n right: event.clientX,\n }) as DOMRectReadOnly,\n });\n\n this.instance.show();\n };\n\n host.addEventListener('contextmenu', onContextMenu);\n this.destroyRef.onDestroy(() =>\n host.removeEventListener('contextmenu', onContextMenu),\n );\n }\n\n protected handleEscapeButton(): void {\n const onKeydown = (event: KeyboardEvent) => {\n if (event.code === 'Escape') {\n this.hide();\n }\n };\n\n document.body.addEventListener('keydown', onKeydown);\n\n // Remove listener when `visibleInternal` becomes false.\n const visibleSubscription = this.visibleInternal.subscribe((v) => {\n if (!v) {\n document.body.removeEventListener('keydown', onKeydown);\n visibleSubscription.unsubscribe();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n document.body.removeEventListener('keydown', onKeydown);\n visibleSubscription.unsubscribe();\n });\n }\n\n protected checkOverflow(isElementOverflow: boolean) {\n if (isElementOverflow) {\n if (!this.instance) {\n this.createInstance();\n } else {\n this.instance.enable();\n }\n } else {\n this.instance?.disable();\n }\n }\n\n protected listenToHostResize() {\n dimensionsChanges(this.host())\n .pipe(takeUntil(this.visibleInternal), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setInstanceWidth(this.instance, this.hostWidth);\n });\n }\n\n protected clearInstanceWidth(instance: Instance) {\n instance.popper.style.width = '';\n instance.popper.style.maxWidth = '';\n (instance.popper.firstElementChild as HTMLElement).style.maxWidth = '';\n }\n\n protected setInstanceWidth(instance: Instance, width: string | number) {\n const inPixels = coerceCssPixelValue(width);\n instance.popper.style.width = inPixels;\n instance.popper.style.maxWidth = inPixels;\n (instance.popper.firstElementChild as HTMLElement).style.maxWidth = inPixels;\n }\n\n private onHidden(instance: TippyInstance = this.instance) {\n this.destroyView();\n const isVisible = false;\n // `model()` uses `OutputEmitterRef` internally to emit events when the\n // signal changes. If the directive is destroyed, it will throw an error:\n // \"Unexpected emit for destroyed `OutputRef`\".\n if (!this.destroyed) {\n this.isVisible.set(isVisible);\n this.ngZone.run(() => this.visible.emit(isVisible));\n this.onHide.emit();\n }\n this.visibleInternal.next(isVisible);\n\n this.globalConfig.onHidden?.(instance);\n }\n\n private isOverflowing$() {\n const host = this.host();\n const notifiers$ = [overflowChanges(host)];\n\n // We need to handle cases where the host has a static width but the content might change\n if (this.staticWidthHost()) {\n notifiers$.push(\n this.contentChanged.pipe(\n // We need to wait for the content to be rendered before we can check if it's overflowing.\n switchMap(() => {\n return new Observable<boolean>((subscriber) => {\n const id = window.requestAnimationFrame(() => {\n subscriber.next(isElementOverflow(host));\n subscriber.complete();\n });\n\n return () => cancelAnimationFrame(id);\n });\n }),\n ),\n );\n }\n\n return merge(...notifiers$);\n }\n\n private setupListeners(): void {\n effect(() => {\n // Capture signal read to track its changes.\n this.content();\n untracked(() => this.contentChanged.next());\n });\n\n effect(() => this.setStatus(this.tippyService.enabled() && this.isEnabled()));\n\n effect(() => {\n const maxWidth = this.useHostWidth() ? this.hostWidth : defaultMaxWidth;\n untracked(() => this.setProps({ ...this.props, maxWidth }));\n });\n\n effect(() => {\n const isVisible = this.isVisible();\n isVisible ? this.show() : this.hide();\n });\n\n effect(() => {\n const hasContent = this.hasContent();\n\n if (hasContent && !this.instance && !this.isLazy() && !this.onlyTextOverflow()) {\n this.createInstance();\n } else if (!hasContent && this.instance) {\n this.instance.destroy();\n this.instance = null as any;\n this.destroyView();\n this.created = false;\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["isPromise","map","originalBooleanAttribute"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngneat/helipopper",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "13.0.0",
|
|
4
4
|
"description": "A Powerful Tooltip and Popover for Angular Applications",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"tslib": "^2.3.0",
|
|
7
|
-
"@ngneat/overview": "^
|
|
7
|
+
"@ngneat/overview": "^8.1.0",
|
|
8
8
|
"tippy.js": "6.3.7"
|
|
9
9
|
},
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"@angular/core": ">=
|
|
11
|
+
"@angular/core": ">=21.0.0"
|
|
12
12
|
},
|
|
13
13
|
"keywords": [
|
|
14
14
|
"angular",
|
|
@@ -33,19 +33,20 @@
|
|
|
33
33
|
"url": "https://github.com/ngneat/helipopper"
|
|
34
34
|
},
|
|
35
35
|
"module": "fesm2022/ngneat-helipopper.mjs",
|
|
36
|
-
"typings": "
|
|
36
|
+
"typings": "types/ngneat-helipopper.d.ts",
|
|
37
37
|
"exports": {
|
|
38
38
|
"./package.json": {
|
|
39
39
|
"default": "./package.json"
|
|
40
40
|
},
|
|
41
41
|
".": {
|
|
42
|
-
"types": "./
|
|
42
|
+
"types": "./types/ngneat-helipopper.d.ts",
|
|
43
43
|
"default": "./fesm2022/ngneat-helipopper.mjs"
|
|
44
44
|
},
|
|
45
45
|
"./config": {
|
|
46
|
-
"types": "./config
|
|
46
|
+
"types": "./types/ngneat-helipopper-config.d.ts",
|
|
47
47
|
"default": "./fesm2022/ngneat-helipopper-config.mjs"
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
|
-
"sideEffects": false
|
|
50
|
+
"sideEffects": false,
|
|
51
|
+
"type": "module"
|
|
51
52
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import tippy, { Props, Instance } from 'tippy.js';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { InjectionToken, ElementRef, Provider } from '@angular/core';
|
|
4
4
|
import { ViewOptions, ResolveViewRef } from '@ngneat/overview';
|
|
5
5
|
|
|
6
6
|
interface CreateOptions extends Partial<TippyProps>, ViewOptions {
|
|
@@ -3,12 +3,12 @@ import { Subject, Observable } from 'rxjs';
|
|
|
3
3
|
import * as _ngneat_helipopper_config from '@ngneat/helipopper/config';
|
|
4
4
|
import { TippyProps, TippyInstance, TippyConfig, CreateOptions, ExtendedTippyInstance, TippyElement } from '@ngneat/helipopper/config';
|
|
5
5
|
import * as _angular_core from '@angular/core';
|
|
6
|
-
import { OnChanges, AfterViewInit,
|
|
6
|
+
import { OnChanges, AfterViewInit, InputSignal, Injector, ViewContainerRef, NgZone, ElementRef, SimpleChanges, InjectionToken } from '@angular/core';
|
|
7
7
|
import { Instance } from 'tippy.js';
|
|
8
8
|
import { Content, ViewRef, ViewOptions, ViewService } from '@ngneat/overview';
|
|
9
9
|
|
|
10
|
-
declare class TippyDirective implements OnChanges, AfterViewInit
|
|
11
|
-
readonly appendTo: InputSignal<"parent" |
|
|
10
|
+
declare class TippyDirective implements OnChanges, AfterViewInit {
|
|
11
|
+
readonly appendTo: InputSignal<Element | "parent" | ((ref: Element) => Element)>;
|
|
12
12
|
readonly content: InputSignal<Content | null | undefined>;
|
|
13
13
|
readonly delay: InputSignal<number | [number | null, number | null]>;
|
|
14
14
|
readonly duration: InputSignal<number | [number | null, number | null]>;
|
|
@@ -32,6 +32,10 @@ declare class TippyDirective implements OnChanges, AfterViewInit, OnInit {
|
|
|
32
32
|
readonly onlyTextOverflow: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true" | null | undefined>;
|
|
33
33
|
readonly staticWidthHost: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true" | null | undefined>;
|
|
34
34
|
readonly data: InputSignal<any>;
|
|
35
|
+
/** Angular `inputBinding`/`outputBinding`/`twoWayBinding` descriptors forwarded to `createComponent`. */
|
|
36
|
+
readonly bindings: InputSignal<_angular_core.Binding[] | undefined>;
|
|
37
|
+
/** Host directives (with optional bindings) forwarded to `createComponent`. */
|
|
38
|
+
readonly directives: InputSignal<(_angular_core.Type<unknown> | _angular_core.DirectiveWithBindings<unknown>)[] | undefined>;
|
|
35
39
|
readonly useHostWidth: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true" | null | undefined>;
|
|
36
40
|
readonly hideOnEscape: _angular_core.InputSignalWithTransform<boolean, boolean | "" | "false" | "true" | null | undefined>;
|
|
37
41
|
readonly popperWidth: InputSignal<string | number | undefined>;
|
|
@@ -58,6 +62,7 @@ declare class TippyDirective implements OnChanges, AfterViewInit, OnInit {
|
|
|
58
62
|
private host;
|
|
59
63
|
private get hostWidth();
|
|
60
64
|
private destroyRef;
|
|
65
|
+
private tippyService;
|
|
61
66
|
private isServer;
|
|
62
67
|
private tippyFactory;
|
|
63
68
|
private destroyed;
|
|
@@ -70,7 +75,6 @@ declare class TippyDirective implements OnChanges, AfterViewInit, OnInit {
|
|
|
70
75
|
protected hostRef: ElementRef<any>;
|
|
71
76
|
constructor();
|
|
72
77
|
ngOnChanges(changes: SimpleChanges): void;
|
|
73
|
-
ngOnInit(): void;
|
|
74
78
|
ngAfterViewInit(): void;
|
|
75
79
|
destroyView(): void;
|
|
76
80
|
/**
|
|
@@ -93,12 +97,13 @@ declare class TippyDirective implements OnChanges, AfterViewInit, OnInit {
|
|
|
93
97
|
protected handleEscapeButton(): void;
|
|
94
98
|
protected checkOverflow(isElementOverflow: boolean): void;
|
|
95
99
|
protected listenToHostResize(): void;
|
|
100
|
+
protected clearInstanceWidth(instance: Instance): void;
|
|
96
101
|
protected setInstanceWidth(instance: Instance, width: string | number): void;
|
|
97
102
|
private onHidden;
|
|
98
103
|
private isOverflowing$;
|
|
99
104
|
private setupListeners;
|
|
100
105
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TippyDirective, never>;
|
|
101
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TippyDirective, "[tp]", ["tippy"], { "appendTo": { "alias": "tpAppendTo"; "required": false; "isSignal": true; }; "content": { "alias": "tp"; "required": false; "isSignal": true; }; "delay": { "alias": "tpDelay"; "required": false; "isSignal": true; }; "duration": { "alias": "tpDuration"; "required": false; "isSignal": true; }; "hideOnClick": { "alias": "tpHideOnClick"; "required": false; "isSignal": true; }; "interactive": { "alias": "tpInteractive"; "required": false; "isSignal": true; }; "interactiveBorder": { "alias": "tpInteractiveBorder"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "tpMaxWidth"; "required": false; "isSignal": true; }; "offset": { "alias": "tpOffset"; "required": false; "isSignal": true; }; "placement": { "alias": "tpPlacement"; "required": false; "isSignal": true; }; "popperOptions": { "alias": "tpPopperOptions"; "required": false; "isSignal": true; }; "showOnCreate": { "alias": "tpShowOnCreate"; "required": false; "isSignal": true; }; "trigger": { "alias": "tpTrigger"; "required": false; "isSignal": true; }; "triggerTarget": { "alias": "tpTriggerTarget"; "required": false; "isSignal": true; }; "zIndex": { "alias": "tpZIndex"; "required": false; "isSignal": true; }; "animation": { "alias": "tpAnimation"; "required": false; "isSignal": true; }; "useTextContent": { "alias": "tpUseTextContent"; "required": false; "isSignal": true; }; "isLazy": { "alias": "tpIsLazy"; "required": false; "isSignal": true; }; "variation": { "alias": "tpVariation"; "required": false; "isSignal": true; }; "isEnabled": { "alias": "tpIsEnabled"; "required": false; "isSignal": true; }; "className": { "alias": "tpClassName"; "required": false; "isSignal": true; }; "onlyTextOverflow": { "alias": "tpOnlyTextOverflow"; "required": false; "isSignal": true; }; "staticWidthHost": { "alias": "tpStaticWidthHost"; "required": false; "isSignal": true; }; "data": { "alias": "tpData"; "required": false; "isSignal": true; }; "useHostWidth": { "alias": "tpUseHostWidth"; "required": false; "isSignal": true; }; "hideOnEscape": { "alias": "tpHideOnEscape"; "required": false; "isSignal": true; }; "popperWidth": { "alias": "tpPopperWidth"; "required": false; "isSignal": true; }; "customHost": { "alias": "tpHost"; "required": false; "isSignal": true; }; "isVisible": { "alias": "tpIsVisible"; "required": false; "isSignal": true; }; }, { "onShow": "tpOnShow"; "onHide": "tpOnHide"; "isVisible": "tpIsVisibleChange"; "visible": "tpVisible"; }, never, never, true, never>;
|
|
106
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TippyDirective, "[tp]", ["tippy"], { "appendTo": { "alias": "tpAppendTo"; "required": false; "isSignal": true; }; "content": { "alias": "tp"; "required": false; "isSignal": true; }; "delay": { "alias": "tpDelay"; "required": false; "isSignal": true; }; "duration": { "alias": "tpDuration"; "required": false; "isSignal": true; }; "hideOnClick": { "alias": "tpHideOnClick"; "required": false; "isSignal": true; }; "interactive": { "alias": "tpInteractive"; "required": false; "isSignal": true; }; "interactiveBorder": { "alias": "tpInteractiveBorder"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "tpMaxWidth"; "required": false; "isSignal": true; }; "offset": { "alias": "tpOffset"; "required": false; "isSignal": true; }; "placement": { "alias": "tpPlacement"; "required": false; "isSignal": true; }; "popperOptions": { "alias": "tpPopperOptions"; "required": false; "isSignal": true; }; "showOnCreate": { "alias": "tpShowOnCreate"; "required": false; "isSignal": true; }; "trigger": { "alias": "tpTrigger"; "required": false; "isSignal": true; }; "triggerTarget": { "alias": "tpTriggerTarget"; "required": false; "isSignal": true; }; "zIndex": { "alias": "tpZIndex"; "required": false; "isSignal": true; }; "animation": { "alias": "tpAnimation"; "required": false; "isSignal": true; }; "useTextContent": { "alias": "tpUseTextContent"; "required": false; "isSignal": true; }; "isLazy": { "alias": "tpIsLazy"; "required": false; "isSignal": true; }; "variation": { "alias": "tpVariation"; "required": false; "isSignal": true; }; "isEnabled": { "alias": "tpIsEnabled"; "required": false; "isSignal": true; }; "className": { "alias": "tpClassName"; "required": false; "isSignal": true; }; "onlyTextOverflow": { "alias": "tpOnlyTextOverflow"; "required": false; "isSignal": true; }; "staticWidthHost": { "alias": "tpStaticWidthHost"; "required": false; "isSignal": true; }; "data": { "alias": "tpData"; "required": false; "isSignal": true; }; "bindings": { "alias": "tpBindings"; "required": false; "isSignal": true; }; "directives": { "alias": "tpDirectives"; "required": false; "isSignal": true; }; "useHostWidth": { "alias": "tpUseHostWidth"; "required": false; "isSignal": true; }; "hideOnEscape": { "alias": "tpHideOnEscape"; "required": false; "isSignal": true; }; "popperWidth": { "alias": "tpPopperWidth"; "required": false; "isSignal": true; }; "customHost": { "alias": "tpHost"; "required": false; "isSignal": true; }; "isVisible": { "alias": "tpIsVisible"; "required": false; "isSignal": true; }; }, { "onShow": "tpOnShow"; "onHide": "tpOnHide"; "isVisible": "tpIsVisibleChange"; "visible": "tpVisible"; }, never, never, true, never>;
|
|
102
107
|
}
|
|
103
108
|
|
|
104
109
|
declare class TippyService {
|
|
@@ -106,12 +111,15 @@ declare class TippyService {
|
|
|
106
111
|
private readonly _globalConfig;
|
|
107
112
|
private readonly _viewService;
|
|
108
113
|
private readonly _tippyFactory;
|
|
114
|
+
readonly enabled: _angular_core.WritableSignal<boolean>;
|
|
115
|
+
enableAll(): void;
|
|
116
|
+
disableAll(): void;
|
|
109
117
|
create<T extends Content>(host: HTMLElement, content: T, options?: Partial<CreateOptions>): Observable<ExtendedTippyInstance<T>>;
|
|
110
118
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TippyService, never>;
|
|
111
119
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TippyService>;
|
|
112
120
|
}
|
|
113
121
|
|
|
114
|
-
declare function inView(host: TippyElement, options?: IntersectionObserverInit): Observable<
|
|
122
|
+
declare function inView(host: TippyElement, options?: IntersectionObserverInit): Observable<void>;
|
|
115
123
|
declare function overflowChanges(host: TippyElement): Observable<boolean>;
|
|
116
124
|
|
|
117
125
|
declare const TIPPY_REF: InjectionToken<TippyInstance>;
|