@libs-ui/components-popover 0.2.29 → 0.2.30-6.1

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.
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, viewChild, inject, ElementRef, Component, ChangeDetectionStrategy, input, output, effect, untracked } from '@angular/core';
2
+ import { signal, viewChild, inject, ElementRef, ChangeDetectionStrategy, Component, input, output, effect, untracked } from '@angular/core';
3
3
  import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
4
- import { UtilsUrlSearchParams, cloneIBoundingClientRect, cloneDeep, getViewport, isNil } from '@libs-ui/utils';
5
- import { Subject, interval, take, takeUntil, Subscription, fromEvent, timer } from 'rxjs';
4
+ import { UtilsUrlSearchParams, get, cloneIBoundingClientRect, cloneDeep, getViewport, getEventNameHandleClick, checkMouseOverInContainer, set, isNil } from '@libs-ui/utils';
5
+ import { Subject, interval, take, takeUntil, Subscription, fromEvent } from 'rxjs';
6
6
  import { debounceTime, tap, takeUntil as takeUntil$1 } from 'rxjs/operators';
7
7
  import { NgStyle, AsyncPipe, NgTemplateOutlet } from '@angular/common';
8
8
  import { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';
@@ -14,6 +14,14 @@ const timerDestroy = parseInt(new UtilsUrlSearchParams(location.href).get(KEY_QU
14
14
  const getPopoverTimerDestroyInQueryUrl = () => {
15
15
  return timerDestroy;
16
16
  };
17
+ const getListdirections = (drirection) => {
18
+ return get({
19
+ bottom: ['bottom', 'top', 'right', 'left'],
20
+ right: ['right', 'left', 'bottom', 'top'],
21
+ left: ['left', 'right', 'bottom', 'top'],
22
+ top: ['top', 'bottom', 'right', 'left'],
23
+ }, drirection);
24
+ };
17
25
 
18
26
  class LibsUiComponentsPopoverOverlayComponent {
19
27
  /* PROPERTIES */
@@ -24,22 +32,15 @@ class LibsUiComponentsPopoverOverlayComponent {
24
32
  arrowLeft = signal(0);
25
33
  arrowTop = signal(0);
26
34
  config = signal({});
27
- directions = signal(new Map());
28
35
  timeout = signal(0);
29
36
  onDestroy = new Subject();
30
- /* OUTPUT */
37
+ // #region OUTPUT
31
38
  outEvent = new Subject();
32
39
  /* VIEW CHILD */
33
40
  container = viewChild.required('container');
34
- /* INJECT */
41
+ // #region INJECT
35
42
  elementRef = inject(ElementRef);
36
- constructor() {
37
- this.directions().set('bottom', ['bottom', 'top', 'right', 'left']);
38
- this.directions().set('right', ['right', 'left', 'bottom', 'top']);
39
- this.directions().set('left', ['left', 'right', 'bottom', 'top']);
40
- this.directions().set('top', ['top', 'bottom', 'right', 'left']);
41
- }
42
- /* FUNCTIONS*/
43
+ // #region FUNCTIONS
43
44
  get ElementRef() {
44
45
  return this.elementRef;
45
46
  }
@@ -91,7 +92,7 @@ class LibsUiComponentsPopoverOverlayComponent {
91
92
  });
92
93
  }
93
94
  setDirections(rectOrigin, viewPort, rectFrame) {
94
- const directions = this.directions().get(this.config().direction || 'bottom') || ['bottom', 'right', 'left', 'top'];
95
+ const directions = getListdirections(this.config().direction || 'bottom');
95
96
  const positionLast = directions.length - 1;
96
97
  this.timeout.set(setTimeout(async () => {
97
98
  const rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());
@@ -180,8 +181,8 @@ class LibsUiComponentsPopoverOverlayComponent {
180
181
  if (this.config) {
181
182
  this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - rectOrigin.height }));
182
183
  }
183
- left = left >= 0 ? left : 0;
184
- this.left.set(left);
184
+ this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
185
+ return true;
185
186
  }
186
187
  return false;
187
188
  case 'right':
@@ -210,6 +211,13 @@ class LibsUiComponentsPopoverOverlayComponent {
210
211
  if (top > 0 && left + rectContent.width < viewPort.width) {
211
212
  return true;
212
213
  }
214
+ if (isLast) {
215
+ if (this.config) {
216
+ this.config.update(config => ({ ...config, maxHeight: viewPort.height }));
217
+ }
218
+ this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
219
+ return true;
220
+ }
213
221
  return false;
214
222
  case 'left':
215
223
  positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;
@@ -237,6 +245,13 @@ class LibsUiComponentsPopoverOverlayComponent {
237
245
  if (left > 0 && top > 0) {
238
246
  return true;
239
247
  }
248
+ if (isLast) {
249
+ if (this.config) {
250
+ this.config.update(config => ({ ...config, maxHeight: viewPort.height }));
251
+ }
252
+ this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
253
+ return true;
254
+ }
240
255
  return false;
241
256
  case 'top':
242
257
  positionTop = rectOrigin.top - (halfSquare * 2) - distanceArrow;
@@ -264,8 +279,8 @@ class LibsUiComponentsPopoverOverlayComponent {
264
279
  if (isLast) {
265
280
  this.config.update(config => ({ ...config, maxHeight: viewPort.height - (viewPort.height - rectOrigin.top) }));
266
281
  top = 0;
267
- left = left >= 0 ? left : 0;
268
- this.left.set(left);
282
+ this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));
283
+ return true;
269
284
  }
270
285
  return false;
271
286
  }
@@ -287,24 +302,29 @@ class LibsUiComponentsPopoverOverlayComponent {
287
302
  this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-time', `${configValue.animationConfig?.time || .4}s`);
288
303
  this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-distance', `${this.currentDirection() === 'top' ? '-' : ''}${configValue.animationConfig?.distance || 12}px`);
289
304
  }
305
+ getLeftPositionIsLast(isLast, currentLeft, viewPort, rectOrigin, rectContent, halfSquare) {
306
+ if (viewPort.width - (rectOrigin.left + rectOrigin.width + rectContent.width + halfSquare) > 0) {
307
+ return rectOrigin.left + rectOrigin.width + halfSquare;
308
+ }
309
+ return currentLeft;
310
+ }
290
311
  ngOnDestroy() {
291
312
  clearTimeout(this.timeout());
292
313
  this.onDestroy.next();
293
314
  this.onDestroy.complete();
294
315
  }
295
316
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
296
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsPopoverOverlayComponent, isStandalone: true, selector: "libs_ui-components-popover-overlay", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["classContainer", "options"], outputs: ["outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
317
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsPopoverOverlayComponent, isStandalone: true, selector: "libs_ui-components-popover-overlay", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LibsUiComponentsScrollOverlayDirective, selector: "[LibsUiComponentsScrollOverlayDirective]", inputs: ["debugMode", "ignoreInit", "classContainer", "options", "elementCheckScrollX", "elementCheckScrollY", "elementScroll"], outputs: ["outScroll", "outScrollX", "outScrollY", "outScrollTop", "outScrollBottom"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
297
318
  }
298
319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverOverlayComponent, decorators: [{
299
320
  type: Component,
300
321
  args: [{ selector: 'libs_ui-components-popover-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet], template: "<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n", styles: ["@-webkit-keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}@keyframes animation-move{0%{transform:translateY(var(--libs-ui-popover-overlay-time-animation-distance))}to{transform:translateY(0)}}.libs-ui-popover-overlay{position:fixed;background-color:#071631;border-radius:8px;z-index:1000;top:-10000px;left:-10000px}.libs-ui-popover-overlay-animation-move{animation:animation-move ease var(--libs-ui-popover-overlay-time-animation-time)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow{position:absolute;width:12px;height:6px;fill:#071631}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=bottom]{transform:rotate(180deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=left]{transform:rotate(270deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-arrow[direction=right]{transform:rotate(90deg)}.libs-ui-popover-overlay .libs-ui-popover-overlay-white-theme{fill:#fff}.libs-ui-popover-overlay .libs-ui-popover-overlay-body{color:#fff;word-break:break-word}.libs-ui-popover-overlay .libs-ui-popover-overlay-body[isTemplate=true]{font-size:inherit}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme{background-color:#fff;box-shadow:0 1px 1px #00143305,0 4px 16px #0014331a}.libs-ui-popover-overlay.libs-ui-popover-overlay-white-theme .libs-ui-popover-overlay-body{color:#071631}\n"] }]
301
- }], ctorParameters: () => [] });
322
+ }] });
302
323
 
303
324
  /* eslint-disable @typescript-eslint/no-explicit-any */
304
325
  class LibsUiComponentsPopoverComponent {
305
- /* PROPERTY */
326
+ // #region PROPERTY
306
327
  mouseEnter;
307
- mouseLeave;
308
328
  mouseWheel;
309
329
  mouseClick;
310
330
  windowResize;
@@ -312,57 +332,60 @@ class LibsUiComponentsPopoverComponent {
312
332
  windowMouseDown;
313
333
  windowClick;
314
334
  windowMouseUp;
315
- windowTouch;
335
+ windowMousemove;
316
336
  popoverOverlayComponent;
317
337
  subsEventPopup = new Subscription();
318
- firstClick;
319
- contentInnerHtml;
320
- timer;
321
- directionPopover;
322
- functionsControl;
323
- frameId;
324
338
  onDestroy = new Subject();
325
- /* INPUT */
339
+ functionsControl;
340
+ firstClick = signal(false);
341
+ contentInnerHtml = signal('');
342
+ timer = signal(undefined);
343
+ directionPopover = signal(undefined);
344
+ frameId = signal('');
345
+ // #region INPUT
346
+ debugId = input();
326
347
  flagMouse = input({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }, {
327
- transform: (value) => value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }
348
+ transform: (value) => (value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }),
328
349
  });
329
350
  type = input('other');
330
351
  mode = input('hover');
331
- config = input({}, {
332
- transform: (value) => value ? value : {}
333
- });
352
+ config = input({}, { transform: (value) => (value ? value : {}) });
334
353
  ignoreShowPopover = input();
335
354
  elementRefCustom = input();
355
+ initEventInElementRefCustom = input(false);
336
356
  classInclude = input('', { transform: (value) => value ?? '' });
337
357
  ignoreHiddenPopoverContentWhenMouseLeave = input();
338
358
  ignoreStopPropagationEvent = input();
339
359
  ignoreCursorPointerModeLikeClick = input();
340
360
  isAddContentToParentDocument = input();
341
361
  ignoreClickOutside = input();
342
- /* OUTPUT */
362
+ // #region OUTPUT
343
363
  outEvent = output();
344
364
  outChangStageFlagMouse = output();
345
365
  outEventPopoverContent = output();
346
366
  outFunctionsControl = output();
347
- /* INJECT */
367
+ // #region INJECT
348
368
  elementRef = inject(ElementRef);
349
369
  dynamicService = inject(LibsUiDynamicComponentService);
350
370
  constructor() {
351
- this.firstClick = false;
352
371
  let classDefault = undefined;
353
372
  effect(() => {
354
373
  if (classDefault === undefined) {
355
374
  classDefault = this.Element.className;
356
375
  }
357
- this.Element.className = classDefault || '';
376
+ if (this.elementRefCustom() !== this.Element) {
377
+ this.Element.className = classDefault || '';
378
+ }
358
379
  if (this.type() === 'text') {
359
380
  this.Element.classList.add('popover-text-ellipsis');
360
381
  }
361
- if (this.mode().includes('click') && !this.ignoreCursorPointerModeLikeClick) {
382
+ if (this.mode().includes('click') && !this.ignoreCursorPointerModeLikeClick()) {
362
383
  this.Element.classList.add('cursor-pointer');
363
384
  }
364
385
  if (this.classInclude()) {
365
- this.classInclude()?.split(' ').forEach(className => {
386
+ this.classInclude()
387
+ ?.split(' ')
388
+ .forEach((className) => {
366
389
  if (!className) {
367
390
  return;
368
391
  }
@@ -382,12 +405,12 @@ class LibsUiComponentsPopoverComponent {
382
405
  });
383
406
  }
384
407
  ngOnInit() {
385
- this.outEventPopoverContent.subscribe(direction => this.directionPopover = direction);
408
+ this.outEventPopoverContent.subscribe((direction) => this.directionPopover.set(direction));
386
409
  this.functionsControl = {
387
410
  removePopoverOverlay: this.removePopoverOverlay.bind(this),
388
411
  updatePopoverOverlayPosition: this.updatePopoverOverlayPosition.bind(this),
389
412
  getRectContainer: async () => (this.elementRefCustom() || this.Element).getBoundingClientRect(),
390
- getRectContent: async () => (this.popoverOverlayComponent?.instance?.ContainerElement)?.getBoundingClientRect(),
413
+ getRectContent: async () => this.popoverOverlayComponent?.instance?.ContainerElement?.getBoundingClientRect(),
391
414
  showPopover: this.addPopoverContent.bind(this),
392
415
  updatePopoverOverlay: this.updatePopoverOverlay.bind(this),
393
416
  };
@@ -396,15 +419,15 @@ class LibsUiComponentsPopoverComponent {
396
419
  ngAfterContentInit() {
397
420
  const nativeEl = this.Element;
398
421
  this.mouseEnter = this.initObservable(nativeEl, 'mouseenter');
399
- this.mouseLeave = this.initObservable(nativeEl, 'mouseleave');
400
- this.mouseClick = this.initObservable(nativeEl, 'click');
422
+ this.initObservable(nativeEl, 'click').subscribe();
423
+ this.mouseClick = this.initObservable(nativeEl, getEventNameHandleClick);
401
424
  this.mouseWheel = this.initObservable(window, 'wheel');
402
425
  this.windowResize = this.initObservable(window, 'resize');
403
426
  this.windowWheel = this.initObservable(window, 'wheel');
404
427
  this.windowMouseDown = this.initObservable(window, 'mousedown');
405
- this.windowClick = this.initObservable(window, 'click');
428
+ this.windowClick = this.initObservable(window, getEventNameHandleClick);
406
429
  this.windowMouseUp = this.initObservable(window, 'mouseup');
407
- this.windowTouch = this.initObservable(window, 'touchstart');
430
+ this.windowMousemove = this.initObservable(window, 'mousemove');
408
431
  this.mouseEnter.subscribe(() => {
409
432
  if (!this.mode().includes('hover')) {
410
433
  return;
@@ -412,43 +435,37 @@ class LibsUiComponentsPopoverComponent {
412
435
  if (this.type() === 'text' && nativeEl?.clientWidth >= nativeEl.scrollWidth && !this.popoverOverlayComponent) {
413
436
  return;
414
437
  }
415
- this.addPopoverContent(nativeEl);
438
+ this.addPopoverContent();
416
439
  });
417
440
  this.mouseClick.subscribe(() => {
418
- this.firstClick = !this.firstClick;
441
+ this.firstClick.update((val) => (this.ignoreShowPopover() ? false : !val));
419
442
  this.outEvent.emit('click');
420
443
  if (!this.mode().startsWith('click')) {
421
444
  return;
422
445
  }
423
- if (this.mode() === 'click-toggle' && !this.firstClick) {
446
+ if (this.mode() === 'click-toggle' && !this.firstClick()) {
424
447
  this.removePopoverOverlay();
425
448
  return;
426
449
  }
427
- this.addPopoverContent(nativeEl);
428
- });
429
- this.windowResize.pipe(debounceTime(500)).subscribe(() => {
430
- if (!this.popoverOverlayComponent) {
431
- return;
432
- }
433
- this.removePopoverOverlay();
434
- this.addPopoverContent(nativeEl);
450
+ this.addPopoverContent();
435
451
  });
452
+ this.windowResize.pipe(debounceTime(500)).subscribe(this.updatePopoverOverlayPosition.bind(this));
436
453
  }
437
- /* FUNCTIONS*/
454
+ // #region FUNCTIONS
438
455
  async updatePopoverOverlay() {
439
456
  const timer = setTimeout(() => {
440
457
  clearTimeout(timer);
441
- if (!this.popoverOverlayComponent?.instance || !this.config()) {
458
+ if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config()) {
442
459
  return;
443
460
  }
444
461
  const instance = this.popoverOverlayComponent.instance;
445
462
  const nativeEl = this.elementRefCustom() || this.Element;
446
- instance.setConfig(nativeEl.getBoundingClientRect(), this.config());
463
+ instance.setConfig(nativeEl.getBoundingClientRect(), { ...(this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());
447
464
  });
448
465
  }
449
466
  async updatePopoverOverlayPosition() {
450
- clearTimeout(this.timer);
451
- this.timer = setTimeout(async () => {
467
+ clearTimeout(this.timer());
468
+ this.timer.set(setTimeout(async () => {
452
469
  if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config() || !this.functionsControl) {
453
470
  return;
454
471
  }
@@ -459,48 +476,54 @@ class LibsUiComponentsPopoverComponent {
459
476
  }
460
477
  const rectContainer = await this.functionsControl.getRectContainer();
461
478
  const distanceListViewAndContainer = this.config()?.ignoreArrow === false ? 14 : 4;
462
- if (this.directionPopover === 'bottom' && ((rectListView.top + rectListView.height > viewPort.height) || (rectListView.top < (rectContainer.top + rectContainer.height)) || (rectListView.top - (rectContainer.top + rectContainer.height) > distanceListViewAndContainer)) || ((rectListView.left + rectListView.width > viewPort.width))) {
463
- const instance = this.popoverOverlayComponent.instance;
464
- const nativeEl = this.elementRefCustom() || this.Element;
465
- instance.setConfig(nativeEl.getBoundingClientRect(), { ...(this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());
466
- return;
467
- }
468
- if (this.directionPopover !== 'top') {
469
- return;
470
- }
471
- if ((rectContainer.top - (rectListView.top + rectListView.height) > distanceListViewAndContainer) || (rectListView.top + rectListView.height + distanceListViewAndContainer > rectContainer.top + 2) || ((rectListView.left + rectListView.width > viewPort.width))) {
472
- const instance = this.popoverOverlayComponent.instance;
473
- const nativeEl = this.elementRefCustom() || this.Element;
474
- instance.setConfig(nativeEl.getBoundingClientRect(), { ...(this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());
475
- return;
479
+ switch (this.directionPopover()) {
480
+ case 'right':
481
+ case 'left':
482
+ case 'bottom':
483
+ if (rectListView.top + rectListView.height > viewPort.height ||
484
+ rectListView.top < rectContainer.top + rectContainer.height ||
485
+ rectListView.top - (rectContainer.top + rectContainer.height) > distanceListViewAndContainer ||
486
+ rectListView.left + rectListView.width > viewPort.width) {
487
+ this.updatePopoverOverlay();
488
+ }
489
+ break;
490
+ case 'top':
491
+ if (rectContainer.top - (rectListView.top + rectListView.height) > distanceListViewAndContainer ||
492
+ rectListView.top + rectListView.height + distanceListViewAndContainer > rectContainer.top + 2 ||
493
+ rectListView.left + rectListView.width > viewPort.width) {
494
+ this.updatePopoverOverlay();
495
+ }
496
+ break;
476
497
  }
477
- }, 250);
498
+ }, 250));
478
499
  }
479
500
  get Element() {
501
+ if (this.initEventInElementRefCustom() && this.elementRefCustom()) {
502
+ return this.elementRefCustom();
503
+ }
480
504
  return this.elementRef.nativeElement.firstElementChild || this.elementRef.nativeElement;
481
505
  }
482
506
  initObservable(el, eventName) {
483
- return fromEvent(el, eventName).pipe(tap(e => !this.ignoreStopPropagationEvent && e.stopPropagation()), takeUntil$1(this.onDestroy));
507
+ return fromEvent(el, eventName).pipe(tap((e) => !this.ignoreStopPropagationEvent() && e.stopPropagation()), takeUntil$1(this.onDestroy));
484
508
  }
485
509
  async addPopoverContent(nativeEl) {
486
510
  if (this.popoverOverlayComponent || this.ignoreShowPopover() || !this.config()) {
487
511
  return;
488
512
  }
489
513
  this.popoverOverlayComponent = this.dynamicService.resolveComponentFactory(LibsUiComponentsPopoverOverlayComponent);
490
- this.frameId = this.dynamicService.addToBody(this.popoverOverlayComponent, this.isAddContentToParentDocument() || this.config().isAddContentToParentDocument);
514
+ this.frameId.set(this.dynamicService.addToBody(this.popoverOverlayComponent, this.isAddContentToParentDocument() || this.config().isAddContentToParentDocument));
491
515
  this.outEvent.emit('show');
492
516
  const instance = this.popoverOverlayComponent.instance;
493
- nativeEl = this.elementRefCustom() || nativeEl;
517
+ nativeEl = nativeEl || this.elementRefCustom() || this.Element;
494
518
  instance.setConfig(nativeEl.getBoundingClientRect(), { ...(this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());
495
519
  const flagsMouses = {
496
520
  isMouseEnter: true,
497
521
  isMouseEnterContent: false,
498
- isContainerHasScroll: nativeEl.offsetHeight < nativeEl.scrollHeight
522
+ isContainerHasScroll: nativeEl.offsetHeight < nativeEl.scrollHeight,
499
523
  };
500
524
  const nativeElContainer = instance.ElementRef.nativeElement;
501
525
  const mouseEnterContent = this.initObservable(nativeElContainer, 'mouseenter');
502
526
  const mouseLeaveContent = this.initObservable(nativeElContainer, 'mouseleave');
503
- this.subsEventPopup.add(this.initObservable(nativeElContainer, 'touchstart').subscribe());
504
527
  this.subsEventPopup.add(instance.outEvent.subscribe((direction) => {
505
528
  this.outEventPopoverContent.emit(direction);
506
529
  }));
@@ -523,10 +546,8 @@ class LibsUiComponentsPopoverComponent {
523
546
  }
524
547
  this.removePopoverOverlay();
525
548
  }));
526
- this.subsEventPopup.add(timer(0).subscribe(() => {
527
- this.handlerMouseLeaveRemovePopoverOverlay(mouseLeaveContent, flagsMouses, 'isMouseEnterContent', 'isMouseEnter', 'mouseleave-content');
528
- this.handlerMouseLeaveRemovePopoverOverlay(this.mouseLeave, flagsMouses, 'isMouseEnter', 'isMouseEnterContent', 'mouseleave-element');
529
- }));
549
+ this.handlerMouseLeaveRemovePopoverOverlay(this.windowMousemove, flagsMouses, 'isMouseEnter', 'isMouseEnterContent', 'mouseleave-element');
550
+ this.handlerMouseLeaveRemovePopoverOverlay(mouseLeaveContent, flagsMouses, 'isMouseEnterContent', 'isMouseEnter', 'mouseleave-content');
530
551
  if (this.mode() === 'click_open_and_click_panel_content_hidden') {
531
552
  this.subsEventPopup.add(this.initObservable(nativeElContainer, 'click').subscribe(() => {
532
553
  this.removePopoverOverlay();
@@ -536,30 +557,33 @@ class LibsUiComponentsPopoverComponent {
536
557
  this.handlerWindowEventRemovePopoverOverlay(this.windowMouseDown, flagsMouses);
537
558
  this.handlerWindowEventRemovePopoverOverlay(this.windowMouseUp, flagsMouses);
538
559
  this.handlerWindowEventRemovePopoverOverlay(this.windowWheel, flagsMouses);
539
- this.subsEventPopup.add(this.windowTouch.subscribe(() => {
540
- this.removePopoverOverlay();
541
- }));
542
560
  }
543
561
  handlerWindowEventRemovePopoverOverlay(obs, flagsMouses) {
544
562
  this.subsEventPopup.add(obs.pipe(debounceTime(10)).subscribe(() => {
545
563
  if (flagsMouses.isMouseEnter || flagsMouses.isMouseEnterContent || this.ignoreClickOutside()) {
546
564
  return;
547
565
  }
548
- if (this.flagMouse && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {
566
+ if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {
549
567
  return;
550
568
  }
551
- this.firstClick = false;
569
+ this.firstClick.set(false);
552
570
  this.removePopoverOverlay();
553
571
  }));
554
572
  }
555
573
  handlerMouseLeaveRemovePopoverOverlay(obs, flagsMouses, flagKeyChangeValue, flagKeyCheck, outEvent) {
556
- this.subsEventPopup.add(obs.pipe(tap(() => this.outEvent.emit(outEvent)), debounceTime(getPopoverTimerDestroyInQueryUrl() || this.config()?.timerDestroy || 0)).subscribe(() => {
557
- flagsMouses[flagKeyChangeValue] = false;
574
+ this.subsEventPopup.add(obs
575
+ .pipe(tap(() => this.outEvent.emit(outEvent)), debounceTime(getPopoverTimerDestroyInQueryUrl() || this.config()?.timerDestroy || 0))
576
+ .subscribe((e) => {
577
+ if (outEvent === 'mouseleave-element' &&
578
+ (checkMouseOverInContainer(e, this.Element) || checkMouseOverInContainer({ clientX: e.clientX + 2, clientY: e.clientY + 2 }, this.Element) || checkMouseOverInContainer({ clientX: e.clientX - 2, clientY: e.clientY - 2 }, this.Element))) {
579
+ return;
580
+ }
581
+ set(flagsMouses, flagKeyChangeValue, false);
558
582
  this.outChangStageFlagMouse.emit(flagsMouses);
559
- if (this.flagMouse && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {
583
+ if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {
560
584
  return;
561
585
  }
562
- if (flagsMouses[flagKeyCheck] || this.ignoreHiddenPopoverContentWhenMouseLeave()) {
586
+ if (get(flagsMouses, flagKeyCheck) || this.ignoreHiddenPopoverContentWhenMouseLeave()) {
563
587
  return;
564
588
  }
565
589
  this.removePopoverOverlay();
@@ -567,10 +591,10 @@ class LibsUiComponentsPopoverComponent {
567
591
  }
568
592
  getDefaultConfigs() {
569
593
  const configValue = this.config() || {};
570
- if ((isNil(configValue.content)) || (configValue.content === this.contentInnerHtml && this.contentInnerHtml !== this.elementRef.nativeElement.innerHTML)) {
571
- configValue.content = this.elementRef.nativeElement.innerHTML;
594
+ if (isNil(configValue.content) || (configValue.content === this.contentInnerHtml() && this.contentInnerHtml() !== this.Element.innerHTML)) {
595
+ configValue.content = this.Element.innerHTML;
572
596
  }
573
- this.contentInnerHtml = this.elementRef.nativeElement.innerHTML;
597
+ this.contentInnerHtml.set(this.Element.innerHTML);
574
598
  if (!configValue.maxWidth) {
575
599
  configValue.maxWidth = 250;
576
600
  }
@@ -583,7 +607,7 @@ class LibsUiComponentsPopoverComponent {
583
607
  if (!configValue.position) {
584
608
  configValue.position = {
585
609
  mode: 'center',
586
- distance: 0
610
+ distance: 0,
587
611
  };
588
612
  }
589
613
  return configValue;
@@ -591,23 +615,23 @@ class LibsUiComponentsPopoverComponent {
591
615
  async removePopoverOverlay() {
592
616
  if (this.popoverOverlayComponent) {
593
617
  this.outEvent.emit('remove');
618
+ this.subsEventPopup.unsubscribe();
619
+ this.subsEventPopup = new Subscription();
594
620
  }
595
- this.dynamicService.remove(this.popoverOverlayComponent, this.frameId);
596
- this.frameId = undefined;
621
+ this.dynamicService.remove(this.popoverOverlayComponent, this.frameId());
622
+ this.frameId.set('');
597
623
  this.popoverOverlayComponent = undefined;
598
- this.subsEventPopup.unsubscribe();
599
- this.subsEventPopup = new Subscription();
600
- this.firstClick = false;
624
+ this.firstClick.set(false);
601
625
  }
602
626
  ngOnDestroy() {
603
- clearTimeout(this.timer);
627
+ clearTimeout(this.timer());
604
628
  this.removePopoverOverlay();
605
629
  this.onDestroy.next();
606
630
  this.onDestroy.complete();
607
631
  this.subsEventPopup.unsubscribe();
608
632
  }
609
633
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
610
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiComponentsPopoverComponent, isStandalone: true, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: { flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopover: { classPropertyName: "ignoreShowPopover", publicName: "ignoreShowPopover", isSignal: true, isRequired: false, transformFunction: null }, elementRefCustom: { classPropertyName: "elementRefCustom", publicName: "elementRefCustom", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreHiddenPopoverContentWhenMouseLeave: { classPropertyName: "ignoreHiddenPopoverContentWhenMouseLeave", publicName: "ignoreHiddenPopoverContentWhenMouseLeave", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, ignoreCursorPointerModeLikeClick: { classPropertyName: "ignoreCursorPointerModeLikeClick", publicName: "ignoreCursorPointerModeLikeClick", isSignal: true, isRequired: false, transformFunction: null }, isAddContentToParentDocument: { classPropertyName: "isAddContentToParentDocument", publicName: "isAddContentToParentDocument", isSignal: true, isRequired: false, transformFunction: null }, ignoreClickOutside: { classPropertyName: "ignoreClickOutside", publicName: "ignoreClickOutside", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outEvent: "outEvent", outChangStageFlagMouse: "outChangStageFlagMouse", outEventPopoverContent: "outEventPopoverContent", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<ng-content />\n", styles: ["::ng-deep .popover-text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .cursor-pointer{cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
634
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiComponentsPopoverComponent, isStandalone: true, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: { debugId: { classPropertyName: "debugId", publicName: "debugId", isSignal: true, isRequired: false, transformFunction: null }, flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, ignoreShowPopover: { classPropertyName: "ignoreShowPopover", publicName: "ignoreShowPopover", isSignal: true, isRequired: false, transformFunction: null }, elementRefCustom: { classPropertyName: "elementRefCustom", publicName: "elementRefCustom", isSignal: true, isRequired: false, transformFunction: null }, initEventInElementRefCustom: { classPropertyName: "initEventInElementRefCustom", publicName: "initEventInElementRefCustom", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, ignoreHiddenPopoverContentWhenMouseLeave: { classPropertyName: "ignoreHiddenPopoverContentWhenMouseLeave", publicName: "ignoreHiddenPopoverContentWhenMouseLeave", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, ignoreCursorPointerModeLikeClick: { classPropertyName: "ignoreCursorPointerModeLikeClick", publicName: "ignoreCursorPointerModeLikeClick", isSignal: true, isRequired: false, transformFunction: null }, isAddContentToParentDocument: { classPropertyName: "isAddContentToParentDocument", publicName: "isAddContentToParentDocument", isSignal: true, isRequired: false, transformFunction: null }, ignoreClickOutside: { classPropertyName: "ignoreClickOutside", publicName: "ignoreClickOutside", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outEvent: "outEvent", outChangStageFlagMouse: "outChangStageFlagMouse", outEventPopoverContent: "outEventPopoverContent", outFunctionsControl: "outFunctionsControl" }, ngImport: i0, template: "<ng-content />\n", styles: ["::ng-deep .popover-text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .cursor-pointer{cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
611
635
  }
612
636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsPopoverComponent, decorators: [{
613
637
  type: Component,
@@ -618,5 +642,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
618
642
  * Generated bundle index. Do not edit.
619
643
  */
620
644
 
621
- export { LibsUiComponentsPopoverComponent };
645
+ export { KEY_QUERY_POPOVER_TIMER_DESTROY, LibsUiComponentsPopoverComponent, getListdirections, getPopoverTimerDestroyInQueryUrl };
622
646
  //# sourceMappingURL=libs-ui-components-popover.mjs.map