@ngbase/adk 0.1.17 → 0.1.18

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.
Files changed (199) hide show
  1. package/fesm2022/ngbase-adk-a11y.mjs +42 -42
  2. package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
  3. package/fesm2022/ngbase-adk-accordion.mjs +20 -26
  4. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  5. package/fesm2022/ngbase-adk-autocomplete.mjs +11 -11
  6. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  7. package/fesm2022/ngbase-adk-avatar.mjs +13 -13
  8. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  9. package/fesm2022/ngbase-adk-bidi.mjs +3 -3
  10. package/fesm2022/ngbase-adk-bidi.mjs.map +1 -1
  11. package/fesm2022/ngbase-adk-breadcrumb.mjs +14 -14
  12. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  13. package/fesm2022/ngbase-adk-cache.mjs +3 -3
  14. package/fesm2022/ngbase-adk-cache.mjs.map +1 -1
  15. package/fesm2022/ngbase-adk-carousel.mjs +18 -18
  16. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  17. package/fesm2022/ngbase-adk-checkbox.mjs +15 -21
  18. package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
  19. package/fesm2022/ngbase-adk-chip.mjs +12 -12
  20. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-clipboard.mjs +7 -5
  22. package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
  24. package/fesm2022/ngbase-adk-color-picker.mjs +44 -53
  25. package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -1
  26. package/fesm2022/ngbase-adk-cookies.mjs +3 -3
  27. package/fesm2022/ngbase-adk-cookies.mjs.map +1 -1
  28. package/fesm2022/ngbase-adk-datepicker.mjs +70 -89
  29. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  30. package/fesm2022/ngbase-adk-dialog.mjs +17 -39
  31. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  32. package/fesm2022/ngbase-adk-drag.mjs +20 -20
  33. package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
  34. package/fesm2022/ngbase-adk-form-field.mjs +65 -118
  35. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  36. package/fesm2022/ngbase-adk-hover-card.mjs +5 -5
  37. package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -1
  38. package/fesm2022/ngbase-adk-icon.mjs +9 -11
  39. package/fesm2022/ngbase-adk-icon.mjs.map +1 -1
  40. package/fesm2022/ngbase-adk-inline-edit.mjs +27 -35
  41. package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -1
  42. package/fesm2022/ngbase-adk-jwt.mjs +6 -6
  43. package/fesm2022/ngbase-adk-jwt.mjs.map +1 -1
  44. package/fesm2022/ngbase-adk-keys.mjs +6 -6
  45. package/fesm2022/ngbase-adk-keys.mjs.map +1 -1
  46. package/fesm2022/ngbase-adk-layout.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-list.mjs +10 -10
  48. package/fesm2022/ngbase-adk-list.mjs.map +1 -1
  49. package/fesm2022/ngbase-adk-mask.mjs +8 -8
  50. package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
  51. package/fesm2022/ngbase-adk-menu.mjs +69 -79
  52. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  53. package/fesm2022/ngbase-adk-network.mjs +3 -3
  54. package/fesm2022/ngbase-adk-network.mjs.map +1 -1
  55. package/fesm2022/ngbase-adk-otp.mjs +24 -45
  56. package/fesm2022/ngbase-adk-otp.mjs.map +1 -1
  57. package/fesm2022/ngbase-adk-pagination.mjs +9 -9
  58. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  59. package/fesm2022/ngbase-adk-popover.mjs +120 -89
  60. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-portal.mjs +134 -47
  62. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-progress.mjs +7 -7
  64. package/fesm2022/ngbase-adk-progress.mjs.map +1 -1
  65. package/fesm2022/ngbase-adk-radio.mjs +20 -27
  66. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-resizable.mjs +138 -48
  68. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  69. package/fesm2022/ngbase-adk-scroll-area.mjs +28 -20
  70. package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -1
  71. package/fesm2022/ngbase-adk-select.mjs +58 -80
  72. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  73. package/fesm2022/ngbase-adk-selectable.mjs +19 -30
  74. package/fesm2022/ngbase-adk-selectable.mjs.map +1 -1
  75. package/fesm2022/ngbase-adk-sheet.mjs +6 -20
  76. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -1
  77. package/fesm2022/ngbase-adk-sidenav.mjs +65 -48
  78. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  79. package/fesm2022/ngbase-adk-slider.mjs +40 -53
  80. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  81. package/fesm2022/ngbase-adk-sonner.mjs +12 -19
  82. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  83. package/fesm2022/ngbase-adk-stepper.mjs +17 -25
  84. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  85. package/fesm2022/ngbase-adk-switch.mjs +25 -32
  86. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  87. package/fesm2022/ngbase-adk-table.mjs +581 -83
  88. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  89. package/fesm2022/ngbase-adk-tabs.mjs +37 -35
  90. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  91. package/fesm2022/ngbase-adk-test.mjs.map +1 -1
  92. package/fesm2022/ngbase-adk-toggle-group.mjs +20 -34
  93. package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -1
  94. package/fesm2022/ngbase-adk-toggle.mjs +14 -19
  95. package/fesm2022/ngbase-adk-toggle.mjs.map +1 -1
  96. package/fesm2022/ngbase-adk-tooltip.mjs +12 -19
  97. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  98. package/fesm2022/ngbase-adk-tour.mjs +52 -52
  99. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  100. package/fesm2022/ngbase-adk-translate.mjs +8 -10
  101. package/fesm2022/ngbase-adk-translate.mjs.map +1 -1
  102. package/fesm2022/ngbase-adk-tree.mjs +20 -20
  103. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  104. package/fesm2022/ngbase-adk-utils.mjs +30 -43
  105. package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
  106. package/fesm2022/ngbase-adk-virtualizer.mjs +9 -9
  107. package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
  108. package/package.json +101 -101
  109. package/schematics/components/files/accordion/accordion.ts.template +8 -5
  110. package/schematics/components/files/audio/AudioPlayer.ts.template +245 -0
  111. package/schematics/components/files/audio/AudioRecorder.ts.template +377 -0
  112. package/schematics/components/files/audio/AudioVisualizer.ts.template +175 -0
  113. package/schematics/components/files/audio/index.ts.template +3 -0
  114. package/schematics/components/files/charts/area-chart.component.ts.template +278 -0
  115. package/schematics/components/files/charts/bar-chart.component.ts.template +262 -0
  116. package/schematics/components/files/charts/chart-tooltip.component.ts.template +168 -0
  117. package/schematics/components/files/charts/index.ts.template +4 -0
  118. package/schematics/components/files/charts/line-chart.component.ts.template +238 -0
  119. package/schematics/components/files/charts/pie-chart.component.ts.template +283 -0
  120. package/schematics/components/files/checkbox/checkbox.ts.template +2 -2
  121. package/schematics/components/files/color-picker/color-picker.ts.template +2 -2
  122. package/schematics/components/files/dialog/dialog.ts.template +18 -14
  123. package/schematics/components/files/drawer/drawer.ts.template +30 -27
  124. package/schematics/components/files/form-field/form-field.ts.template +49 -21
  125. package/schematics/components/files/pagination/pagination.ts.template +4 -4
  126. package/schematics/components/files/picasa/picasa-base.component.ts.template +15 -30
  127. package/schematics/components/files/popover/popover.ts.template +15 -4
  128. package/schematics/components/files/select/list-selection.ts.template +0 -2
  129. package/schematics/components/files/select/option.ts.template +1 -1
  130. package/schematics/components/files/selectable/selectable.ts.template +2 -2
  131. package/schematics/components/files/sheet/sheet.ts.template +26 -14
  132. package/schematics/components/files/sidenav/sidenav.ts.template +7 -5
  133. package/schematics/components/files/sonner/sonner.ts.template +1 -2
  134. package/schematics/components/files/stepper/stepper.ts.template +2 -4
  135. package/schematics/components/files/switch/switch.ts.template +2 -2
  136. package/schematics/components/files/table/table.ts.template +43 -3
  137. package/schematics/components/files/theme/theme.service.ts.template +3 -3
  138. package/schematics/components/files/toggle/toggle.ts.template +1 -1
  139. package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
  140. package/schematics/components/files/tooltip/tooltip.ts.template +2 -3
  141. package/{accordion/index.d.ts → types/ngbase-adk-accordion.d.ts} +1 -3
  142. package/{autocomplete/index.d.ts → types/ngbase-adk-autocomplete.d.ts} +2 -7
  143. package/{checkbox/index.d.ts → types/ngbase-adk-checkbox.d.ts} +8 -14
  144. package/types/ngbase-adk-clipboard.d.ts +12 -0
  145. package/{color-picker/index.d.ts → types/ngbase-adk-color-picker.d.ts} +14 -26
  146. package/{datepicker/index.d.ts → types/ngbase-adk-datepicker.d.ts} +9 -18
  147. package/{dialog/index.d.ts → types/ngbase-adk-dialog.d.ts} +3 -8
  148. package/types/ngbase-adk-form-field.d.ts +88 -0
  149. package/{inline-edit/index.d.ts → types/ngbase-adk-inline-edit.d.ts} +8 -16
  150. package/{menu/index.d.ts → types/ngbase-adk-menu.d.ts} +6 -5
  151. package/{otp/index.d.ts → types/ngbase-adk-otp.d.ts} +8 -16
  152. package/{popover/index.d.ts → types/ngbase-adk-popover.d.ts} +14 -2
  153. package/{portal/index.d.ts → types/ngbase-adk-portal.d.ts} +29 -8
  154. package/{radio/index.d.ts → types/ngbase-adk-radio.d.ts} +9 -12
  155. package/{resizable/index.d.ts → types/ngbase-adk-resizable.d.ts} +4 -4
  156. package/{scroll-area/index.d.ts → types/ngbase-adk-scroll-area.d.ts} +2 -1
  157. package/{select/index.d.ts → types/ngbase-adk-select.d.ts} +8 -22
  158. package/{selectable/index.d.ts → types/ngbase-adk-selectable.d.ts} +6 -10
  159. package/{sheet/index.d.ts → types/ngbase-adk-sheet.d.ts} +4 -3
  160. package/{sidenav/index.d.ts → types/ngbase-adk-sidenav.d.ts} +7 -8
  161. package/{slider/index.d.ts → types/ngbase-adk-slider.d.ts} +8 -17
  162. package/{sonner/index.d.ts → types/ngbase-adk-sonner.d.ts} +1 -3
  163. package/{stepper/index.d.ts → types/ngbase-adk-stepper.d.ts} +1 -4
  164. package/{switch/index.d.ts → types/ngbase-adk-switch.d.ts} +7 -14
  165. package/{table/index.d.ts → types/ngbase-adk-table.d.ts} +126 -3
  166. package/{test/index.d.ts → types/ngbase-adk-test.d.ts} +1 -1
  167. package/{toggle-group/index.d.ts → types/ngbase-adk-toggle-group.d.ts} +5 -10
  168. package/types/ngbase-adk-toggle.d.ts +14 -0
  169. package/{tooltip/index.d.ts → types/ngbase-adk-tooltip.d.ts} +9 -11
  170. package/{tour/index.d.ts → types/ngbase-adk-tour.d.ts} +4 -6
  171. package/{utils/index.d.ts → types/ngbase-adk-utils.d.ts} +15 -11
  172. package/clipboard/index.d.ts +0 -11
  173. package/form-field/index.d.ts +0 -97
  174. package/toggle/index.d.ts +0 -16
  175. /package/{a11y/index.d.ts → types/ngbase-adk-a11y.d.ts} +0 -0
  176. /package/{avatar/index.d.ts → types/ngbase-adk-avatar.d.ts} +0 -0
  177. /package/{bidi/index.d.ts → types/ngbase-adk-bidi.d.ts} +0 -0
  178. /package/{breadcrumb/index.d.ts → types/ngbase-adk-breadcrumb.d.ts} +0 -0
  179. /package/{cache/index.d.ts → types/ngbase-adk-cache.d.ts} +0 -0
  180. /package/{carousel/index.d.ts → types/ngbase-adk-carousel.d.ts} +0 -0
  181. /package/{chip/index.d.ts → types/ngbase-adk-chip.d.ts} +0 -0
  182. /package/{collections/index.d.ts → types/ngbase-adk-collections.d.ts} +0 -0
  183. /package/{cookies/index.d.ts → types/ngbase-adk-cookies.d.ts} +0 -0
  184. /package/{drag/index.d.ts → types/ngbase-adk-drag.d.ts} +0 -0
  185. /package/{hover-card/index.d.ts → types/ngbase-adk-hover-card.d.ts} +0 -0
  186. /package/{icon/index.d.ts → types/ngbase-adk-icon.d.ts} +0 -0
  187. /package/{jwt/index.d.ts → types/ngbase-adk-jwt.d.ts} +0 -0
  188. /package/{keys/index.d.ts → types/ngbase-adk-keys.d.ts} +0 -0
  189. /package/{layout/index.d.ts → types/ngbase-adk-layout.d.ts} +0 -0
  190. /package/{list/index.d.ts → types/ngbase-adk-list.d.ts} +0 -0
  191. /package/{mask/index.d.ts → types/ngbase-adk-mask.d.ts} +0 -0
  192. /package/{network/index.d.ts → types/ngbase-adk-network.d.ts} +0 -0
  193. /package/{pagination/index.d.ts → types/ngbase-adk-pagination.d.ts} +0 -0
  194. /package/{progress/index.d.ts → types/ngbase-adk-progress.d.ts} +0 -0
  195. /package/{tabs/index.d.ts → types/ngbase-adk-tabs.d.ts} +0 -0
  196. /package/{translate/index.d.ts → types/ngbase-adk-translate.d.ts} +0 -0
  197. /package/{tree/index.d.ts → types/ngbase-adk-tree.d.ts} +0 -0
  198. /package/{virtualizer/index.d.ts → types/ngbase-adk-virtualizer.d.ts} +0 -0
  199. /package/{index.d.ts → types/ngbase-adk.d.ts} +0 -0
@@ -1,11 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, signal, inject, input, ElementRef, computed, Component, linkedSignal, Directive, viewChild, ViewContainerRef, effect } from '@angular/core';
2
+ import { inject, ElementRef, Directive, InjectionToken, signal, input, computed, Component, linkedSignal, viewChild, ViewContainerRef, effect } from '@angular/core';
3
3
  import { basePortal, BaseDialog, NgbPortalClose, DialogOptions } from '@ngbase/adk/portal';
4
- import { trigger, state, style, transition, animate } from '@angular/animations';
5
4
  import * as i1 from '@ngbase/adk/a11y';
6
5
  import { FocusTrap } from '@ngbase/adk/a11y';
7
- import { disposals, createHostAnimation } from '@ngbase/adk/utils';
8
- import { switchMap, fromEvent, map, startWith, EMPTY } from 'rxjs';
6
+ import { disposals } from '@ngbase/adk/utils';
7
+ import { Observable, fromEvent, switchMap, map, startWith } from 'rxjs';
9
8
 
10
9
  function basePopoverPortal(component) {
11
10
  const NAME = 'popover';
@@ -360,6 +359,26 @@ function tooltipPosition(config, windowDimensions = { width: window.innerWidth,
360
359
  return positioner.calculatePosition();
361
360
  }
362
361
 
362
+ /**
363
+ * Directive to mark the host element for arrow positioning.
364
+ * Apply this to the parent component that contains the arrow.
365
+ * The arrow will calculate offset based on the difference between
366
+ * the host element and the arrow element positions.
367
+ */
368
+ class NgbPopoverArrowHost {
369
+ constructor() {
370
+ this.el = inject((ElementRef));
371
+ }
372
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverArrowHost, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
373
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgbPopoverArrowHost, isStandalone: true, selector: "[ngbPopoverArrowHost]", exportAs: ["ngbPopoverArrowHost"], ngImport: i0 }); }
374
+ }
375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverArrowHost, decorators: [{
376
+ type: Directive,
377
+ args: [{
378
+ selector: '[ngbPopoverArrowHost]',
379
+ exportAs: 'ngbPopoverArrowHost',
380
+ }]
381
+ }] });
363
382
  class PopoverArrowTracker {
364
383
  constructor() {
365
384
  this.top = 0;
@@ -380,6 +399,8 @@ class NgbPopoverArrow {
380
399
  this.arrowTracker = inject(POPOVER_ARROW_TRACKER);
381
400
  this.anchor = input(false, ...(ngDevMode ? [{ debugName: "anchor" }] : []));
382
401
  this.el = inject((ElementRef));
402
+ // Optional: inject the host directive if available (for offset calculation)
403
+ this.arrowHost = inject(NgbPopoverArrowHost, { optional: true });
383
404
  this.styles = computed(() => {
384
405
  const { target, position } = this.arrowTracker.values();
385
406
  if (target && position) {
@@ -389,48 +410,71 @@ class NgbPopoverArrow {
389
410
  }, ...(ngDevMode ? [{ debugName: "styles" }] : []));
390
411
  }
391
412
  updateAnchorPosition(position, target, el) {
392
- const { height, width, top } = el.getBoundingClientRect();
393
- const { height: tHeight, width: tWidth, top: tTop } = target.getBoundingClientRect();
413
+ const elRect = el.getBoundingClientRect();
414
+ const targetRect = target.getBoundingClientRect();
415
+ // Calculate offset from host element (padding + border)
416
+ // If arrowHost is available, use the difference between host and arrow element
417
+ let offsetTop = 0;
418
+ let offsetLeft = 0;
419
+ if (this.arrowHost) {
420
+ const hostRect = this.arrowHost.el.nativeElement.getBoundingClientRect();
421
+ offsetTop = elRect.top - hostRect.top;
422
+ offsetLeft = elRect.left - hostRect.left;
423
+ console.log(elRect.top - hostRect.top);
424
+ }
394
425
  let deg = '0deg';
395
- let anchorTop = '50%';
396
- let anchorLeft = '50%';
397
- const anchorWidth = 8;
398
- const thHeight = tHeight / 2 - anchorWidth / 2;
399
- const thWidth = tWidth / 2;
426
+ let anchorTop = '0';
427
+ let anchorLeft = '0';
428
+ // Minimum distance from edge
429
+ const minPadding = 8;
430
+ // Calculate target center
431
+ const targetCenterX = targetRect.left + targetRect.width / 2;
432
+ const targetCenterY = targetRect.top + targetRect.height / 2;
433
+ // Arrow tip position relative to the arrow element
434
+ // Add offset to account for host padding/border
435
+ const arrowLeftPx = targetCenterX - elRect.left + offsetLeft;
436
+ const arrowTopPx = targetCenterY - elRect.top + offsetTop;
437
+ // Content area dimensions
438
+ const contentWidth = elRect.width;
439
+ const contentHeight = elRect.height;
440
+ // Clamp positions within content bounds
441
+ const clampedLeftPx = Math.max(minPadding, Math.min(arrowLeftPx, contentWidth - minPadding));
442
+ const clampedTopPx = Math.max(minPadding, Math.min(arrowTopPx, contentHeight - minPadding));
443
+ // Arrow positioning - always center to target
400
444
  switch (position) {
401
445
  case 'top':
402
446
  case 'tl':
403
447
  case 'tr':
448
+ deg = '0deg';
404
449
  anchorTop = '100%';
450
+ anchorLeft = `${clampedLeftPx}px`;
451
+ break;
452
+ case 'bottom':
453
+ case 'bl':
454
+ case 'br':
455
+ deg = '180deg';
456
+ anchorTop = '0';
457
+ anchorLeft = `${clampedLeftPx}px`;
405
458
  break;
406
459
  case 'left':
460
+ case 'ls':
461
+ case 'le':
407
462
  deg = '270deg';
408
- anchorLeft = `calc(100% + ${anchorWidth / 2}px)`;
409
- anchorTop =
410
- tHeight > height
411
- ? `calc(50% - ${anchorWidth / 2}px)`
412
- : `calc(${thHeight + (tTop - top)}px)`;
463
+ anchorLeft = '100%';
464
+ anchorTop = `${clampedTopPx}px`;
413
465
  break;
414
466
  case 'right':
467
+ case 'rs':
468
+ case 're':
415
469
  deg = '90deg';
416
- anchorLeft = `-${anchorWidth / 2}px`;
417
- anchorTop =
418
- tHeight > height
419
- ? `calc(50% - ${anchorWidth / 2}px)`
420
- : `calc(${thHeight + (tTop - top)}px)`;
421
- break;
422
- case 'bottom':
423
- case 'bl':
424
- case 'br':
425
- deg = '180deg';
426
- anchorTop = '-0.5rem';
427
- anchorLeft = thWidth > width ? '50%' : `calc(100% - ${thWidth}px)`;
470
+ anchorLeft = '0';
471
+ anchorTop = `${clampedTopPx}px`;
428
472
  break;
429
473
  }
430
474
  return { '--action-angle': deg, '--action-left': anchorLeft, '--action-top': anchorTop };
431
475
  }
432
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverArrow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
433
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0", type: NgbPopoverArrow, isStandalone: true, selector: "[ngbPopoverArrow]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "styles()" } }, ngImport: i0, template: `
476
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverArrow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
477
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: NgbPopoverArrow, isStandalone: true, selector: "[ngbPopoverArrow]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "styles()" } }, ngImport: i0, template: `
434
478
  <ng-content />
435
479
  @if (anchor()) {
436
480
  <style>
@@ -451,16 +495,19 @@ class NgbPopoverArrow {
451
495
  border-right: 0.45rem solid transparent;
452
496
  top: var(--action-top);
453
497
  left: var(--action-left);
454
- transform: translateX(-50%) rotate(var(--action-angle, 180deg));
498
+ /* The tip of the triangle is at center-top (50% 0) */
499
+ /* We rotate around the tip so it stays at the target position */
500
+ transform-origin: 50% 0;
501
+ transform: translate(-50%, 0) rotate(var(--action-angle, 180deg));
455
502
  /* Add shadow to match the container shadow */
456
503
  /* filter: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));
457
504
  z-index: -1; */
458
505
  }
459
506
  </style>
460
507
  }
461
- `, isInline: true, styles: [":host{--action-angle: 180deg;--action-left: 50%;--action-top: -1rem;--action-color: var(--color-background)}:host:before{content:\"\";position:absolute;width:0;height:0;border-style:solid;border-top:.5rem solid var(--action-color);border-left:.45rem solid transparent;border-right:.45rem solid transparent;top:var(--action-top);left:var(--action-left);transform:translate(-50%) rotate(var(--action-angle, 180deg))}\n"] }); }
508
+ `, isInline: true, styles: [":host{--action-angle: 180deg;--action-left: 50%;--action-top: -1rem;--action-color: var(--color-background)}:host:before{content:\"\";position:absolute;width:0;height:0;border-style:solid;border-top:.5rem solid var(--action-color);border-left:.45rem solid transparent;border-right:.45rem solid transparent;top:var(--action-top);left:var(--action-left);transform-origin:50% 0;transform:translate(-50%) rotate(var(--action-angle, 180deg))}\n"] }); }
462
509
  }
463
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverArrow, decorators: [{
510
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverArrow, decorators: [{
464
511
  type: Component,
465
512
  args: [{
466
513
  selector: '[ngbPopoverArrow]',
@@ -485,7 +532,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
485
532
  border-right: 0.45rem solid transparent;
486
533
  top: var(--action-top);
487
534
  left: var(--action-left);
488
- transform: translateX(-50%) rotate(var(--action-angle, 180deg));
535
+ /* The tip of the triangle is at center-top (50% 0) */
536
+ /* We rotate around the tip so it stays at the target position */
537
+ transform-origin: 50% 0;
538
+ transform: translate(-50%, 0) rotate(var(--action-angle, 180deg));
489
539
  /* Add shadow to match the container shadow */
490
540
  /* filter: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));
491
541
  z-index: -1; */
@@ -497,18 +547,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
497
547
  '[style]': 'styles()',
498
548
  },
499
549
  }]
500
- }] });
550
+ }], propDecorators: { anchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchor", required: false }] }] } });
501
551
 
502
552
  class NgbPopoverBackdrop {
503
553
  constructor() {
504
554
  this.popover = inject(NgbPopover);
505
555
  this.focusTrap = inject(FocusTrap);
506
- this.focusTrap._focusTrap = linkedSignal(() => this.popover.options().focusTrap ?? true);
556
+ this.focusTrap._focusTrap = linkedSignal(() => this.popover.options().focusTrap ?? true, ...(ngDevMode ? [{ debugName: "_focusTrap" }] : []));
507
557
  }
508
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverBackdrop, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
509
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgbPopoverBackdrop, isStandalone: true, selector: "[ngbPopoverBackdrop]", host: { listeners: { "click": "!popover.options().disableClose && popover.close()" }, properties: { "style.clipPath": "popover.options().clipPath?.()", "class": "popover.options().backdropClassName" } }, hostDirectives: [{ directive: i1.FocusTrap }], ngImport: i0 }); }
558
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverBackdrop, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
559
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgbPopoverBackdrop, isStandalone: true, selector: "[ngbPopoverBackdrop]", host: { listeners: { "click": "!popover.options().disableClose && popover.close()" }, properties: { "style.clipPath": "popover.options().clipPath?.()", "class": "popover.options().backdropClassName" } }, hostDirectives: [{ directive: i1.FocusTrap }], ngImport: i0 }); }
510
560
  }
511
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverBackdrop, decorators: [{
561
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverBackdrop, decorators: [{
512
562
  type: Directive,
513
563
  args: [{
514
564
  selector: '[ngbPopoverBackdrop]',
@@ -524,10 +574,10 @@ class NgbPopoverMain {
524
574
  constructor() {
525
575
  this.popover = inject(NgbPopover);
526
576
  }
527
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverMain, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
528
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgbPopoverMain, isStandalone: true, selector: "[ngbPopoverMain]", host: { properties: { "class": "popover.options().className" } }, ngImport: i0 }); }
577
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverMain, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
578
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgbPopoverMain, isStandalone: true, selector: "[ngbPopoverMain]", host: { properties: { "class": "popover.options().className" } }, ngImport: i0 }); }
529
579
  }
530
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverMain, decorators: [{
580
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverMain, decorators: [{
531
581
  type: Directive,
532
582
  args: [{
533
583
  selector: '[ngbPopoverMain]',
@@ -539,30 +589,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
539
589
  class NgbPopover extends BaseDialog {
540
590
  constructor() {
541
591
  super();
592
+ this.contentContainer = viewChild('contentContainer', { ...(ngDevMode ? { debugName: "contentContainer" } : {}), read: ViewContainerRef });
542
593
  this.arrowTracker = inject(POPOVER_ARROW_TRACKER);
543
594
  this.disposals = disposals();
544
- this.myDialog = viewChild.required('myDialog', { read: ViewContainerRef });
595
+ // These are set by subclasses via viewChild
545
596
  this.container = viewChild.required(NgbPopoverMain, {
546
597
  read: ElementRef,
547
598
  });
548
- this.backdropElement = viewChild(NgbPopoverBackdrop, ...(ngDevMode ? [{ debugName: "backdropElement", read: ElementRef }] : [{ read: ElementRef }]));
599
+ this.backdropElement = viewChild(NgbPopoverBackdrop, { ...(ngDevMode ? { debugName: "backdropElement" } : {}), read: ElementRef });
549
600
  this.options = signal({}, ...(ngDevMode ? [{ debugName: "options" }] : []));
550
601
  this.lastPosition = 'top';
551
602
  this.scrolled = signal(0, ...(ngDevMode ? [{ debugName: "scrolled" }] : []));
552
- this.events = this._afterViewSource.pipe(switchMap(e => {
553
- const el = this.container().nativeElement;
554
- const mouseenter = fromEvent(el, 'mouseenter');
555
- const mouseleave = fromEvent(el, 'mouseleave');
556
- const event = mouseenter.pipe(switchMap(e => mouseleave.pipe(map(x => ({ type: 'mouseleave', value: x })), startWith({ type: 'mouseenter', value: e }))));
557
- return e ? event : EMPTY;
558
- }));
603
+ this.events = new Observable(subscriber => {
604
+ // Defer until container is available
605
+ queueMicrotask(() => {
606
+ const el = this.container().nativeElement;
607
+ const mouseenter = fromEvent(el, 'mouseenter');
608
+ const mouseleave = fromEvent(el, 'mouseleave');
609
+ const event = mouseenter.pipe(switchMap(e => mouseleave.pipe(map(x => ({ type: 'mouseleave', value: x })), startWith({ type: 'mouseenter', value: e }))));
610
+ event.subscribe(subscriber);
611
+ });
612
+ });
559
613
  this.scheduleUpdateDimension = () => {
560
614
  this.disposals.afterNextRender(() => this.updateDimension());
561
615
  };
562
- const dialog = effect(() => {
563
- this._afterViewSource.next(this.myDialog());
564
- dialog.destroy();
565
- }, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
566
616
  effect(cleanup => {
567
617
  const el = this.container().nativeElement;
568
618
  const options = this.options();
@@ -689,37 +739,18 @@ class NgbPopover extends BaseDialog {
689
739
  // console.log('setOptions', options);
690
740
  this.options.set(options);
691
741
  }
692
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopover, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
693
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.2.0", type: NgbPopover, isStandalone: true, selector: "ngb-popover", host: { listeners: { "@parentAnimation.done": "animationDone()" }, properties: { "@parentAnimation": "" } }, viewQueries: [{ propertyName: "myDialog", first: true, predicate: ["myDialog"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: "container", first: true, predicate: NgbPopoverMain, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "backdropElement", first: true, predicate: NgbPopoverBackdrop, descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, animations: [
694
- createHostAnimation(['@slideInOutAnimation']),
695
- trigger('slideInOutAnimation', [
696
- state('1', style({ transform: 'none', opacity: 1 })),
697
- state('void', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),
698
- state('0', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),
699
- transition('* => *', animate('100ms ease-out')),
700
- ]),
701
- ] }); }
742
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopover, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
743
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.0", type: NgbPopover, isStandalone: true, selector: "ngb-popover", viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: "container", first: true, predicate: NgbPopoverMain, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "backdropElement", first: true, predicate: NgbPopoverBackdrop, descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
702
744
  }
703
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopover, decorators: [{
745
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopover, decorators: [{
704
746
  type: Component,
705
747
  args: [{
706
748
  selector: 'ngb-popover',
707
749
  template: '',
708
- host: {
709
- '[@parentAnimation]': '',
710
- '(@parentAnimation.done)': 'animationDone()',
711
- },
712
- animations: [
713
- createHostAnimation(['@slideInOutAnimation']),
714
- trigger('slideInOutAnimation', [
715
- state('1', style({ transform: 'none', opacity: 1 })),
716
- state('void', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),
717
- state('0', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),
718
- transition('* => *', animate('100ms ease-out')),
719
- ]),
720
- ],
721
750
  }]
722
- }], ctorParameters: () => [] });
751
+ }], ctorParameters: () => [], propDecorators: { contentContainer: [{ type: i0.ViewChild, args: ['contentContainer', { ...{ read: ViewContainerRef }, isSignal: true }] }], container: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NgbPopoverMain), { ...{
752
+ read: ElementRef,
753
+ }, isSignal: true }] }], backdropElement: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NgbPopoverBackdrop), { ...{ read: ElementRef }, isSignal: true }] }] } });
723
754
  function scrollToElement(target) {
724
755
  return new Promise(resolve => {
725
756
  let lastPos;
@@ -757,13 +788,13 @@ class NgbPopoverClose extends NgbPortalClose {
757
788
  close() {
758
789
  super.close(this.ngbPopoverClose());
759
790
  }
760
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverClose, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
761
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbPopoverClose, isStandalone: true, selector: "[ngbPopoverClose]", inputs: { ngbPopoverClose: { classPropertyName: "ngbPopoverClose", publicName: "ngbPopoverClose", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
791
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverClose, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
792
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbPopoverClose, isStandalone: true, selector: "[ngbPopoverClose]", inputs: { ngbPopoverClose: { classPropertyName: "ngbPopoverClose", publicName: "ngbPopoverClose", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
762
793
  }
763
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverClose, decorators: [{
794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverClose, decorators: [{
764
795
  type: Directive,
765
796
  args: [{ selector: '[ngbPopoverClose]' }]
766
- }] });
797
+ }], propDecorators: { ngbPopoverClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbPopoverClose", required: false }] }] } });
767
798
  function aliasPopover(popover) {
768
799
  return [{ provide: NgbPopover, useExisting: popover }, providePopoverArrowTracker()];
769
800
  }
@@ -805,10 +836,10 @@ class NgbPopoverTrigger {
805
836
  close() {
806
837
  this.closeFn();
807
838
  }
808
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
809
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbPopoverTrigger, isStandalone: true, selector: "[ngbPopoverTrigger]", inputs: { ngbPopoverTrigger: { classPropertyName: "ngbPopoverTrigger", publicName: "ngbPopoverTrigger", isSignal: true, isRequired: true, transformFunction: null }, ngbPopoverTriggerData: { classPropertyName: "ngbPopoverTriggerData", publicName: "ngbPopoverTriggerData", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "open()" } }, exportAs: ["ngbPopoverTrigger"], ngImport: i0 }); }
839
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
840
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbPopoverTrigger, isStandalone: true, selector: "[ngbPopoverTrigger]", inputs: { ngbPopoverTrigger: { classPropertyName: "ngbPopoverTrigger", publicName: "ngbPopoverTrigger", isSignal: true, isRequired: true, transformFunction: null }, ngbPopoverTriggerData: { classPropertyName: "ngbPopoverTriggerData", publicName: "ngbPopoverTriggerData", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "open()" } }, exportAs: ["ngbPopoverTrigger"], ngImport: i0 }); }
810
841
  }
811
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbPopoverTrigger, decorators: [{
842
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbPopoverTrigger, decorators: [{
812
843
  type: Directive,
813
844
  args: [{
814
845
  selector: '[ngbPopoverTrigger]',
@@ -817,7 +848,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
817
848
  '(click)': 'open()',
818
849
  },
819
850
  }]
820
- }] });
851
+ }], propDecorators: { ngbPopoverTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbPopoverTrigger", required: true }] }], ngbPopoverTriggerData: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbPopoverTriggerData", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
821
852
 
822
853
  /*
823
854
  * Public API Surface of popover
@@ -827,5 +858,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
827
858
  * Generated bundle index. Do not edit.
828
859
  */
829
860
 
830
- export { NgbPopover, NgbPopoverArrow, NgbPopoverBackdrop, NgbPopoverClose, NgbPopoverMain, NgbPopoverTrigger, POPOVER_ARROW_TRACKER, PopoverArrowTracker, PopoverOptions, aliasPopover, basePopoverPortal, ngbPopoverPortal, providePopoverArrowTracker, registerNgbPopover, tooltipPosition };
861
+ export { NgbPopover, NgbPopoverArrow, NgbPopoverArrowHost, NgbPopoverBackdrop, NgbPopoverClose, NgbPopoverMain, NgbPopoverTrigger, POPOVER_ARROW_TRACKER, PopoverArrowTracker, PopoverOptions, aliasPopover, basePopoverPortal, ngbPopoverPortal, providePopoverArrowTracker, registerNgbPopover, tooltipPosition };
831
862
  //# sourceMappingURL=ngbase-adk-popover.mjs.map