@ngbase/adk 0.1.1 → 0.1.2

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 (152) hide show
  1. package/accordion/accordion-item.d.ts +4 -0
  2. package/accordion/public-api.d.ts +1 -1
  3. package/autocomplete/autocomplete.d.ts +2 -2
  4. package/avatar/avatar.d.ts +1 -1
  5. package/breadcrumb/breadcrumb.d.ts +2 -3
  6. package/breadcrumb/public-api.d.ts +1 -1
  7. package/carousel/carousel.d.ts +1 -1
  8. package/chip/chip.d.ts +2 -2
  9. package/datepicker/calendar.d.ts +3 -3
  10. package/datepicker/datepicker.d.ts +2 -2
  11. package/datepicker/time.d.ts +2 -2
  12. package/dialog/dialog.d.ts +1 -1
  13. package/fesm2022/ngbase-adk-accordion.mjs +4 -1
  14. package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
  15. package/fesm2022/ngbase-adk-autocomplete.mjs +7 -36
  16. package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
  17. package/fesm2022/ngbase-adk-avatar.mjs +2 -2
  18. package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
  19. package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
  20. package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
  21. package/fesm2022/ngbase-adk-carousel.mjs +2 -2
  22. package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
  23. package/fesm2022/ngbase-adk-chip.mjs +4 -2
  24. package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
  25. package/fesm2022/ngbase-adk-datepicker.mjs +114 -328
  26. package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
  27. package/fesm2022/ngbase-adk-dialog.mjs +12 -13
  28. package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
  29. package/fesm2022/ngbase-adk-form-field.mjs +2 -156
  30. package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
  31. package/fesm2022/ngbase-adk-menu.mjs +15 -30
  32. package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
  33. package/fesm2022/ngbase-adk-otp.mjs +164 -0
  34. package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
  35. package/fesm2022/ngbase-adk-pagination.mjs +8 -65
  36. package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
  37. package/fesm2022/ngbase-adk-popover.mjs +423 -548
  38. package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
  39. package/fesm2022/ngbase-adk-portal.mjs +0 -1
  40. package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
  41. package/fesm2022/ngbase-adk-radio.mjs +2 -16
  42. package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
  43. package/fesm2022/ngbase-adk-resizable.mjs +10 -43
  44. package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
  45. package/fesm2022/ngbase-adk-select.mjs +67 -173
  46. package/fesm2022/ngbase-adk-select.mjs.map +1 -1
  47. package/fesm2022/ngbase-adk-sheet.mjs +95 -0
  48. package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
  49. package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
  50. package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
  51. package/fesm2022/ngbase-adk-slider.mjs +9 -23
  52. package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
  53. package/fesm2022/ngbase-adk-sonner.mjs +13 -63
  54. package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
  55. package/fesm2022/ngbase-adk-stepper.mjs +16 -114
  56. package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
  57. package/fesm2022/ngbase-adk-switch.mjs +2 -2
  58. package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
  59. package/fesm2022/ngbase-adk-table.mjs +10 -30
  60. package/fesm2022/ngbase-adk-table.mjs.map +1 -1
  61. package/fesm2022/ngbase-adk-tabs.mjs +14 -94
  62. package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
  63. package/fesm2022/ngbase-adk-tooltip.mjs +49 -39
  64. package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
  65. package/fesm2022/ngbase-adk-tour.mjs +1 -1
  66. package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
  67. package/fesm2022/ngbase-adk-tree.mjs +11 -43
  68. package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
  69. package/form-field/public-api.d.ts +0 -1
  70. package/menu/menu-trigger.d.ts +2 -2
  71. package/menu/menu.d.ts +6 -6
  72. package/otp/index.d.ts +5 -0
  73. package/{form-field → otp}/otp.d.ts +1 -1
  74. package/otp/public-api.d.ts +1 -0
  75. package/package.json +25 -17
  76. package/pagination/pagination.d.ts +5 -1
  77. package/popover/popover-arrow.ng.d.ts +34 -0
  78. package/popover/popover.d.ts +12 -3
  79. package/popover/popover.service.d.ts +5 -4
  80. package/popover/public-api.d.ts +1 -0
  81. package/popover/utils.d.ts +32 -48
  82. package/portal/dialog-ref.d.ts +0 -1
  83. package/resizable/resizable-group.d.ts +2 -2
  84. package/resizable/resizable.d.ts +2 -2
  85. package/schematics/components/files/accordion/accordion.ts.template +6 -8
  86. package/schematics/components/files/autocomplete/autocomplete.ts.template +2 -6
  87. package/schematics/components/files/avatar/avatar.ts.template +2 -2
  88. package/schematics/components/files/breadcrumb/breadcrumb.ts.template +5 -5
  89. package/schematics/components/files/carousel/carousel.ts.template +2 -2
  90. package/schematics/components/files/chip/chip.ts.template +2 -2
  91. package/schematics/components/files/datepicker/calendar.ts.template +6 -6
  92. package/schematics/components/files/datepicker/datepicker.ts.template +33 -3
  93. package/schematics/components/files/datepicker/index.ts.template +0 -1
  94. package/schematics/components/files/datepicker/time.ts.template +12 -4
  95. package/schematics/components/files/dialog/dialog.ts.template +8 -8
  96. package/schematics/components/files/form-field/{input.ts.template → form-field.ts.template} +13 -2
  97. package/schematics/components/files/form-field/index.ts.template +1 -2
  98. package/schematics/components/files/form-field/input-style.directive.ts.template +1 -1
  99. package/schematics/components/files/menu/menu.ts.template +3 -3
  100. package/schematics/components/files/otp/index.ts.template +5 -0
  101. package/schematics/components/files/{form-field → otp}/otp.ts.template +3 -3
  102. package/schematics/components/files/pagination/pagination.ts.template +2 -2
  103. package/schematics/components/files/popover/popover.ts.template +7 -30
  104. package/schematics/components/files/radio/radio.ts.template +3 -8
  105. package/schematics/components/files/resizable/resizable.ts.template +7 -7
  106. package/schematics/components/files/select/option.ts.template +1 -0
  107. package/schematics/components/files/select/select.ts.template +8 -8
  108. package/schematics/components/files/sheet/sheet.ts.template +11 -76
  109. package/schematics/components/files/sidenav/sidenav.ts.template +3 -3
  110. package/schematics/components/files/slider/slider.ts.template +3 -10
  111. package/schematics/components/files/sonner/sonner.ts.template +3 -2
  112. package/schematics/components/files/stepper/stepper.ts.template +4 -4
  113. package/schematics/components/files/switch/switch.ts.template +1 -1
  114. package/schematics/components/files/tabs/tab.ts.template +11 -8
  115. package/schematics/components/files/theme/theme.service.ts.template +0 -11
  116. package/schematics/components/files/tooltip/tooltip.ts.template +8 -3
  117. package/schematics/components/files/tour/index.ts.template +0 -2
  118. package/schematics/components/files/tour/tour.ts.template +13 -2
  119. package/schematics/components/files/tree/tree.ts.template +3 -3
  120. package/schematics/components/schema.json +8 -0
  121. package/select/option-group.d.ts +3 -3
  122. package/select/select.d.ts +2 -2
  123. package/sheet/index.d.ts +5 -0
  124. package/sheet/public-api.d.ts +2 -0
  125. package/sheet/sheet.d.ts +26 -0
  126. package/sheet/sheet.service.d.ts +13 -0
  127. package/sidenav/public-api.d.ts +1 -1
  128. package/sidenav/sidenav.d.ts +1 -1
  129. package/slider/public-api.d.ts +1 -1
  130. package/slider/slider.d.ts +5 -5
  131. package/sonner/sonner.d.ts +2 -1
  132. package/stepper/animation.d.ts +1 -1
  133. package/stepper/step.d.ts +1 -1
  134. package/stepper/stepper.d.ts +2 -2
  135. package/switch/switch.d.ts +1 -1
  136. package/table/body-row.d.ts +3 -3
  137. package/table/head-row.d.ts +3 -3
  138. package/table/table.d.ts +1 -1
  139. package/tabs/tab-group.d.ts +4 -4
  140. package/tabs/tab.d.ts +2 -2
  141. package/tooltip/public-api.d.ts +1 -1
  142. package/tooltip/tooltip.d.ts +5 -1
  143. package/tooltip/tooltip.directive.d.ts +1 -1
  144. package/tooltip/tooltip.service.d.ts +4 -2
  145. package/tour/tour.service.d.ts +3 -4
  146. package/tree/public-api.d.ts +2 -2
  147. package/tree/tree-node.d.ts +2 -2
  148. package/tree/tree.d.ts +2 -2
  149. package/schematics/components/files/datepicker/datepicker-trigger.ts.template +0 -27
  150. package/schematics/components/files/theme/theme.component.ts.template +0 -165
  151. package/schematics/components/files/tour/tour-step.ts.template +0 -8
  152. package/schematics/components/files/tour/tour.service.ts.template +0 -7
@@ -1,7 +1,7 @@
1
- import { NgTemplateOutlet } from '@angular/common';
2
1
  import * as i0 from '@angular/core';
3
- import { Directive, contentChild, TemplateRef, input, booleanAttribute, signal, computed, Component, ChangeDetectionStrategy, inject, viewChild, ElementRef, viewChildren, contentChildren, model, output, effect, afterNextRender } from '@angular/core';
2
+ import { Directive, contentChild, TemplateRef, input, booleanAttribute, signal, computed, inject, Component, ChangeDetectionStrategy, viewChild, ElementRef, viewChildren, contentChildren, model, output, effect, afterNextRender } from '@angular/core';
4
3
  import { uniqueId } from '@ngbase/adk/utils';
4
+ import { NgTemplateOutlet } from '@angular/common';
5
5
  import * as i1 from '@ngbase/adk/a11y';
6
6
  import { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';
7
7
 
@@ -47,29 +47,14 @@ class NgbTab {
47
47
  });
48
48
  this.lazyTemplate = computed(() => this.active() && this.lazy());
49
49
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTab, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgbTab, isStandalone: true, selector: "ngb-tab", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "tabpanel" }, properties: { "tabindex": "active() ? 0 : -1", "attr.aria-hidden": "!active()", "attr.aria-labelledby": "id" } }, queries: [{ propertyName: "header", first: true, predicate: NgbTabHeader, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "lazy", first: true, predicate: NgbTabLazy, descendants: true, read: TemplateRef, isSignal: true }], exportAs: ["ngbTab"], ngImport: i0, template: `
52
- @if (lazyTemplate(); as template) {
53
- <ng-container *ngTemplateOutlet="template" />
54
- } @else if (activeMode()) {
55
- <ng-content />
56
- }
57
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTab, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbTab, isStandalone: true, selector: "ngb-tab", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "tabpanel" }, properties: { "tabindex": "active() ? 0 : -1", "attr.aria-hidden": "!active()", "attr.aria-labelledby": "id" } }, queries: [{ propertyName: "header", first: true, predicate: NgbTabHeader, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "lazy", first: true, predicate: NgbTabLazy, descendants: true, read: TemplateRef, isSignal: true }], exportAs: ["ngbTab"], ngImport: i0 }); }
58
52
  }
59
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTab, decorators: [{
60
- type: Component,
54
+ type: Directive,
61
55
  args: [{
62
56
  selector: 'ngb-tab',
63
57
  exportAs: 'ngbTab',
64
- changeDetection: ChangeDetectionStrategy.OnPush,
65
- imports: [NgTemplateOutlet],
66
- template: `
67
- @if (lazyTemplate(); as template) {
68
- <ng-container *ngTemplateOutlet="template" />
69
- } @else if (activeMode()) {
70
- <ng-content />
71
- }
72
- `,
73
58
  host: {
74
59
  role: 'tabpanel',
75
60
  '[tabindex]': 'active() ? 0 : -1',
@@ -78,11 +63,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
78
63
  },
79
64
  }]
80
65
  }] });
81
- function provideTab(tab) {
82
- return {
83
- provide: NgbTab,
84
- useExisting: tab,
85
- };
66
+ function aliasTab(tab) {
67
+ return { provide: NgbTab, useExisting: tab };
86
68
  }
87
69
 
88
70
  class TabButtonsGroup {
@@ -98,7 +80,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
98
80
  type: Directive,
99
81
  args: [{
100
82
  selector: '[ngbTabButtonsGroup]',
101
- hostDirectives: [{ directive: AccessibleGroup }],
83
+ hostDirectives: [AccessibleGroup],
102
84
  host: {
103
85
  role: 'tablist',
104
86
  style: 'scrollbar-width: none',
@@ -128,7 +110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
128
110
  args: [{
129
111
  selector: 'button[ngbTabButton]',
130
112
  changeDetection: ChangeDetectionStrategy.OnPush,
131
- hostDirectives: [{ directive: AccessibleItem }],
113
+ hostDirectives: [AccessibleItem],
132
114
  imports: [NgTemplateOutlet],
133
115
  template: `
134
116
  @if (ngbTabButton().header(); as template) {
@@ -295,79 +277,17 @@ class NgbTabs {
295
277
  tabList.scrollTo({ left, behavior: 'smooth' });
296
278
  }
297
279
  }
298
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTabs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0", type: NgbTabs, isStandalone: true, selector: "ngb-tabs", inputs: { selectedIndex: { classPropertyName: "selectedIndex", publicName: "selectedIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIndex: "selectedIndexChange", selectedTabChange: "selectedTabChange" }, host: { classAttribute: "bg-foreground flex flex-col" }, queries: [{ propertyName: "tabs", predicate: NgbTab, isSignal: true }], viewQueries: [{ propertyName: "tabList", first: true, predicate: TabButtonsGroup, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "tabListContainer", first: true, predicate: ["tabListContainer"], descendants: true, isSignal: true }, { propertyName: "tabButtons", predicate: TabButton, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "scrollButtons", predicate: TabScroll, descendants: true, read: ElementRef, isSignal: true }], exportAs: ["ngbTabs"], ngImport: i0, template: `<div class="flex items-center border-b">
300
- <ng-content select=".tab-start-header-content" />
301
- <div class="relative flex overflow-hidden">
302
- <button
303
- ngbTabScroll="left"
304
- class="absolute left-0 z-10 h-full place-items-center bg-foreground px-2"
305
- >
306
- <
307
- </button>
308
- <nav ngbTabButtonsGroup class="overflow-auto">
309
- <div #tabListContainer class="flex h-full w-max">
310
- @for (tab of tabs(); track tab.id) {
311
- <button
312
- [ngbTabButton]="tab"
313
- class="whitespace-nowrap border-b-2 border-transparent aria-[disabled=true]:cursor-not-allowed aria-[selected=true]:!border-primary aria-[disabled=true]:text-muted aria-[selected=true]:!text-primary aria-[disabled=true]:opacity-50"
314
- ></button>
315
- }
316
- </div>
317
- </nav>
318
- <button
319
- ngbTabScroll="right"
320
- class="absolute right-0 z-10 h-full place-items-center bg-foreground px-2"
321
- >
322
- >
323
- </button>
324
- </div>
325
- <ng-content select=".tab-header-content" />
326
- </div>
327
- <ng-content /> `, isInline: true, dependencies: [{ kind: "component", type: TabButton, selector: "button[ngbTabButton]", inputs: ["ngbTabButton"] }, { kind: "directive", type: TabButtonsGroup, selector: "[ngbTabButtonsGroup]" }, { kind: "directive", type: TabScroll, selector: "button[ngbTabScroll]", inputs: ["ngbTabScroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
280
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTabs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
281
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbTabs, isStandalone: true, selector: "ngb-tabs", inputs: { selectedIndex: { classPropertyName: "selectedIndex", publicName: "selectedIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIndex: "selectedIndexChange", selectedTabChange: "selectedTabChange" }, queries: [{ propertyName: "tabs", predicate: NgbTab, isSignal: true }], viewQueries: [{ propertyName: "tabList", first: true, predicate: TabButtonsGroup, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "tabListContainer", first: true, predicate: ["tabListContainer"], descendants: true, isSignal: true }, { propertyName: "tabButtons", predicate: TabButton, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "scrollButtons", predicate: TabScroll, descendants: true, read: ElementRef, isSignal: true }], exportAs: ["ngbTabs"], ngImport: i0 }); }
328
282
  }
329
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTabs, decorators: [{
330
- type: Component,
284
+ type: Directive,
331
285
  args: [{
332
286
  selector: 'ngb-tabs',
333
287
  exportAs: 'ngbTabs',
334
- imports: [TabButton, TabButtonsGroup, TabScroll],
335
- changeDetection: ChangeDetectionStrategy.OnPush,
336
- template: `<div class="flex items-center border-b">
337
- <ng-content select=".tab-start-header-content" />
338
- <div class="relative flex overflow-hidden">
339
- <button
340
- ngbTabScroll="left"
341
- class="absolute left-0 z-10 h-full place-items-center bg-foreground px-2"
342
- >
343
- <
344
- </button>
345
- <nav ngbTabButtonsGroup class="overflow-auto">
346
- <div #tabListContainer class="flex h-full w-max">
347
- @for (tab of tabs(); track tab.id) {
348
- <button
349
- [ngbTabButton]="tab"
350
- class="whitespace-nowrap border-b-2 border-transparent aria-[disabled=true]:cursor-not-allowed aria-[selected=true]:!border-primary aria-[disabled=true]:text-muted aria-[selected=true]:!text-primary aria-[disabled=true]:opacity-50"
351
- ></button>
352
- }
353
- </div>
354
- </nav>
355
- <button
356
- ngbTabScroll="right"
357
- class="absolute right-0 z-10 h-full place-items-center bg-foreground px-2"
358
- >
359
- >
360
- </button>
361
- </div>
362
- <ng-content select=".tab-header-content" />
363
- </div>
364
- <ng-content /> `,
365
- host: {
366
- class: 'bg-foreground flex flex-col',
367
- },
368
288
  }]
369
289
  }], ctorParameters: () => [] });
370
- function provideTabs(tab) {
290
+ function aliasTabs(tab) {
371
291
  return {
372
292
  provide: NgbTabs,
373
293
  useExisting: tab,
@@ -382,5 +302,5 @@ function provideTabs(tab) {
382
302
  * Generated bundle index. Do not edit.
383
303
  */
384
304
 
385
- export { NgbTab, NgbTabHeader, NgbTabLazy, NgbTabs, TabButton, TabButtonsGroup, TabScroll, provideTab, provideTabs };
305
+ export { NgbTab, NgbTabHeader, NgbTabLazy, NgbTabs, TabButton, TabButtonsGroup, TabScroll, aliasTab, aliasTabs };
386
306
  //# sourceMappingURL=ngbase-adk-tabs.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-tabs.mjs","sources":["../../../projects/adk/tabs/tab.ts","../../../projects/adk/tabs/tab-group.ts","../../../projects/adk/tabs/public-api.ts","../../../projects/adk/tabs/ngbase-adk-tabs.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n input,\n signal,\n} from '@angular/core';\nimport { uniqueId } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbTabHeader]',\n})\nexport class NgbTabHeader {}\n\n@Directive({\n selector: '[ngbTabLazy]',\n})\nexport class NgbTabLazy {}\n\n@Component({\n selector: 'ngb-tab',\n exportAs: 'ngbTab',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n template: `\n @if (lazyTemplate(); as template) {\n <ng-container *ngTemplateOutlet=\"template\" />\n } @else if (activeMode()) {\n <ng-content />\n }\n `,\n host: {\n role: 'tabpanel',\n '[tabindex]': 'active() ? 0 : -1',\n '[attr.aria-hidden]': '!active()',\n '[attr.aria-labelledby]': 'id',\n },\n})\nexport class NgbTab {\n // Dependencies\n readonly header = contentChild(NgbTabHeader, { read: TemplateRef });\n readonly lazy = contentChild(NgbTabLazy, { read: TemplateRef });\n\n // Inputs\n readonly label = input('Tab');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly mode = input<'hidden' | 'lazy'>();\n readonly value = input<string | number>();\n readonly id = uniqueId();\n readonly index = signal(0);\n readonly tabId = computed(() => this.value() ?? this.index());\n\n // State\n readonly active = signal(false);\n\n private activated = false;\n readonly activeMode = computed(() => {\n this.activated ||= this.active();\n return this.mode() ? this.activated : this.active();\n });\n readonly lazyTemplate = computed(() => this.active() && this.lazy());\n}\n\nexport function provideTab(tab: typeof NgbTab) {\n return {\n provide: NgbTab,\n useExisting: tab,\n };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbTab } from './tab';\n\nexport interface TabChangeEvent {\n tab: NgbTab;\n index: number;\n}\n\n@Directive({\n selector: '[ngbTabButtonsGroup]',\n hostDirectives: [{ directive: AccessibleGroup }],\n host: {\n role: 'tablist',\n style: 'scrollbar-width: none',\n },\n})\nexport class TabButtonsGroup {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleGroup = inject(AccessibleGroup);\n\n constructor() {\n this.accessibleGroup.ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Component({\n selector: 'button[ngbTabButton]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{ directive: AccessibleItem }],\n imports: [NgTemplateOutlet],\n template: `\n @if (ngbTabButton().header(); as template) {\n <ng-container *ngTemplateOutlet=\"template\" />\n } @else {\n {{ ngbTabButton().label() }}\n }\n `,\n host: {\n type: 'button',\n role: 'tab',\n '[attr.id]': 'ngbTabButton().id',\n '(click)': '!ngbTabButton().disabled() && tabGroup.setActive(ngbTabButton())',\n },\n})\nexport class TabButton {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleItem = inject(AccessibleItem);\n\n readonly ngbTabButton = input.required<NgbTab>();\n\n constructor() {\n this.accessibleItem._selected = computed(\n () => this.ngbTabButton().tabId() === this.tabGroup.selectedIndex(),\n );\n this.accessibleItem._disabled = computed(() => this.ngbTabButton().disabled());\n this.accessibleItem._ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Directive({\n selector: 'button[ngbTabScroll]',\n host: {\n type: 'button',\n tabindex: '-1',\n style: '{display: none}',\n '(click)': 'tabGroup.scroll(ngbTabScroll())',\n },\n})\nexport class TabScroll {\n readonly ngbTabScroll = input.required<'left' | 'right'>();\n readonly tabGroup = inject(NgbTabs);\n}\n\n@Component({\n selector: 'ngb-tabs',\n exportAs: 'ngbTabs',\n imports: [TabButton, TabButtonsGroup, TabScroll],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<div class=\"flex items-center border-b\">\n <ng-content select=\".tab-start-header-content\" />\n <div class=\"relative flex overflow-hidden\">\n <button\n ngbTabScroll=\"left\"\n class=\"absolute left-0 z-10 h-full place-items-center bg-foreground px-2\"\n >\n <\n </button>\n <nav ngbTabButtonsGroup class=\"overflow-auto\">\n <div #tabListContainer class=\"flex h-full w-max\">\n @for (tab of tabs(); track tab.id) {\n <button\n [ngbTabButton]=\"tab\"\n class=\"whitespace-nowrap border-b-2 border-transparent aria-[disabled=true]:cursor-not-allowed aria-[selected=true]:!border-primary aria-[disabled=true]:text-muted aria-[selected=true]:!text-primary aria-[disabled=true]:opacity-50\"\n ></button>\n }\n </div>\n </nav>\n <button\n ngbTabScroll=\"right\"\n class=\"absolute right-0 z-10 h-full place-items-center bg-foreground px-2\"\n >\n >\n </button>\n </div>\n <ng-content select=\".tab-header-content\" />\n </div>\n <ng-content /> `,\n host: {\n class: 'bg-foreground flex flex-col',\n },\n})\nexport class NgbTabs<T extends NgbTab = NgbTab> {\n readonly tabList = viewChild.required<TabButtonsGroup, ElementRef<HTMLElement>>(TabButtonsGroup, {\n read: ElementRef,\n });\n readonly tabListContainer = viewChild.required<ElementRef<HTMLElement>>('tabListContainer');\n readonly tabButtons = viewChildren<TabButton, ElementRef<HTMLElement>>(TabButton, {\n read: ElementRef,\n });\n // readonly leftScroll = viewChild<ElementRef<HTMLElement>>('leftScroll');\n // readonly rightScroll = viewChild<ElementRef<HTMLElement>>('rightScroll');\n readonly scrollButtons = viewChildren<TabScroll, ElementRef<HTMLElement>>(TabScroll, {\n read: ElementRef,\n });\n readonly tabs = contentChildren<T>(NgbTab as any);\n\n readonly selectedIndex = model<any>(0);\n readonly selectedTabChange = output<TabChangeEvent>();\n\n private selectedId?: number;\n private readonly tabMap = new Map<number, string>();\n readonly ayId = uniqueId();\n\n constructor() {\n effect(cleanup => {\n const tabList = this.tabList().nativeElement;\n const tabListContainer = this.tabListContainer().nativeElement;\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n this.updateScrollDisplay(tabList);\n });\n observer.observe(tabListContainer);\n cleanup(() => observer.disconnect());\n }\n });\n\n effect(() => {\n const tabs = this.tabs();\n tabs.forEach((tab, index) => tab.index.set(index));\n });\n\n effect(() => {\n const tabs = this.tabs();\n let activeIndex = this.selectedIndex();\n if (activeIndex === undefined || activeIndex === null) {\n this.setActive(tabs[0]);\n return;\n } else if (activeIndex >= tabs.length) {\n // if the index is out of bounds, set the last tab as active\n this.setActive(tabs[tabs.length - 1]);\n return;\n }\n\n if (this.selectedId !== undefined && activeIndex === this.selectedId) {\n const id = this.tabMap.get(this.selectedId);\n const tab = tabs.find(tab => tab.id === id);\n if (tab && activeIndex !== tab.index()) {\n this.setActive(tab);\n this.selectedId = undefined;\n return;\n }\n }\n\n // make sure the index is not a disabled tab\n // if (tabs[activeIndex]?.disabled()) {\n // const nextIndex = tabs.findIndex((tab, index) => !tab.disabled() && index > activeIndex);\n // activeIndex = nextIndex === -1 ? tabs.length - 1 : nextIndex;\n // this.selectedIndex.set(activeIndex);\n // this.selectedId = activeIndex;\n // return;\n // }\n\n // tabMap is used to keep track of the tab headers\n this.tabMap.clear();\n let activeTab: NgbTab;\n tabs.forEach((tab, index) => {\n tab.active.set(activeIndex === tab.tabId());\n if (activeIndex === tab.tabId()) {\n activeTab = tab;\n }\n this.tabMap.set(index, tab.id);\n });\n\n this.selectedId = activeIndex;\n\n // scroll to the active tab\n this.scrollToActive(activeTab!.index());\n });\n\n afterNextRender(() => {\n const el = this.tabList().nativeElement;\n this.updateScrollDisplay(el);\n el.addEventListener('scroll', () => {\n requestAnimationFrame(() => {\n this.updateScrollDisplay(el);\n });\n });\n });\n }\n\n private updateScrollDisplay(el: HTMLElement) {\n const leftScroll = this.scrollButtons()[0]!.nativeElement;\n const rightScroll = this.scrollButtons()[1]!.nativeElement;\n leftScroll.style.display = el.scrollLeft > 0 ? 'grid' : 'none';\n rightScroll.style.display = el.scrollLeft + el.clientWidth < el.scrollWidth ? 'grid' : 'none';\n }\n\n scroll(direction: 'left' | 'right') {\n const tabList = this.tabList()!.nativeElement;\n const el = this.tabList()!.nativeElement;\n const scroll = el.clientWidth * 0.8;\n const isLeft = direction === 'left';\n tabList.scrollTo({\n left: tabList.scrollLeft + (isLeft ? -scroll : scroll),\n behavior: 'smooth',\n });\n }\n\n setActive(tab: NgbTab) {\n // if the tab is not found, return\n if (!tab) return;\n\n this.selectedIndex.set(tab.tabId());\n this.scrollToActive(tab.index());\n this.selectedTabChange.emit({ tab, index: tab.index() });\n }\n\n private scrollToActive(index: number) {\n const tabList = this.tabList().nativeElement;\n const tabs = this.tabButtons().slice(0, index + 1);\n // ssr does not support getBoundingClientRect\n const totalWidth = tabs.reduce((a, c) => {\n const width = c.nativeElement.getBoundingClientRect?.().width || 0;\n return a + width;\n }, 0);\n\n const { width } = tabList.getBoundingClientRect?.() || { width: 0 };\n const scrollLeft = tabList.scrollLeft;\n const lastTab = tabs[tabs.length - 1]?.nativeElement;\n const lastTabWidth = lastTab?.getBoundingClientRect?.().width || 0;\n const withoutLastTabWidth = totalWidth - lastTabWidth;\n\n const isLeftSide = scrollLeft + width / 2 > withoutLastTabWidth + lastTabWidth / 2;\n const left = isLeftSide ? totalWidth - lastTabWidth : totalWidth - width;\n\n if (withoutLastTabWidth < scrollLeft || totalWidth > scrollLeft + width) {\n tabList.scrollTo({ left, behavior: 'smooth' });\n }\n }\n}\n\nexport function provideTabs<T extends NgbTab>(tab: typeof NgbTabs<T>) {\n return {\n provide: NgbTabs,\n useExisting: tab,\n };\n}\n","/*\n * Public API Surface of tab\n */\n\nexport * from './tab';\nexport * from './tab-group';\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":"ngbase-adk-tabs.mjs","sources":["../../../projects/adk/tabs/tab.ts","../../../projects/adk/tabs/tab-group.ts","../../../projects/adk/tabs/public-api.ts","../../../projects/adk/tabs/ngbase-adk-tabs.ts"],"sourcesContent":["import {\n Directive,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n input,\n signal,\n} from '@angular/core';\nimport { uniqueId } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbTabHeader]',\n})\nexport class NgbTabHeader {}\n\n@Directive({\n selector: '[ngbTabLazy]',\n})\nexport class NgbTabLazy {}\n\n@Directive({\n selector: 'ngb-tab',\n exportAs: 'ngbTab',\n host: {\n role: 'tabpanel',\n '[tabindex]': 'active() ? 0 : -1',\n '[attr.aria-hidden]': '!active()',\n '[attr.aria-labelledby]': 'id',\n },\n})\nexport class NgbTab {\n // Dependencies\n readonly header = contentChild(NgbTabHeader, { read: TemplateRef });\n readonly lazy = contentChild(NgbTabLazy, { read: TemplateRef });\n\n // Inputs\n readonly label = input('Tab');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly mode = input<'hidden' | 'lazy'>();\n readonly value = input<string | number>();\n readonly id = uniqueId();\n readonly index = signal(0);\n readonly tabId = computed(() => this.value() ?? this.index());\n\n // State\n readonly active = signal(false);\n\n private activated = false;\n readonly activeMode = computed(() => {\n this.activated ||= this.active();\n return this.mode() ? this.activated : this.active();\n });\n readonly lazyTemplate = computed(() => this.active() && this.lazy());\n}\n\nexport function aliasTab(tab: typeof NgbTab) {\n return { provide: NgbTab, useExisting: tab };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n afterNextRender,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbTab } from './tab';\n\nexport interface NgbTabChangeEvent {\n tab: NgbTab;\n index: number;\n}\n\n@Directive({\n selector: '[ngbTabButtonsGroup]',\n hostDirectives: [AccessibleGroup],\n host: {\n role: 'tablist',\n style: 'scrollbar-width: none',\n },\n})\nexport class TabButtonsGroup {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleGroup = inject(AccessibleGroup);\n\n constructor() {\n this.accessibleGroup.ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Component({\n selector: 'button[ngbTabButton]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [AccessibleItem],\n imports: [NgTemplateOutlet],\n template: `\n @if (ngbTabButton().header(); as template) {\n <ng-container *ngTemplateOutlet=\"template\" />\n } @else {\n {{ ngbTabButton().label() }}\n }\n `,\n host: {\n type: 'button',\n role: 'tab',\n '[attr.id]': 'ngbTabButton().id',\n '(click)': '!ngbTabButton().disabled() && tabGroup.setActive(ngbTabButton())',\n },\n})\nexport class TabButton {\n private readonly tabGroup = inject(NgbTabs);\n private readonly accessibleItem = inject(AccessibleItem);\n\n readonly ngbTabButton = input.required<NgbTab>();\n\n constructor() {\n this.accessibleItem._selected = computed(\n () => this.ngbTabButton().tabId() === this.tabGroup.selectedIndex(),\n );\n this.accessibleItem._disabled = computed(() => this.ngbTabButton().disabled());\n this.accessibleItem._ayId.set(this.tabGroup.ayId);\n }\n}\n\n@Directive({\n selector: 'button[ngbTabScroll]',\n host: {\n type: 'button',\n tabindex: '-1',\n style: '{display: none}',\n '(click)': 'tabGroup.scroll(ngbTabScroll())',\n },\n})\nexport class TabScroll {\n readonly ngbTabScroll = input.required<'left' | 'right'>();\n readonly tabGroup = inject(NgbTabs);\n}\n\n@Directive({\n selector: 'ngb-tabs',\n exportAs: 'ngbTabs',\n})\nexport class NgbTabs<T extends NgbTab = NgbTab> {\n readonly tabList = viewChild.required<TabButtonsGroup, ElementRef<HTMLElement>>(TabButtonsGroup, {\n read: ElementRef,\n });\n readonly tabListContainer = viewChild.required<ElementRef<HTMLElement>>('tabListContainer');\n readonly tabButtons = viewChildren<TabButton, ElementRef<HTMLElement>>(TabButton, {\n read: ElementRef,\n });\n // readonly leftScroll = viewChild<ElementRef<HTMLElement>>('leftScroll');\n // readonly rightScroll = viewChild<ElementRef<HTMLElement>>('rightScroll');\n readonly scrollButtons = viewChildren<TabScroll, ElementRef<HTMLElement>>(TabScroll, {\n read: ElementRef,\n });\n readonly tabs = contentChildren<T>(NgbTab as any);\n\n readonly selectedIndex = model<any>(0);\n readonly selectedTabChange = output<NgbTabChangeEvent>();\n\n private selectedId?: number;\n private readonly tabMap = new Map<number, string>();\n readonly ayId = uniqueId();\n\n constructor() {\n effect(cleanup => {\n const tabList = this.tabList().nativeElement;\n const tabListContainer = this.tabListContainer().nativeElement;\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n this.updateScrollDisplay(tabList);\n });\n observer.observe(tabListContainer);\n cleanup(() => observer.disconnect());\n }\n });\n\n effect(() => {\n const tabs = this.tabs();\n tabs.forEach((tab, index) => tab.index.set(index));\n });\n\n effect(() => {\n const tabs = this.tabs();\n let activeIndex = this.selectedIndex();\n if (activeIndex === undefined || activeIndex === null) {\n this.setActive(tabs[0]);\n return;\n } else if (activeIndex >= tabs.length) {\n // if the index is out of bounds, set the last tab as active\n this.setActive(tabs[tabs.length - 1]);\n return;\n }\n\n if (this.selectedId !== undefined && activeIndex === this.selectedId) {\n const id = this.tabMap.get(this.selectedId);\n const tab = tabs.find(tab => tab.id === id);\n if (tab && activeIndex !== tab.index()) {\n this.setActive(tab);\n this.selectedId = undefined;\n return;\n }\n }\n\n // make sure the index is not a disabled tab\n // if (tabs[activeIndex]?.disabled()) {\n // const nextIndex = tabs.findIndex((tab, index) => !tab.disabled() && index > activeIndex);\n // activeIndex = nextIndex === -1 ? tabs.length - 1 : nextIndex;\n // this.selectedIndex.set(activeIndex);\n // this.selectedId = activeIndex;\n // return;\n // }\n\n // tabMap is used to keep track of the tab headers\n this.tabMap.clear();\n let activeTab: NgbTab;\n tabs.forEach((tab, index) => {\n tab.active.set(activeIndex === tab.tabId());\n if (activeIndex === tab.tabId()) {\n activeTab = tab;\n }\n this.tabMap.set(index, tab.id);\n });\n\n this.selectedId = activeIndex;\n\n // scroll to the active tab\n this.scrollToActive(activeTab!.index());\n });\n\n afterNextRender(() => {\n const el = this.tabList().nativeElement;\n this.updateScrollDisplay(el);\n el.addEventListener('scroll', () => {\n requestAnimationFrame(() => {\n this.updateScrollDisplay(el);\n });\n });\n });\n }\n\n private updateScrollDisplay(el: HTMLElement) {\n const leftScroll = this.scrollButtons()[0]!.nativeElement;\n const rightScroll = this.scrollButtons()[1]!.nativeElement;\n leftScroll.style.display = el.scrollLeft > 0 ? 'grid' : 'none';\n rightScroll.style.display = el.scrollLeft + el.clientWidth < el.scrollWidth ? 'grid' : 'none';\n }\n\n scroll(direction: 'left' | 'right') {\n const tabList = this.tabList()!.nativeElement;\n const el = this.tabList()!.nativeElement;\n const scroll = el.clientWidth * 0.8;\n const isLeft = direction === 'left';\n tabList.scrollTo({\n left: tabList.scrollLeft + (isLeft ? -scroll : scroll),\n behavior: 'smooth',\n });\n }\n\n setActive(tab: NgbTab) {\n // if the tab is not found, return\n if (!tab) return;\n\n this.selectedIndex.set(tab.tabId());\n this.scrollToActive(tab.index());\n this.selectedTabChange.emit({ tab, index: tab.index() });\n }\n\n private scrollToActive(index: number) {\n const tabList = this.tabList().nativeElement;\n const tabs = this.tabButtons().slice(0, index + 1);\n // ssr does not support getBoundingClientRect\n const totalWidth = tabs.reduce((a, c) => {\n const width = c.nativeElement.getBoundingClientRect?.().width || 0;\n return a + width;\n }, 0);\n\n const { width } = tabList.getBoundingClientRect?.() || { width: 0 };\n const scrollLeft = tabList.scrollLeft;\n const lastTab = tabs[tabs.length - 1]?.nativeElement;\n const lastTabWidth = lastTab?.getBoundingClientRect?.().width || 0;\n const withoutLastTabWidth = totalWidth - lastTabWidth;\n\n const isLeftSide = scrollLeft + width / 2 > withoutLastTabWidth + lastTabWidth / 2;\n const left = isLeftSide ? totalWidth - lastTabWidth : totalWidth - width;\n\n if (withoutLastTabWidth < scrollLeft || totalWidth > scrollLeft + width) {\n tabList.scrollTo({ left, behavior: 'smooth' });\n }\n }\n}\n\nexport function aliasTabs<T extends NgbTab>(tab: typeof NgbTabs<T>) {\n return {\n provide: NgbTabs,\n useExisting: tab,\n };\n}\n","/*\n * Public API Surface of tab\n */\n\nexport * from './tab';\nexport * from './tab-group';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,21 +1,32 @@
1
1
  import { trigger, state, style, transition, animate } from '@angular/animations';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, ElementRef, signal, afterRenderEffect, Component, ChangeDetectionStrategy, Injectable, InjectionToken, input, computed, untracked, Directive } from '@angular/core';
4
- import { tooltipPosition } from '@ngbase/adk/popover';
3
+ import { inject, ElementRef, signal, afterRenderEffect, Directive, Injectable, InjectionToken, input, computed, untracked } from '@angular/core';
4
+ import { POPOVER_ARROW_TRACKER, tooltipPosition, providePopoverArrowTracker } from '@ngbase/adk/popover';
5
5
  import { basePortal } from '@ngbase/adk/portal';
6
6
 
7
+ const tooltipAnimation = trigger('tooltipAnimation', [
8
+ state('1', style({ transform: 'none', opacity: 1 })),
9
+ state('void', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
10
+ state('0', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
11
+ transition('* => *', animate('150ms ease-out')),
12
+ ]);
7
13
  class NgbTooltipTemplate {
8
14
  constructor() {
9
15
  this.el = inject(ElementRef);
16
+ this.arrowTracker = inject(POPOVER_ARROW_TRACKER, { optional: true });
10
17
  this.content = signal('Tooltip');
18
+ this.target = signal(undefined);
11
19
  this.position = 'top';
12
20
  this.onRemoved = () => {
13
21
  this.hide();
14
22
  };
15
23
  afterRenderEffect(() => {
16
24
  const _ = this.content();
25
+ const target = this.target();
17
26
  // we need for the content to be set before setting the position
18
- this.setPosition(this.target);
27
+ if (target) {
28
+ this.setPosition(target);
29
+ }
19
30
  });
20
31
  }
21
32
  update(content, target, position, hide) {
@@ -28,13 +39,14 @@ class NgbTooltipTemplate {
28
39
  }
29
40
  setTarget(target) {
30
41
  this.ngOnDestroy();
31
- this.target = target;
42
+ this.target.set(target);
32
43
  this.listenTarget();
33
44
  }
34
45
  listenTarget() {
35
46
  this.observer = new MutationObserver(() => {
36
- if (this.target.isConnected) {
37
- this.setPosition(this.target);
47
+ const target = this.target();
48
+ if (target?.isConnected) {
49
+ this.setPosition(target);
38
50
  }
39
51
  else {
40
52
  this.onRemoved();
@@ -44,54 +56,43 @@ class NgbTooltipTemplate {
44
56
  }
45
57
  setPosition(target) {
46
58
  const el = this.el.nativeElement;
47
- const { top, bottom, left, right } = tooltipPosition({
59
+ const { top, bottom, left, right, position } = tooltipPosition({
48
60
  target,
49
61
  el,
50
62
  position: this.position,
63
+ offset: 8,
51
64
  });
52
65
  if (bottom != undefined) {
53
66
  el.style.bottom = `${bottom}px`;
67
+ el.style.top = '';
54
68
  }
55
69
  else {
56
70
  el.style.top = `${top}px`;
71
+ el.style.bottom = '';
57
72
  }
58
73
  if (right != undefined) {
59
74
  el.style.right = `${right}px`;
75
+ el.style.left = '';
60
76
  }
61
77
  else {
62
78
  el.style.left = `${left}px`;
79
+ el.style.right = '';
63
80
  }
81
+ this.arrowTracker?.values.set({ top, bottom, left, right, target, position });
64
82
  }
65
83
  ngOnDestroy() {
66
84
  this.observer?.disconnect();
67
85
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTooltipTemplate, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0", type: NgbTooltipTemplate, isStandalone: true, selector: "[ngbTooltip]", host: { properties: { "@slideInOutAnimation": "1" } }, ngImport: i0, template: `{{ content() }}`, isInline: true, animations: [
70
- trigger('slideInOutAnimation', [
71
- state('1', style({ transform: 'none', opacity: 1 })),
72
- state('void', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
73
- state('0', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
74
- transition('* => *', animate('150ms ease-out')),
75
- ]),
76
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTooltipTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
87
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbTooltipTemplate, isStandalone: true, selector: "[ngbTooltip]", host: { properties: { "@tooltipAnimation": "" } }, ngImport: i0 }); }
77
88
  }
78
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTooltipTemplate, decorators: [{
79
- type: Component,
90
+ type: Directive,
80
91
  args: [{
81
92
  selector: '[ngbTooltip]',
82
- changeDetection: ChangeDetectionStrategy.OnPush,
83
- template: `{{ content() }}`,
84
93
  host: {
85
- '[@slideInOutAnimation]': '1',
94
+ '[@tooltipAnimation]': '',
86
95
  },
87
- animations: [
88
- trigger('slideInOutAnimation', [
89
- state('1', style({ transform: 'none', opacity: 1 })),
90
- state('void', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
91
- state('0', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),
92
- transition('* => *', animate('150ms ease-out')),
93
- ]),
94
- ],
95
96
  }]
96
97
  }], ctorParameters: () => [] });
97
98
 
@@ -99,25 +100,33 @@ class TooltipService {
99
100
  constructor() {
100
101
  this.tooltip = tooltipPortal();
101
102
  this.delay = 100;
102
- this.destroy = () => {
103
- this.timeoutId = setTimeout(() => {
104
- this.tooltipOpen?.destroy();
105
- this.tooltipOpen = undefined;
106
- this.delay = 100;
107
- }, this.delay ?? 100);
103
+ this.destroy = (force) => {
104
+ if (force) {
105
+ this.close();
106
+ }
107
+ else {
108
+ this.timeoutId = setTimeout(() => this.close(), this.delay ?? 100);
109
+ }
108
110
  };
109
111
  }
110
112
  insert(el, content, position, hide, component) {
111
113
  clearTimeout(this.timeoutId);
114
+ // destroy immediately if position is different
115
+ if (this.position && this.position !== position)
116
+ this.destroy(true);
117
+ // update if tooltip is open
112
118
  if (this.tooltipOpen) {
113
119
  this.tooltipOpen.parent.instance.update(content, el, position, hide);
114
- // setTimeout(() => {
115
- // this.tooltipOpen.parent.instance.setPosition(el);
116
- // });
117
120
  }
118
121
  else {
119
122
  this.tooltipOpen = this.tooltip.open(content, el, position, hide, component);
120
123
  }
124
+ this.position = position;
125
+ }
126
+ close() {
127
+ this.tooltipOpen?.destroy();
128
+ this.tooltipOpen = undefined;
129
+ this.delay = 100;
121
130
  }
122
131
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TooltipService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
123
132
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: TooltipService, providedIn: 'root' }); }
@@ -216,12 +225,13 @@ class NgbTooltip {
216
225
  this.remove();
217
226
  }
218
227
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
219
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTooltip, isStandalone: true, selector: "[ngbTooltip]", inputs: { ngbTooltip: { classPropertyName: "ngbTooltip", publicName: "ngbTooltip", isSignal: true, isRequired: false, transformFunction: null }, ngbTooltipPosition: { classPropertyName: "ngbTooltipPosition", publicName: "ngbTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
228
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbTooltip, isStandalone: true, selector: "[ngbTooltip]", inputs: { ngbTooltip: { classPropertyName: "ngbTooltip", publicName: "ngbTooltip", isSignal: true, isRequired: false, transformFunction: null }, ngbTooltipPosition: { classPropertyName: "ngbTooltipPosition", publicName: "ngbTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, providers: [providePopoverArrowTracker()], ngImport: i0 }); }
220
229
  }
221
230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTooltip, decorators: [{
222
231
  type: Directive,
223
232
  args: [{
224
233
  selector: '[ngbTooltip]',
234
+ providers: [providePopoverArrowTracker()],
225
235
  }]
226
236
  }], ctorParameters: () => [] });
227
237
 
@@ -233,5 +243,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
233
243
  * Generated bundle index. Do not edit.
234
244
  */
235
245
 
236
- export { NgbTooltip, NgbTooltipTemplate, provideNgbTooltipOptions };
246
+ export { NgbTooltip, NgbTooltipTemplate, provideNgbTooltipOptions, tooltipAnimation };
237
247
  //# sourceMappingURL=ngbase-adk-tooltip.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-tooltip.mjs","sources":["../../../projects/adk/tooltip/tooltip.ts","../../../projects/adk/tooltip/tooltip.service.ts","../../../projects/adk/tooltip/tooltip.directive.ts","../../../projects/adk/tooltip/public-api.ts","../../../projects/adk/tooltip/ngbase-adk-tooltip.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n afterRenderEffect,\n inject,\n signal,\n} from '@angular/core';\nimport { PopoverPosition, tooltipPosition } from '@ngbase/adk/popover';\n\n@Component({\n selector: '[ngbTooltip]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `{{ content() }}`,\n host: {\n '[@slideInOutAnimation]': '1',\n },\n animations: [\n trigger('slideInOutAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('150ms ease-out')),\n ]),\n ],\n})\nexport class NgbTooltipTemplate implements OnDestroy {\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly content = signal('Tooltip');\n\n private target!: HTMLElement;\n private position: PopoverPosition = 'top';\n private hide!: VoidFunction;\n private observer?: MutationObserver;\n\n constructor() {\n afterRenderEffect(() => {\n const _ = this.content();\n // we need for the content to be set before setting the position\n this.setPosition(this.target);\n });\n }\n\n update(content: string, target: HTMLElement, position: PopoverPosition, hide: VoidFunction) {\n this.setTarget(target);\n this.hide = hide;\n this.position = position;\n this.el.nativeElement.style.right = '';\n this.el.nativeElement.style.transition = '.15s ease-out all';\n this.content.set(content);\n }\n\n private setTarget(target: HTMLElement) {\n this.ngOnDestroy();\n this.target = target;\n this.listenTarget();\n }\n\n private listenTarget() {\n this.observer = new MutationObserver(() => {\n if (this.target.isConnected) {\n this.setPosition(this.target);\n } else {\n this.onRemoved();\n }\n });\n\n this.observer.observe(document.body, { childList: true, subtree: true });\n }\n\n private onRemoved = () => {\n this.hide();\n };\n\n setPosition(target: HTMLElement) {\n const el = this.el.nativeElement;\n\n const { top, bottom, left, right } = tooltipPosition({\n target,\n el,\n position: this.position,\n });\n if (bottom != undefined) {\n el.style.bottom = `${bottom}px`;\n } else {\n el.style.top = `${top}px`;\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n } else {\n el.style.left = `${left}px`;\n }\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n}\n","import { ComponentRef, Injectable, Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { PopoverPosition } from '@ngbase/adk/popover';\nimport { NgbTooltipTemplate } from './tooltip';\n\n@Injectable({ providedIn: 'root' })\nexport class TooltipService {\n tooltip = tooltipPortal();\n tooltipOpen: TooltipOpen | undefined;\n timeoutId: any;\n delay = 100;\n\n insert(\n el: HTMLElement,\n content: string,\n position: PopoverPosition,\n hide: VoidFunction,\n component?: Type<NgbTooltipTemplate>,\n ) {\n clearTimeout(this.timeoutId);\n if (this.tooltipOpen) {\n this.tooltipOpen.parent.instance.update(content, el, position, hide);\n // setTimeout(() => {\n // this.tooltipOpen.parent.instance.setPosition(el);\n // });\n } else {\n this.tooltipOpen = this.tooltip.open(content, el, position, hide, component);\n }\n }\n\n destroy = () => {\n this.timeoutId = setTimeout(() => {\n this.tooltipOpen?.destroy();\n this.tooltipOpen = undefined;\n this.delay = 100;\n }, this.delay ?? 100);\n };\n}\n\ninterface TooltipOpen {\n destroy: VoidFunction;\n parent: ComponentRef<NgbTooltipTemplate>;\n replace: ((component: DialogInput<NgbTooltipTemplate>) => void) | undefined;\n}\n\nexport function tooltipPortal() {\n const NAME = 'tooltip';\n const base = basePortal(NAME, NgbTooltipTemplate);\n\n function open(\n content: string,\n target: HTMLElement,\n position: PopoverPosition,\n hide: VoidFunction,\n parentComponent?: Type<NgbTooltipTemplate>,\n ) {\n const { diaRef, parent, replace } = base.open<NgbTooltipTemplate>(\n undefined,\n comp => {\n comp.instance.update(content, target, position || 'top', hide);\n },\n undefined,\n false,\n parentComponent,\n );\n\n function destroy() {\n diaRef.close();\n }\n\n return { destroy, parent, replace } as TooltipOpen;\n }\n\n return { open };\n}\n","import {\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n Type,\n afterRenderEffect,\n computed,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport { PopoverPosition } from '@ngbase/adk/popover';\nimport { TooltipService } from './tooltip.service';\nimport { NgbTooltipTemplate } from './tooltip';\n\nexport function provideNgbTooltipOptions(options: TooltipOptions) {\n return { provide: TOOLTIP_OPTIONS, useValue: options };\n}\n\nexport const TOOLTIP_OPTIONS = new InjectionToken<TooltipOptions>('TOOLTIP_OPTIONS');\n\nexport interface TooltipOptions {\n showDelay?: number;\n hideDelay?: number;\n position?: PopoverPosition;\n component?: Type<NgbTooltipTemplate>;\n}\n\n@Directive({\n selector: '[ngbTooltip]',\n})\nexport class NgbTooltip implements OnDestroy {\n // Dependencies\n private defaultOptions = inject(TOOLTIP_OPTIONS, { optional: true });\n private el = inject(ElementRef);\n private tooltipService = inject(TooltipService);\n\n // Inputs\n readonly ngbTooltip = input<string>();\n readonly ngbTooltipPosition = input<PopoverPosition>();\n readonly delay = input(0);\n\n // State\n readonly options = computed(() => {\n const o = this.defaultOptions || {};\n const options: TooltipOptions = {\n showDelay: this.delay() || o.showDelay || 0,\n hideDelay: o.hideDelay || 0,\n position: this.ngbTooltipPosition() || o.position || 'top',\n component: this.defaultOptions?.component || o.component,\n };\n return options;\n });\n timer: any;\n\n constructor() {\n let active = false;\n afterRenderEffect(() => {\n const content = this.ngbTooltip();\n untracked(() => {\n if (content) {\n if (!active) {\n this.el.nativeElement.addEventListener('mouseenter', this.show);\n this.el.nativeElement.addEventListener('mouseleave', this.hide);\n active = true;\n }\n } else if (active) {\n this.remove();\n active = false;\n }\n });\n });\n }\n\n show = () => {\n // listen when cursor is over and element is removed\n const options = this.options();\n if (options.showDelay === 0 || this.tooltipService.tooltipOpen) {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.quickHide,\n options.component,\n );\n return;\n }\n this.timer = setTimeout(() => {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.hide,\n options.component,\n );\n }, options.showDelay);\n };\n\n removed = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n hide = () => {\n clearTimeout(this.timer);\n this.tooltipService.destroy();\n };\n\n quickHide = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n private remove() {\n this.hide();\n this.el.nativeElement.removeEventListener('mouseenter', this.show);\n this.el.nativeElement.removeEventListener('mouseleave', this.hide);\n }\n\n ngOnDestroy() {\n this.remove();\n }\n}\n","/*\n * Public API Surface of tooltip\n */\n\nexport { NgbTooltipTemplate } from './tooltip';\nexport { NgbTooltip, provideNgbTooltipOptions, type TooltipOptions } from './tooltip.directive';\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":"ngbase-adk-tooltip.mjs","sources":["../../../projects/adk/tooltip/tooltip.ts","../../../projects/adk/tooltip/tooltip.service.ts","../../../projects/adk/tooltip/tooltip.directive.ts","../../../projects/adk/tooltip/public-api.ts","../../../projects/adk/tooltip/ngbase-adk-tooltip.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directive, ElementRef, OnDestroy, afterRenderEffect, inject, signal } from '@angular/core';\nimport { POPOVER_ARROW_TRACKER, PopoverPosition, tooltipPosition } from '@ngbase/adk/popover';\n\nexport const tooltipAnimation = trigger('tooltipAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-5px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('150ms ease-out')),\n]);\n\n@Directive({\n selector: '[ngbTooltip]',\n host: {\n '[@tooltipAnimation]': '',\n },\n})\nexport class NgbTooltipTemplate implements OnDestroy {\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER, { optional: true });\n\n readonly content = signal('Tooltip');\n private target = signal<HTMLElement | undefined>(undefined);\n private position: PopoverPosition = 'top';\n private hide!: VoidFunction;\n private observer?: MutationObserver;\n\n constructor() {\n afterRenderEffect(() => {\n const _ = this.content();\n const target = this.target();\n // we need for the content to be set before setting the position\n if (target) {\n this.setPosition(target);\n }\n });\n }\n\n update(content: string, target: HTMLElement, position: PopoverPosition, hide: VoidFunction) {\n this.setTarget(target);\n this.hide = hide;\n this.position = position;\n this.el.nativeElement.style.right = '';\n this.el.nativeElement.style.transition = '.15s ease-out all';\n this.content.set(content);\n }\n\n private setTarget(target: HTMLElement) {\n this.ngOnDestroy();\n this.target.set(target);\n this.listenTarget();\n }\n\n private listenTarget() {\n this.observer = new MutationObserver(() => {\n const target = this.target();\n if (target?.isConnected) {\n this.setPosition(target);\n } else {\n this.onRemoved();\n }\n });\n\n this.observer.observe(document.body, { childList: true, subtree: true });\n }\n\n private onRemoved = () => {\n this.hide();\n };\n\n setPosition(target: HTMLElement) {\n const el = this.el.nativeElement;\n\n const { top, bottom, left, right, position } = tooltipPosition({\n target,\n el,\n position: this.position,\n offset: 8,\n });\n if (bottom != undefined) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n this.arrowTracker?.values.set({ top, bottom, left, right, target, position });\n }\n\n ngOnDestroy(): void {\n this.observer?.disconnect();\n }\n}\n","import { ComponentRef, Injectable, Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { PopoverPosition } from '@ngbase/adk/popover';\nimport { NgbTooltipTemplate } from './tooltip';\n\n@Injectable({ providedIn: 'root' })\nexport class TooltipService {\n tooltip = tooltipPortal();\n tooltipOpen: TooltipOpen | undefined;\n private position?: PopoverPosition;\n private timeoutId: any;\n delay = 100;\n\n insert(\n el: HTMLElement,\n content: string,\n position: PopoverPosition,\n hide: VoidFunction,\n component?: Type<NgbTooltipTemplate>,\n ) {\n clearTimeout(this.timeoutId);\n // destroy immediately if position is different\n if (this.position && this.position !== position) this.destroy(true);\n\n // update if tooltip is open\n if (this.tooltipOpen) {\n this.tooltipOpen.parent.instance.update(content, el, position, hide);\n } else {\n this.tooltipOpen = this.tooltip.open(content, el, position, hide, component);\n }\n this.position = position;\n }\n\n destroy = (force?: boolean) => {\n if (force) {\n this.close();\n } else {\n this.timeoutId = setTimeout(() => this.close(), this.delay ?? 100);\n }\n };\n\n private close() {\n this.tooltipOpen?.destroy();\n this.tooltipOpen = undefined;\n this.delay = 100;\n }\n}\n\ninterface TooltipOpen {\n destroy: VoidFunction;\n parent: ComponentRef<NgbTooltipTemplate>;\n replace: ((component: DialogInput<NgbTooltipTemplate>) => void) | undefined;\n}\n\nexport function tooltipPortal() {\n const NAME = 'tooltip';\n const base = basePortal(NAME, NgbTooltipTemplate);\n\n function open(\n content: string,\n target: HTMLElement,\n position: PopoverPosition,\n hide: VoidFunction,\n parentComponent?: Type<NgbTooltipTemplate>,\n ) {\n const { diaRef, parent, replace } = base.open<NgbTooltipTemplate>(\n undefined,\n comp => {\n comp.instance.update(content, target, position || 'top', hide);\n },\n undefined,\n false,\n parentComponent,\n );\n\n function destroy() {\n diaRef.close();\n }\n\n return { destroy, parent, replace } as TooltipOpen;\n }\n\n return { open };\n}\n","import {\n Directive,\n ElementRef,\n InjectionToken,\n OnDestroy,\n Type,\n afterRenderEffect,\n computed,\n inject,\n input,\n untracked,\n} from '@angular/core';\nimport { PopoverPosition, providePopoverArrowTracker } from '@ngbase/adk/popover';\nimport { TooltipService } from './tooltip.service';\nimport { NgbTooltipTemplate } from './tooltip';\n\nexport function provideNgbTooltipOptions(options: TooltipOptions) {\n return { provide: TOOLTIP_OPTIONS, useValue: options };\n}\n\nexport const TOOLTIP_OPTIONS = new InjectionToken<TooltipOptions>('TOOLTIP_OPTIONS');\n\nexport interface TooltipOptions {\n showDelay?: number;\n hideDelay?: number;\n position?: PopoverPosition;\n component?: Type<NgbTooltipTemplate>;\n}\n\n@Directive({\n selector: '[ngbTooltip]',\n providers: [providePopoverArrowTracker()],\n})\nexport class NgbTooltip implements OnDestroy {\n // Dependencies\n private defaultOptions = inject(TOOLTIP_OPTIONS, { optional: true });\n private el = inject(ElementRef);\n private tooltipService = inject(TooltipService);\n\n // Inputs\n readonly ngbTooltip = input<string>();\n readonly ngbTooltipPosition = input<PopoverPosition>();\n readonly delay = input(0);\n\n // State\n readonly options = computed(() => {\n const o = this.defaultOptions || {};\n const options: TooltipOptions = {\n showDelay: this.delay() || o.showDelay || 0,\n hideDelay: o.hideDelay || 0,\n position: this.ngbTooltipPosition() || o.position || 'top',\n component: this.defaultOptions?.component || o.component,\n };\n return options;\n });\n timer: any;\n\n constructor() {\n let active = false;\n afterRenderEffect(() => {\n const content = this.ngbTooltip();\n untracked(() => {\n if (content) {\n if (!active) {\n this.el.nativeElement.addEventListener('mouseenter', this.show);\n this.el.nativeElement.addEventListener('mouseleave', this.hide);\n active = true;\n }\n } else if (active) {\n this.remove();\n active = false;\n }\n });\n });\n }\n\n show = () => {\n // listen when cursor is over and element is removed\n const options = this.options();\n if (options.showDelay === 0 || this.tooltipService.tooltipOpen) {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.quickHide,\n options.component,\n );\n return;\n }\n this.timer = setTimeout(() => {\n this.tooltipService.insert(\n this.el.nativeElement,\n this.ngbTooltip()!,\n options.position!,\n this.hide,\n options.component,\n );\n }, options.showDelay);\n };\n\n removed = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n hide = () => {\n clearTimeout(this.timer);\n this.tooltipService.destroy();\n };\n\n quickHide = () => {\n this.tooltipService.delay = 0;\n this.hide();\n };\n\n private remove() {\n this.hide();\n this.el.nativeElement.removeEventListener('mouseenter', this.show);\n this.el.nativeElement.removeEventListener('mouseleave', this.hide);\n }\n\n ngOnDestroy() {\n this.remove();\n }\n}\n","/*\n * Public API Surface of tooltip\n */\n\nexport { NgbTooltipTemplate, tooltipAnimation } from './tooltip';\nexport { NgbTooltip, provideNgbTooltipOptions, type TooltipOptions } from './tooltip.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -125,7 +125,7 @@ class NgbTourService {
125
125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbTourService, decorators: [{
126
126
  type: Injectable,
127
127
  args: [{ providedIn: 'root' }]
128
- }], ctorParameters: () => [] });
128
+ }] });
129
129
 
130
130
  class NgbTourStep {
131
131
  constructor() {