nw-style-guide 21.2.2 → 21.2.3-beta.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.
@@ -122,6 +122,7 @@ class TooltipDirective {
122
122
  this.nwShown = new EventEmitter();
123
123
  this.nwHidden = new EventEmitter();
124
124
  this.nwClose = new EventEmitter();
125
+ this._overlayRef = null;
125
126
  this._destroyed$ = new Subject();
126
127
  this._tooltipArrowSize = 5;
127
128
  this._manualToggleEvent$ = new Subject();
@@ -130,19 +131,19 @@ class TooltipDirective {
130
131
  * A subject that emits when the TooltipContainerComponent is destroyed
131
132
  */
132
133
  this._tooltipContainerDestroyed$ = new Subject();
134
+ this._outsideClick$ = new Subject();
133
135
  }
134
136
  ngOnInit() {
135
137
  this._setInputDefaults();
136
- this._createOverlay();
137
138
  this._subscribeToEvents();
138
139
  if (this.isOpen) {
139
140
  this._manualToggleEvent$.next(this.isOpen);
140
141
  }
141
142
  if (this.updatePositionOnAnimationFrame) {
142
143
  interval(0, animationFrameScheduler)
143
- .pipe(filter(_ => this.updatePositionOnAnimationFrame && this._overlayRef.hasAttached()), takeUntil(this._destroyed$))
144
+ .pipe(filter(_ => this.updatePositionOnAnimationFrame && this._overlayRef?.hasAttached()), takeUntil(this._destroyed$))
144
145
  .subscribe(() => {
145
- this._overlayRef.updatePosition();
146
+ this._overlayRef?.updatePosition();
146
147
  });
147
148
  }
148
149
  }
@@ -150,10 +151,10 @@ class TooltipDirective {
150
151
  const shouldUpdatePositionStrategy = ['placement', 'withArrow', 'autoFlip'].some(inputProp => c[inputProp]?.previousValue !== c[inputProp]?.currentValue && !c[inputProp]?.firstChange);
151
152
  const isOpenChange = c.isOpen?.previousValue !== c.isOpen?.currentValue && !c.isOpen.firstChange;
152
153
  const shouldUpdateScrollStrategy = c.closeOnScroll?.previousValue !== c.closeOnScroll?.currentValue && !c.closeOnScroll.firstChange;
153
- if (shouldUpdatePositionStrategy) {
154
+ if (shouldUpdatePositionStrategy && this._overlayRef) {
154
155
  this._updatePositionStrategy(this.placement);
155
156
  }
156
- if (shouldUpdateScrollStrategy) {
157
+ if (shouldUpdateScrollStrategy && this._overlayRef) {
157
158
  this._updateScrollStrategy(this.closeOnScroll);
158
159
  }
159
160
  if (isOpenChange) {
@@ -176,7 +177,7 @@ class TooltipDirective {
176
177
  * Can be called manually from the exported directive to toggle the tooltip
177
178
  */
178
179
  toggle() {
179
- const isOpen = this._overlayRef.hasAttached();
180
+ const isOpen = this._overlayRef?.hasAttached();
180
181
  this._manualToggleEvent$.next(!isOpen);
181
182
  }
182
183
  /**
@@ -213,6 +214,18 @@ class TooltipDirective {
213
214
  return this.tooltip || this.popover;
214
215
  }
215
216
  _open() {
217
+ if (!this._overlayRef) {
218
+ /**
219
+ * Create the overlay the first time the tooltip is opened
220
+ */
221
+ this._createOverlay();
222
+ if (this.closeOnOutsideClick) {
223
+ this._overlayRef
224
+ .outsidePointerEvents()
225
+ .pipe(filter(_ => this._overlayRef?.hasAttached()), filter(event => event.target !== this._elRef.nativeElement), map(_ => false), takeUntil(this._destroyed$))
226
+ .subscribe(v => this._outsideClick$.next(v));
227
+ }
228
+ }
216
229
  if (!this._overlayRef.hasAttached()) {
217
230
  const portal = new ComponentPortal(TooltipContainerComponent, this._vcRef, this._createInjector());
218
231
  const ref = this._overlayRef.attach(portal);
@@ -221,7 +234,7 @@ class TooltipDirective {
221
234
  }
222
235
  }
223
236
  _close() {
224
- if (this._overlayRef.hasAttached()) {
237
+ if (this._overlayRef?.hasAttached()) {
225
238
  this._overlayRef.detach();
226
239
  this.nwHidden.emit();
227
240
  }
@@ -259,15 +272,13 @@ class TooltipDirective {
259
272
  }
260
273
  _subscribeToEvents() {
261
274
  const openEvents$ = this.openEvents.map(eventName => {
262
- return fromEvent(this._elRef.nativeElement, eventName).pipe(filter(_ => !this._overlayRef.hasAttached()), map(_ => true));
275
+ return fromEvent(this._elRef.nativeElement, eventName).pipe(filter(_ => !this._overlayRef?.hasAttached()), map(_ => true));
263
276
  });
264
277
  const closeEvents$ = this.closeEvents.map(eventName => {
265
- return fromEvent(this._elRef.nativeElement, eventName).pipe(tap(_ => this._cancelDelayedOpen$.next()), filter(_ => this._overlayRef.hasAttached()), map(_ => false));
278
+ return fromEvent(this._elRef.nativeElement, eventName).pipe(tap(_ => this._cancelDelayedOpen$.next()), filter(_ => this._overlayRef?.hasAttached()), map(_ => false));
266
279
  });
267
280
  const outsideClick$ = this.closeOnOutsideClick
268
- ? this._overlayRef.outsidePointerEvents().pipe(filter(_ => this._overlayRef.hasAttached()),
269
- // The element that this tooltip is attached to should not be included as an outside click
270
- filter(event => event.target !== this._elRef.nativeElement), map(_ => false))
281
+ ? this._outsideClick$.asObservable()
271
282
  : EMPTY;
272
283
  /**
273
284
  * Merge all open and close events into a single stream that emits a boolean that indicates whether
@@ -422,7 +433,7 @@ class TooltipDirective {
422
433
  this.hide();
423
434
  this._destroyed$.next();
424
435
  this._destroyed$.complete();
425
- this._overlayRef.dispose();
436
+ this._overlayRef?.dispose();
426
437
  }
427
438
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
428
439
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: TooltipDirective, isStandalone: true, selector: "[nwTooltip],[nwPopover]", inputs: { tooltip: ["nwTooltip", "tooltip"], popover: ["nwPopover", "popover"], context: "context", placement: "placement", isOpen: "isOpen", isDisabled: "isDisabled", delay: "delay", autoFlip: "autoFlip", openEvents: "openEvents", closeEvents: "closeEvents", containerClass: "containerClass", withArrow: "withArrow", withClose: "withClose", closeOnScroll: "closeOnScroll", closeOnOutsideClick: "closeOnOutsideClick", updatePositionOnAnimationFrame: "updatePositionOnAnimationFrame", connectedTo: "connectedTo", pointerEvents: "pointerEvents", breakpoint: "breakpoint", hostElementZIndex: "hostElementZIndex" }, outputs: { nwShown: "nwShown", nwHidden: "nwHidden", nwClose: "nwClose" }, exportAs: ["nw-tooltip", "nw-popover"], usesOnChanges: true, ngImport: i0 }); }
@@ -1 +1 @@
1
- {"version":3,"file":"nw-style-guide-tooltips.mjs","sources":["../../../projects/nw-style-guide/tooltips/config/tooltip-context-token.ts","../../../projects/nw-style-guide/tooltips/tooltip-container.component.ts","../../../projects/nw-style-guide/tooltips/config/placement-flip-map.ts","../../../projects/nw-style-guide/tooltips/tooltip.directive.ts","../../../projects/nw-style-guide/tooltips/nw-style-guide-tooltips.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ITooltipData } from '../models/ITooltipData';\n\nexport const TOOLTIP_CONTEXT_TOKEN = new InjectionToken<ITooltipData>('tooltip-context');\n","import { Component, ChangeDetectionStrategy, TemplateRef, EventEmitter, inject } from '@angular/core';\nimport { ITooltipData } from './models/ITooltipData';\nimport { TOOLTIP_CONTEXT_TOKEN } from './config/tooltip-context-token';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'nw-tooltip-container',\n template: `\n <div\n class=\"tooltip\"\n [ngClass]=\"data.containerClass\">\n @if (data.withArrow) {\n <div class=\"tooltip-arrow\"></div>\n }\n <div class=\"tooltip-inner\">\n @if (data.withClose) {\n <button\n (click)=\"close.emit()\"\n class=\"btn btn-ghost-alt btn-sm btn-close close-button\"></button>\n }\n @if (isTemplateRef) {\n <ng-container *ngTemplateOutlet=\"data.tooltip; context: data.templateRefContext\"></ng-container>\n } @else {\n <div [outerHTML]=\"data.tooltip\"></div>\n }\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet]\n})\nexport class TooltipContainerComponent {\n data = inject<ITooltipData>(TOOLTIP_CONTEXT_TOKEN);\n\n public close: EventEmitter<void> = new EventEmitter();\n public isTemplateRef: boolean = false;\n\n constructor() {\n const data = this.data;\n\n this.isTemplateRef = data.tooltip instanceof TemplateRef;\n }\n}\n","import { PlacementFlipMap } from '../models/PlacementFlipMap.type';\n\nexport const placementFlipMap: PlacementFlipMap = {\n top: 'bottom',\n 'top-start': 'bottom-start',\n 'top-end': 'bottom-end',\n bottom: 'top',\n 'bottom-start': 'top-start',\n 'bottom-end': 'top-end',\n right: 'left',\n 'right-start': 'left-start',\n 'right-end': 'left-end',\n left: 'right',\n 'left-start': 'right-start',\n 'left-end': 'right-end'\n};\n","import {\n CloseScrollStrategy,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayRef,\n RepositionScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { Placement } from './models/Placement.type';\nimport { Subject, fromEvent, merge, EMPTY, of, Observable, animationFrameScheduler, timer, interval } from 'rxjs';\nimport { takeUntil, filter, tap, map, debounce, switchMap, delay } from 'rxjs/operators';\nimport { TOOLTIP_CONTEXT_TOKEN } from './config/tooltip-context-token';\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { ITooltipData } from './models/ITooltipData';\nimport { placementFlipMap } from './config/placement-flip-map';\n\n@Directive({\n selector: '[nwTooltip],[nwPopover]',\n exportAs: 'nw-tooltip,nw-popover'\n})\nexport class TooltipDirective implements OnInit, OnChanges, OnDestroy {\n private _elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _overlay = inject(Overlay);\n private _vcRef = inject(ViewContainerRef);\n private _injector = inject(Injector);\n\n /**\n * This directive can be invoked by using the `nwTooltip` or `nwPopover` attributes. The only differences between using these\n * attributes are the default values of certain properties, e.g. `delay` and open and close events\n */\n @Input('nwTooltip') tooltip: string | TemplateRef<any>;\n @Input('nwPopover') popover: string | TemplateRef<any>;\n /**\n * An object that can be passed when the `nwTooltip` or `nwPopover` input is a `TemplateRef`\n * ref: https://angular.io/api/core/ng-template#context\n */\n @Input() context: any;\n /**\n * One or more preferred placement options\n */\n @Input() placement: Placement | Placement[];\n /**\n * Manually control the opening and closing of the tooltip\n */\n @Input() isOpen: boolean;\n /**\n * When true, the tooltip will not not respond to any open or close events. Nor will it\n * respond to changes to the `isOpen` input\n */\n @Input() isDisabled: boolean = false;\n /**\n * Number of ms to wait before opening\n */\n @Input() delay: number;\n /**\n * Change the placement of the tooltip to its opposite position when it moves outside the viewport\n */\n @Input() autoFlip: boolean = true;\n /**\n * A list of events that open the tooltip\n */\n @Input() openEvents: string[];\n /**\n * A list of events that close the tooltip\n */\n @Input() closeEvents: string[];\n /**\n * A class to apply to the tooltip container\n */\n @Input() containerClass: string;\n /**\n * Display an arrow or not. The location of the arrow is dependant on the current `placement`\n */\n @Input() withArrow: boolean = true;\n /**\n * Display a close button or not\n */\n @Input() withClose: boolean = false;\n @Input() closeOnScroll: boolean;\n @Input() closeOnOutsideClick: boolean = false;\n /**\n * WARNING: Use with caution - there are potential performance issues with this\n *\n * Update the position of the tooltip before the next browser repaint. An example of where this may be required is if\n * the tooltip is attached (and open) to an element that transitions or animates to a new position\n */\n @Input() updatePositionOnAnimationFrame: boolean = false;\n /**\n * In the case where the tooltip should not be attached to the host element, a reference to another element can be used\n */\n @Input() connectedTo: ElementRef<HTMLElement> | Element;\n /**\n * Determines whether pointer events are enabled on the cdk-overlay-pane element\n */\n @Input() pointerEvents: 'auto' | 'none';\n /**\n * The screen size at which the tooltip should treated as a popover as there is no hover events on mobile\n */\n @Input() breakpoint: number = 767;\n @Input() hostElementZIndex: number;\n\n @Output() nwShown: EventEmitter<null> = new EventEmitter();\n @Output() nwHidden: EventEmitter<null> = new EventEmitter();\n @Output() nwClose: EventEmitter<null> = new EventEmitter();\n\n private _overlayRef: OverlayRef;\n private _destroyed$: Subject<void> = new Subject();\n private _tooltipArrowSize: number = 5;\n private _manualToggleEvent$: Subject<boolean> = new Subject();\n private _cancelDelayedOpen$: Subject<void> = new Subject();\n /**\n * A subject that emits when the TooltipContainerComponent is destroyed\n */\n private _tooltipContainerDestroyed$: Subject<void> = new Subject();\n\n ngOnInit() {\n this._setInputDefaults();\n this._createOverlay();\n this._subscribeToEvents();\n\n if (this.isOpen) {\n this._manualToggleEvent$.next(this.isOpen);\n }\n\n if (this.updatePositionOnAnimationFrame) {\n interval(0, animationFrameScheduler)\n .pipe(\n filter(_ => this.updatePositionOnAnimationFrame && this._overlayRef.hasAttached()),\n takeUntil(this._destroyed$)\n )\n .subscribe(() => {\n this._overlayRef.updatePosition();\n });\n }\n }\n\n ngOnChanges(c: SimpleChanges): void {\n const shouldUpdatePositionStrategy = ['placement', 'withArrow', 'autoFlip'].some(\n inputProp => c[inputProp]?.previousValue !== c[inputProp]?.currentValue && !c[inputProp]?.firstChange\n );\n const isOpenChange: boolean = c.isOpen?.previousValue !== c.isOpen?.currentValue && !c.isOpen.firstChange;\n const shouldUpdateScrollStrategy: boolean =\n c.closeOnScroll?.previousValue !== c.closeOnScroll?.currentValue && !c.closeOnScroll.firstChange;\n\n if (shouldUpdatePositionStrategy) {\n this._updatePositionStrategy(this.placement);\n }\n\n if (shouldUpdateScrollStrategy) {\n this._updateScrollStrategy(this.closeOnScroll);\n }\n\n if (isOpenChange) {\n this._manualToggleEvent$.next(this.isOpen);\n }\n }\n\n /**\n * Can be called manually from the exported directive to open the tooltip\n */\n show(): void {\n this._manualToggleEvent$.next(true);\n }\n\n /**\n * Can be called manually from the exported directive to close the tooltip\n */\n hide(): void {\n this._manualToggleEvent$.next(false);\n }\n\n /**\n * Can be called manually from the exported directive to toggle the tooltip\n */\n toggle(): void {\n const isOpen = this._overlayRef.hasAttached();\n this._manualToggleEvent$.next(!isOpen);\n }\n\n /**\n * Based on the selector used, choose different default if inputs are not defined\n */\n private _setInputDefaults(): void {\n const getDefaultValue = <T>(currVal: T, defaultVal: T): T => {\n return currVal ?? defaultVal;\n };\n const isMobileScreenSize = window.innerWidth < this.breakpoint;\n\n /**\n * Check for undefined and null, not empty strings. This prevents errors when an empty\n * string is passed in the popover or tooltip input\n */\n if ((this.popover !== undefined && this.popover !== null) || isMobileScreenSize) {\n this.delay = getDefaultValue(this.delay, 0);\n this.openEvents = getDefaultValue(this.openEvents, ['click']);\n this.closeEvents = getDefaultValue(this.closeEvents, ['click']);\n this.closeOnScroll = getDefaultValue(this.closeOnScroll, false);\n this.pointerEvents = getDefaultValue(this.pointerEvents, 'auto');\n if (isMobileScreenSize) {\n this.closeOnOutsideClick = true;\n }\n } else {\n this.delay = getDefaultValue(this.delay, 500);\n this.openEvents = getDefaultValue(this.openEvents, ['mouseenter']);\n this.closeEvents = getDefaultValue(this.closeEvents, ['click', 'mouseleave']);\n this.closeOnScroll = getDefaultValue(this.closeOnScroll, true);\n this.pointerEvents = getDefaultValue(this.pointerEvents, 'none');\n }\n }\n\n private _getTooltipContent(): string | TemplateRef<any> {\n return this.tooltip || this.popover;\n }\n\n private _open(): ComponentRef<TooltipContainerComponent> {\n if (!this._overlayRef.hasAttached()) {\n const portal = new ComponentPortal(TooltipContainerComponent, this._vcRef, this._createInjector());\n const ref = this._overlayRef.attach(portal);\n this.nwShown.emit();\n return ref;\n }\n }\n\n private _close(): void {\n if (this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this.nwHidden.emit();\n }\n }\n\n private _createOverlay() {\n const positionStrategy = this._getPositionStrategy(this.placement);\n const scrollStrategy = this._getScrollStrategy(this.closeOnScroll);\n const disposeOnNavigation = true;\n const panelClasses: string[] = ['tooltip-overlay', `pointer-events-${this.pointerEvents}`];\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy,\n disposeOnNavigation,\n panelClass: panelClasses\n });\n\n if (this.hostElementZIndex) {\n this._overlayRef.hostElement.style.zIndex = this.hostElementZIndex.toString();\n }\n }\n\n /**\n * Create and return a custom injector that provides the tooltip text as an injectable dependency\n */\n private _createInjector(): Injector {\n const tooltipData: ITooltipData = {\n tooltip: this._getTooltipContent(),\n containerClass: this.containerClass,\n withArrow: this.withArrow,\n withClose: this.withClose,\n templateRefContext: this.context\n };\n\n return Injector.create({\n parent: this._injector,\n providers: [{ provide: TOOLTIP_CONTEXT_TOKEN, useValue: tooltipData }]\n });\n }\n\n private _subscribeToEvents() {\n const openEvents$: Observable<boolean>[] = this.openEvents.map(eventName => {\n return fromEvent(this._elRef.nativeElement, eventName).pipe(\n filter(_ => !this._overlayRef.hasAttached()),\n map(_ => true)\n );\n });\n\n const closeEvents$: Observable<boolean>[] = this.closeEvents.map(eventName => {\n return fromEvent(this._elRef.nativeElement, eventName).pipe(\n tap(_ => this._cancelDelayedOpen$.next()),\n filter(_ => this._overlayRef.hasAttached()),\n map(_ => false)\n );\n });\n\n const outsideClick$: Observable<boolean> = this.closeOnOutsideClick\n ? this._overlayRef.outsidePointerEvents().pipe(\n filter(_ => this._overlayRef.hasAttached()),\n // The element that this tooltip is attached to should not be included as an outside click\n filter(event => event.target !== this._elRef.nativeElement),\n map(_ => false)\n )\n : EMPTY;\n\n /**\n * Merge all open and close events into a single stream that emits a boolean that indicates whether\n * the tooltip should be opened or closed\n */\n const toggleEvents$ = merge(...openEvents$.concat(this._manualToggleEvent$, closeEvents$, outsideClick$));\n\n toggleEvents$\n .pipe(\n /**\n * This debounce prevents instantaneous opening and closing (or vice-versa) in the scenario where `openEvents` contains the\n * same event as `closeEvents`. For example, if both contain the \"click\" event, this will be fired twice in the space of a few ms\n */\n debounce(() => {\n if (this.openEvents.some(e => this.closeEvents.includes(e))) {\n return timer(5);\n }\n return of(0);\n }),\n filter(_ => !this.isDisabled),\n /**\n * If this is an open event, use the input delay. Don't apply the delay to the close event\n */\n switchMap(isOpenEvent => {\n if (isOpenEvent && this.delay) {\n return of(isOpenEvent).pipe(delay(this.delay), takeUntil(this._cancelDelayedOpen$));\n }\n return of(isOpenEvent);\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe(isOpenEvent => {\n if (isOpenEvent) {\n const ref = this._open();\n\n /**\n * No ref will be returned if the overlay is already attached\n */\n if (ref) {\n ref.changeDetectorRef.detectChanges();\n ref.instance.close.pipe(takeUntil(this._tooltipContainerDestroyed$)).subscribe(_ => {\n this.nwClose.emit();\n this._close();\n });\n\n /**\n * When the TooltipContainerComponent is destroyed we fire the _tooltipContainerDestroyed$\n * so that our subscription to TooltipContainerComponent.close is unsubscribed from\n */\n ref.onDestroy(() => {\n this._tooltipContainerDestroyed$.next();\n this._tooltipContainerDestroyed$.complete();\n });\n }\n } else {\n this._close();\n }\n });\n }\n\n private _getPositionPair(placement: Placement): ConnectionPositionPair {\n // Include a 3px offset so that the tooltip is not flush with the element\n const offset = this._tooltipArrowSize + 3;\n const getXOffset = (placement: Placement) => {\n if (!this.withArrow) {\n return 0;\n }\n if (placement.startsWith('right')) {\n return offset;\n }\n if (placement.startsWith('left')) {\n return -offset;\n }\n };\n const getYOffset = (placement: Placement) => {\n if (!this.withArrow) {\n return 0;\n }\n if (placement.startsWith('top')) {\n return -offset;\n }\n if (placement.startsWith('bottom')) {\n return offset;\n }\n };\n const getPanelClass = (placement: Placement): string => `tooltip-${placement}`;\n /**\n * The default position when no placement is specified\n */\n const bottom = new ConnectionPositionPair(\n { originX: 'center', originY: 'bottom' },\n { overlayX: 'center', overlayY: 'top' },\n null,\n getYOffset('bottom'),\n getPanelClass('bottom')\n );\n\n switch (placement) {\n case 'top':\n return new ConnectionPositionPair(\n { originX: 'center', originY: 'top' },\n { overlayX: 'center', overlayY: 'bottom' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'top-start':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'top-end':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'top' },\n { overlayX: 'end', overlayY: 'bottom' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'bottom':\n return bottom;\n\n case 'bottom-start':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'bottom-end':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'bottom' },\n { overlayX: 'end', overlayY: 'top' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'right':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'center' },\n { overlayX: 'start', overlayY: 'center' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'right-start':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'top' },\n { overlayX: 'start', overlayY: 'top' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'right-end':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'bottom' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'left':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'center' },\n { overlayX: 'end', overlayY: 'center' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'left-start':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'end', overlayY: 'top' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'left-end':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'end', overlayY: 'bottom' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n default:\n return bottom;\n }\n }\n\n private _getPositionStrategy(placement: Placement | Placement[]): FlexibleConnectedPositionStrategy {\n /**\n * Format `placement` into a consistent data type of `Placement[]`\n */\n const placementsList: Placement[] = [placement].flat();\n /**\n * Get positions from preferred placements\n */\n const primaryPositions = placementsList.map(p => this._getPositionPair(p));\n /**\n * If `autoFlip` is enabled, include the inverse position of each `placement` input. Each of this inverse positions\n * will have a lower priority than each of the preferred positions generated from the `placement` input\n */\n const positions = this.autoFlip\n ? [...primaryPositions, ...placementsList.map(p => this._getPositionPair(placementFlipMap[p]))]\n : [...primaryPositions];\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this.connectedTo || this._elRef)\n .withFlexibleDimensions(false)\n .withPositions(positions)\n .withPush(false);\n }\n\n private _updatePositionStrategy(placement: Placement | Placement[]): void {\n const positionStrategy = this._getPositionStrategy(placement);\n this._overlayRef.updatePositionStrategy(positionStrategy);\n }\n\n private _getScrollStrategy(closeOnScroll: boolean): RepositionScrollStrategy | CloseScrollStrategy {\n if (closeOnScroll) {\n return this._overlay.scrollStrategies.close();\n }\n return this._overlay.scrollStrategies.reposition();\n }\n\n private _updateScrollStrategy(closeOnScroll: boolean): void {\n const scrollStrategy = this._getScrollStrategy(closeOnScroll);\n this._overlayRef.updateScrollStrategy(scrollStrategy);\n }\n\n ngOnDestroy() {\n this.hide();\n this._destroyed$.next();\n this._destroyed$.complete();\n this._overlayRef.dispose();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nw-style-guide-tooltips.mjs","sources":["../../../projects/nw-style-guide/tooltips/config/tooltip-context-token.ts","../../../projects/nw-style-guide/tooltips/tooltip-container.component.ts","../../../projects/nw-style-guide/tooltips/config/placement-flip-map.ts","../../../projects/nw-style-guide/tooltips/tooltip.directive.ts","../../../projects/nw-style-guide/tooltips/nw-style-guide-tooltips.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ITooltipData } from '../models/ITooltipData';\n\nexport const TOOLTIP_CONTEXT_TOKEN = new InjectionToken<ITooltipData>('tooltip-context');\n","import { Component, ChangeDetectionStrategy, TemplateRef, EventEmitter, inject } from '@angular/core';\nimport { ITooltipData } from './models/ITooltipData';\nimport { TOOLTIP_CONTEXT_TOKEN } from './config/tooltip-context-token';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'nw-tooltip-container',\n template: `\n <div\n class=\"tooltip\"\n [ngClass]=\"data.containerClass\">\n @if (data.withArrow) {\n <div class=\"tooltip-arrow\"></div>\n }\n <div class=\"tooltip-inner\">\n @if (data.withClose) {\n <button\n (click)=\"close.emit()\"\n class=\"btn btn-ghost-alt btn-sm btn-close close-button\"></button>\n }\n @if (isTemplateRef) {\n <ng-container *ngTemplateOutlet=\"data.tooltip; context: data.templateRefContext\"></ng-container>\n } @else {\n <div [outerHTML]=\"data.tooltip\"></div>\n }\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet]\n})\nexport class TooltipContainerComponent {\n data = inject<ITooltipData>(TOOLTIP_CONTEXT_TOKEN);\n\n public close: EventEmitter<void> = new EventEmitter();\n public isTemplateRef: boolean = false;\n\n constructor() {\n const data = this.data;\n\n this.isTemplateRef = data.tooltip instanceof TemplateRef;\n }\n}\n","import { PlacementFlipMap } from '../models/PlacementFlipMap.type';\n\nexport const placementFlipMap: PlacementFlipMap = {\n top: 'bottom',\n 'top-start': 'bottom-start',\n 'top-end': 'bottom-end',\n bottom: 'top',\n 'bottom-start': 'top-start',\n 'bottom-end': 'top-end',\n right: 'left',\n 'right-start': 'left-start',\n 'right-end': 'left-end',\n left: 'right',\n 'left-start': 'right-start',\n 'left-end': 'right-end'\n};\n","import {\n CloseScrollStrategy,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayRef,\n RepositionScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { Placement } from './models/Placement.type';\nimport { Subject, fromEvent, merge, EMPTY, of, Observable, animationFrameScheduler, timer, interval } from 'rxjs';\nimport { takeUntil, filter, tap, map, debounce, switchMap, delay } from 'rxjs/operators';\nimport { TOOLTIP_CONTEXT_TOKEN } from './config/tooltip-context-token';\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { ITooltipData } from './models/ITooltipData';\nimport { placementFlipMap } from './config/placement-flip-map';\n\n@Directive({\n selector: '[nwTooltip],[nwPopover]',\n exportAs: 'nw-tooltip,nw-popover'\n})\nexport class TooltipDirective implements OnInit, OnChanges, OnDestroy {\n private _elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _overlay = inject(Overlay);\n private _vcRef = inject(ViewContainerRef);\n private _injector = inject(Injector);\n\n /**\n * This directive can be invoked by using the `nwTooltip` or `nwPopover` attributes. The only differences between using these\n * attributes are the default values of certain properties, e.g. `delay` and open and close events\n */\n @Input('nwTooltip') tooltip: string | TemplateRef<any>;\n @Input('nwPopover') popover: string | TemplateRef<any>;\n /**\n * An object that can be passed when the `nwTooltip` or `nwPopover` input is a `TemplateRef`\n * ref: https://angular.io/api/core/ng-template#context\n */\n @Input() context: any;\n /**\n * One or more preferred placement options\n */\n @Input() placement: Placement | Placement[];\n /**\n * Manually control the opening and closing of the tooltip\n */\n @Input() isOpen: boolean;\n /**\n * When true, the tooltip will not not respond to any open or close events. Nor will it\n * respond to changes to the `isOpen` input\n */\n @Input() isDisabled: boolean = false;\n /**\n * Number of ms to wait before opening\n */\n @Input() delay: number;\n /**\n * Change the placement of the tooltip to its opposite position when it moves outside the viewport\n */\n @Input() autoFlip: boolean = true;\n /**\n * A list of events that open the tooltip\n */\n @Input() openEvents: string[];\n /**\n * A list of events that close the tooltip\n */\n @Input() closeEvents: string[];\n /**\n * A class to apply to the tooltip container\n */\n @Input() containerClass: string;\n /**\n * Display an arrow or not. The location of the arrow is dependant on the current `placement`\n */\n @Input() withArrow: boolean = true;\n /**\n * Display a close button or not\n */\n @Input() withClose: boolean = false;\n @Input() closeOnScroll: boolean;\n @Input() closeOnOutsideClick: boolean = false;\n /**\n * WARNING: Use with caution - there are potential performance issues with this\n *\n * Update the position of the tooltip before the next browser repaint. An example of where this may be required is if\n * the tooltip is attached (and open) to an element that transitions or animates to a new position\n */\n @Input() updatePositionOnAnimationFrame: boolean = false;\n /**\n * In the case where the tooltip should not be attached to the host element, a reference to another element can be used\n */\n @Input() connectedTo: ElementRef<HTMLElement> | Element;\n /**\n * Determines whether pointer events are enabled on the cdk-overlay-pane element\n */\n @Input() pointerEvents: 'auto' | 'none';\n /**\n * The screen size at which the tooltip should treated as a popover as there is no hover events on mobile\n */\n @Input() breakpoint: number = 767;\n @Input() hostElementZIndex: number;\n\n @Output() nwShown: EventEmitter<null> = new EventEmitter();\n @Output() nwHidden: EventEmitter<null> = new EventEmitter();\n @Output() nwClose: EventEmitter<null> = new EventEmitter();\n\n private _overlayRef: OverlayRef | null = null;\n private _destroyed$: Subject<void> = new Subject();\n private _tooltipArrowSize: number = 5;\n private _manualToggleEvent$: Subject<boolean> = new Subject();\n private _cancelDelayedOpen$: Subject<void> = new Subject();\n /**\n * A subject that emits when the TooltipContainerComponent is destroyed\n */\n private _tooltipContainerDestroyed$: Subject<void> = new Subject();\n private _outsideClick$: Subject<boolean> = new Subject();\n\n ngOnInit() {\n this._setInputDefaults();\n this._subscribeToEvents();\n\n if (this.isOpen) {\n this._manualToggleEvent$.next(this.isOpen);\n }\n\n if (this.updatePositionOnAnimationFrame) {\n interval(0, animationFrameScheduler)\n .pipe(\n filter(_ => this.updatePositionOnAnimationFrame && this._overlayRef?.hasAttached()),\n takeUntil(this._destroyed$)\n )\n .subscribe(() => {\n this._overlayRef?.updatePosition();\n });\n }\n }\n\n ngOnChanges(c: SimpleChanges): void {\n const shouldUpdatePositionStrategy = ['placement', 'withArrow', 'autoFlip'].some(\n inputProp => c[inputProp]?.previousValue !== c[inputProp]?.currentValue && !c[inputProp]?.firstChange\n );\n const isOpenChange: boolean = c.isOpen?.previousValue !== c.isOpen?.currentValue && !c.isOpen.firstChange;\n const shouldUpdateScrollStrategy: boolean =\n c.closeOnScroll?.previousValue !== c.closeOnScroll?.currentValue && !c.closeOnScroll.firstChange;\n\n if (shouldUpdatePositionStrategy && this._overlayRef) {\n this._updatePositionStrategy(this.placement);\n }\n\n if (shouldUpdateScrollStrategy && this._overlayRef) {\n this._updateScrollStrategy(this.closeOnScroll);\n }\n\n if (isOpenChange) {\n this._manualToggleEvent$.next(this.isOpen);\n }\n }\n\n /**\n * Can be called manually from the exported directive to open the tooltip\n */\n show(): void {\n this._manualToggleEvent$.next(true);\n }\n\n /**\n * Can be called manually from the exported directive to close the tooltip\n */\n hide(): void {\n this._manualToggleEvent$.next(false);\n }\n\n /**\n * Can be called manually from the exported directive to toggle the tooltip\n */\n toggle(): void {\n const isOpen = this._overlayRef?.hasAttached();\n this._manualToggleEvent$.next(!isOpen);\n }\n\n /**\n * Based on the selector used, choose different default if inputs are not defined\n */\n private _setInputDefaults(): void {\n const getDefaultValue = <T>(currVal: T, defaultVal: T): T => {\n return currVal ?? defaultVal;\n };\n const isMobileScreenSize = window.innerWidth < this.breakpoint;\n\n /**\n * Check for undefined and null, not empty strings. This prevents errors when an empty\n * string is passed in the popover or tooltip input\n */\n if ((this.popover !== undefined && this.popover !== null) || isMobileScreenSize) {\n this.delay = getDefaultValue(this.delay, 0);\n this.openEvents = getDefaultValue(this.openEvents, ['click']);\n this.closeEvents = getDefaultValue(this.closeEvents, ['click']);\n this.closeOnScroll = getDefaultValue(this.closeOnScroll, false);\n this.pointerEvents = getDefaultValue(this.pointerEvents, 'auto');\n if (isMobileScreenSize) {\n this.closeOnOutsideClick = true;\n }\n } else {\n this.delay = getDefaultValue(this.delay, 500);\n this.openEvents = getDefaultValue(this.openEvents, ['mouseenter']);\n this.closeEvents = getDefaultValue(this.closeEvents, ['click', 'mouseleave']);\n this.closeOnScroll = getDefaultValue(this.closeOnScroll, true);\n this.pointerEvents = getDefaultValue(this.pointerEvents, 'none');\n }\n }\n\n private _getTooltipContent(): string | TemplateRef<any> {\n return this.tooltip || this.popover;\n }\n\n private _open(): ComponentRef<TooltipContainerComponent> {\n if (!this._overlayRef) {\n /**\n * Create the overlay the first time the tooltip is opened\n */\n this._createOverlay();\n\n if (this.closeOnOutsideClick) {\n this._overlayRef\n .outsidePointerEvents()\n .pipe(\n filter(_ => this._overlayRef?.hasAttached()),\n filter(event => event.target !== this._elRef.nativeElement),\n map(_ => false),\n takeUntil(this._destroyed$)\n )\n .subscribe(v => this._outsideClick$.next(v));\n }\n }\n\n if (!this._overlayRef.hasAttached()) {\n const portal = new ComponentPortal(TooltipContainerComponent, this._vcRef, this._createInjector());\n const ref = this._overlayRef.attach(portal);\n this.nwShown.emit();\n return ref;\n }\n }\n\n private _close(): void {\n if (this._overlayRef?.hasAttached()) {\n this._overlayRef.detach();\n this.nwHidden.emit();\n }\n }\n\n private _createOverlay() {\n const positionStrategy = this._getPositionStrategy(this.placement);\n const scrollStrategy = this._getScrollStrategy(this.closeOnScroll);\n const disposeOnNavigation = true;\n const panelClasses: string[] = ['tooltip-overlay', `pointer-events-${this.pointerEvents}`];\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy,\n disposeOnNavigation,\n panelClass: panelClasses\n });\n\n if (this.hostElementZIndex) {\n this._overlayRef.hostElement.style.zIndex = this.hostElementZIndex.toString();\n }\n }\n\n /**\n * Create and return a custom injector that provides the tooltip text as an injectable dependency\n */\n private _createInjector(): Injector {\n const tooltipData: ITooltipData = {\n tooltip: this._getTooltipContent(),\n containerClass: this.containerClass,\n withArrow: this.withArrow,\n withClose: this.withClose,\n templateRefContext: this.context\n };\n\n return Injector.create({\n parent: this._injector,\n providers: [{ provide: TOOLTIP_CONTEXT_TOKEN, useValue: tooltipData }]\n });\n }\n\n private _subscribeToEvents() {\n const openEvents$: Observable<boolean>[] = this.openEvents.map(eventName => {\n return fromEvent(this._elRef.nativeElement, eventName).pipe(\n filter(_ => !this._overlayRef?.hasAttached()),\n map(_ => true)\n );\n });\n\n const closeEvents$: Observable<boolean>[] = this.closeEvents.map(eventName => {\n return fromEvent(this._elRef.nativeElement, eventName).pipe(\n tap(_ => this._cancelDelayedOpen$.next()),\n filter(_ => this._overlayRef?.hasAttached()),\n map(_ => false)\n );\n });\n\n const outsideClick$: Observable<boolean> = this.closeOnOutsideClick\n ? this._outsideClick$.asObservable()\n : EMPTY;\n\n /**\n * Merge all open and close events into a single stream that emits a boolean that indicates whether\n * the tooltip should be opened or closed\n */\n const toggleEvents$ = merge(...openEvents$.concat(this._manualToggleEvent$, closeEvents$, outsideClick$));\n\n toggleEvents$\n .pipe(\n /**\n * This debounce prevents instantaneous opening and closing (or vice-versa) in the scenario where `openEvents` contains the\n * same event as `closeEvents`. For example, if both contain the \"click\" event, this will be fired twice in the space of a few ms\n */\n debounce(() => {\n if (this.openEvents.some(e => this.closeEvents.includes(e))) {\n return timer(5);\n }\n return of(0);\n }),\n filter(_ => !this.isDisabled),\n /**\n * If this is an open event, use the input delay. Don't apply the delay to the close event\n */\n switchMap(isOpenEvent => {\n if (isOpenEvent && this.delay) {\n return of(isOpenEvent).pipe(delay(this.delay), takeUntil(this._cancelDelayedOpen$));\n }\n return of(isOpenEvent);\n }),\n takeUntil(this._destroyed$)\n )\n .subscribe(isOpenEvent => {\n if (isOpenEvent) {\n const ref = this._open();\n\n /**\n * No ref will be returned if the overlay is already attached\n */\n if (ref) {\n ref.changeDetectorRef.detectChanges();\n ref.instance.close.pipe(takeUntil(this._tooltipContainerDestroyed$)).subscribe(_ => {\n this.nwClose.emit();\n this._close();\n });\n\n /**\n * When the TooltipContainerComponent is destroyed we fire the _tooltipContainerDestroyed$\n * so that our subscription to TooltipContainerComponent.close is unsubscribed from\n */\n ref.onDestroy(() => {\n this._tooltipContainerDestroyed$.next();\n this._tooltipContainerDestroyed$.complete();\n });\n }\n } else {\n this._close();\n }\n });\n }\n\n private _getPositionPair(placement: Placement): ConnectionPositionPair {\n // Include a 3px offset so that the tooltip is not flush with the element\n const offset = this._tooltipArrowSize + 3;\n const getXOffset = (placement: Placement) => {\n if (!this.withArrow) {\n return 0;\n }\n if (placement.startsWith('right')) {\n return offset;\n }\n if (placement.startsWith('left')) {\n return -offset;\n }\n };\n const getYOffset = (placement: Placement) => {\n if (!this.withArrow) {\n return 0;\n }\n if (placement.startsWith('top')) {\n return -offset;\n }\n if (placement.startsWith('bottom')) {\n return offset;\n }\n };\n const getPanelClass = (placement: Placement): string => `tooltip-${placement}`;\n /**\n * The default position when no placement is specified\n */\n const bottom = new ConnectionPositionPair(\n { originX: 'center', originY: 'bottom' },\n { overlayX: 'center', overlayY: 'top' },\n null,\n getYOffset('bottom'),\n getPanelClass('bottom')\n );\n\n switch (placement) {\n case 'top':\n return new ConnectionPositionPair(\n { originX: 'center', originY: 'top' },\n { overlayX: 'center', overlayY: 'bottom' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'top-start':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'top-end':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'top' },\n { overlayX: 'end', overlayY: 'bottom' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'bottom':\n return bottom;\n\n case 'bottom-start':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'bottom-end':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'bottom' },\n { overlayX: 'end', overlayY: 'top' },\n null,\n getYOffset(placement),\n getPanelClass(placement)\n );\n\n case 'right':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'center' },\n { overlayX: 'start', overlayY: 'center' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'right-start':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'top' },\n { overlayX: 'start', overlayY: 'top' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'right-end':\n return new ConnectionPositionPair(\n { originX: 'end', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'bottom' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'left':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'center' },\n { overlayX: 'end', overlayY: 'center' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'left-start':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'end', overlayY: 'top' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n case 'left-end':\n return new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'end', overlayY: 'bottom' },\n getXOffset(placement),\n null,\n getPanelClass(placement)\n );\n\n default:\n return bottom;\n }\n }\n\n private _getPositionStrategy(placement: Placement | Placement[]): FlexibleConnectedPositionStrategy {\n /**\n * Format `placement` into a consistent data type of `Placement[]`\n */\n const placementsList: Placement[] = [placement].flat();\n /**\n * Get positions from preferred placements\n */\n const primaryPositions = placementsList.map(p => this._getPositionPair(p));\n /**\n * If `autoFlip` is enabled, include the inverse position of each `placement` input. Each of this inverse positions\n * will have a lower priority than each of the preferred positions generated from the `placement` input\n */\n const positions = this.autoFlip\n ? [...primaryPositions, ...placementsList.map(p => this._getPositionPair(placementFlipMap[p]))]\n : [...primaryPositions];\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this.connectedTo || this._elRef)\n .withFlexibleDimensions(false)\n .withPositions(positions)\n .withPush(false);\n }\n\n private _updatePositionStrategy(placement: Placement | Placement[]): void {\n const positionStrategy = this._getPositionStrategy(placement);\n this._overlayRef.updatePositionStrategy(positionStrategy);\n }\n\n private _getScrollStrategy(closeOnScroll: boolean): RepositionScrollStrategy | CloseScrollStrategy {\n if (closeOnScroll) {\n return this._overlay.scrollStrategies.close();\n }\n return this._overlay.scrollStrategies.reposition();\n }\n\n private _updateScrollStrategy(closeOnScroll: boolean): void {\n const scrollStrategy = this._getScrollStrategy(closeOnScroll);\n this._overlayRef.updateScrollStrategy(scrollStrategy);\n }\n\n ngOnDestroy() {\n this.hide();\n this._destroyed$.next();\n this._destroyed$.complete();\n this._overlayRef?.dispose();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nw-style-guide",
3
3
  "type": "module",
4
- "version": "21.2.2",
4
+ "version": "21.2.3-beta.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/NewsWhip/style-guide"
@@ -94,6 +94,7 @@ declare class TooltipDirective implements OnInit, OnChanges, OnDestroy {
94
94
  * A subject that emits when the TooltipContainerComponent is destroyed
95
95
  */
96
96
  private _tooltipContainerDestroyed$;
97
+ private _outsideClick$;
97
98
  ngOnInit(): void;
98
99
  ngOnChanges(c: SimpleChanges): void;
99
100
  /**
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-animations.mjs",
3
- "typings": "../types/nw-style-guide-animations.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-autofocus.mjs",
3
- "typings": "../types/nw-style-guide-autofocus.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-carousel.mjs",
3
- "typings": "../types/nw-style-guide-carousel.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-charts.mjs",
3
- "typings": "../types/nw-style-guide-charts.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-email-input.mjs",
3
- "typings": "../types/nw-style-guide-email-input.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-feature-alerts.mjs",
3
- "typings": "../types/nw-style-guide-feature-alerts.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-loader.mjs",
3
- "typings": "../types/nw-style-guide-loader.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-picker.mjs",
3
- "typings": "../types/nw-style-guide-picker.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-resize-observer.mjs",
3
- "typings": "../types/nw-style-guide-resize-observer.d.ts"
4
- }
package/tabs/package.json DELETED
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-tabs.mjs",
3
- "typings": "../types/nw-style-guide-tabs.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-toasts.mjs",
3
- "typings": "../types/nw-style-guide-toasts.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-tooltips.mjs",
3
- "typings": "../types/nw-style-guide-tooltips.d.ts"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "module": "../fesm2022/nw-style-guide-word-cloud.mjs",
3
- "typings": "../types/nw-style-guide-word-cloud.d.ts"
4
- }