@cdevhub/ngx-tw 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +264 -49
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
  7. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
  9. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
  11. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
  13. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs +24 -15
  15. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
  17. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +408 -215
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +144 -79
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +34 -20
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +195 -110
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +140 -73
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  34. package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +393 -149
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  40. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  44. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
  45. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
  47. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
  49. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
  51. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
  53. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
  55. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
  57. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
  59. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
  61. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
  62. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +137 -71
  63. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
  65. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
  67. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  68. package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
  69. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
  71. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-select.mjs +217 -122
  73. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
  75. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
  77. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
  79. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
  81. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-sort.mjs +44 -25
  83. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  84. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
  85. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
  86. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
  87. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  88. package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
  89. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  90. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
  91. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
  93. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
  95. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
  97. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +101 -51
  99. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
  101. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
  102. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +11 -7
  103. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
  105. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
  107. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
  109. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-toast.mjs +89 -55
  111. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  112. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
  113. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
  115. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
  116. package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
  117. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
  118. package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
  119. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
  120. package/index.json +1 -0
  121. package/package.json +45 -20
  122. package/theme/index.css +10 -2
  123. package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
  124. package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
  125. package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
  126. package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
  127. package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
  128. package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
  129. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
  130. package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
  131. package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
  132. package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
  133. package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
  134. package/types/cdevhub-ngx-tw-table.d.ts +30 -1
  135. package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
  136. package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
  137. package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
  138. package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
  139. package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
  140. package/types/cdevhub-ngx-tw.d.ts +7 -0
@@ -195,28 +195,41 @@ const ARROW_POSITION_CLASSES = {
195
195
  let nextTooltipId = 0;
196
196
  class TooltipOverlayComponent {
197
197
  id = `tw-tooltip-${nextTooltipId++}`;
198
- content = signal('', ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
199
- color = signal('neutral', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
200
- size = signal('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
201
- showArrow = signal(true, ...(ngDevMode ? [{ debugName: "showArrow" }] : /* istanbul ignore next */ []));
202
- arrowDirection = signal('bottom', ...(ngDevMode ? [{ debugName: "arrowDirection" }] : /* istanbul ignore next */ []));
203
- panelClass = signal('', ...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
204
- isTemplate = computed(() => this.content() instanceof TemplateRef, ...(ngDevMode ? [{ debugName: "isTemplate" }] : /* istanbul ignore next */ []));
205
- templateContent = computed(() => this.content(), ...(ngDevMode ? [{ debugName: "templateContent" }] : /* istanbul ignore next */ []));
206
- textContent = computed(() => this.content(), ...(ngDevMode ? [{ debugName: "textContent" }] : /* istanbul ignore next */ []));
207
- variantResult = computed(() => tooltipVariants({ color: this.color(), size: this.size() }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
208
- wrapperClasses = computed(() => this.variantResult().wrapper(), ...(ngDevMode ? [{ debugName: "wrapperClasses" }] : /* istanbul ignore next */ []));
198
+ content = signal('', /* @ts-ignore */
199
+ ...(ngDevMode ? [{ debugName: "content" }] : /* istanbul ignore next */ []));
200
+ color = signal('neutral', /* @ts-ignore */
201
+ ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
202
+ size = signal('md', /* @ts-ignore */
203
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
204
+ showArrow = signal(true, /* @ts-ignore */
205
+ ...(ngDevMode ? [{ debugName: "showArrow" }] : /* istanbul ignore next */ []));
206
+ arrowDirection = signal('bottom', /* @ts-ignore */
207
+ ...(ngDevMode ? [{ debugName: "arrowDirection" }] : /* istanbul ignore next */ []));
208
+ panelClass = signal('', /* @ts-ignore */
209
+ ...(ngDevMode ? [{ debugName: "panelClass" }] : /* istanbul ignore next */ []));
210
+ isTemplate = computed(() => this.content() instanceof TemplateRef, /* @ts-ignore */
211
+ ...(ngDevMode ? [{ debugName: "isTemplate" }] : /* istanbul ignore next */ []));
212
+ templateContent = computed(() => this.content(), /* @ts-ignore */
213
+ ...(ngDevMode ? [{ debugName: "templateContent" }] : /* istanbul ignore next */ []));
214
+ textContent = computed(() => this.content(), /* @ts-ignore */
215
+ ...(ngDevMode ? [{ debugName: "textContent" }] : /* istanbul ignore next */ []));
216
+ variantResult = computed(() => tooltipVariants({ color: this.color(), size: this.size() }), /* @ts-ignore */
217
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
218
+ wrapperClasses = computed(() => this.variantResult().wrapper(), /* @ts-ignore */
219
+ ...(ngDevMode ? [{ debugName: "wrapperClasses" }] : /* istanbul ignore next */ []));
209
220
  panelClasses = computed(() => {
210
221
  const consumer = this.panelClass();
211
222
  return this.variantResult().panel({ class: consumer });
212
- }, ...(ngDevMode ? [{ debugName: "panelClasses" }] : /* istanbul ignore next */ []));
223
+ }, /* @ts-ignore */
224
+ ...(ngDevMode ? [{ debugName: "panelClasses" }] : /* istanbul ignore next */ []));
213
225
  arrowClasses = computed(() => {
214
226
  const base = this.variantResult().arrow();
215
227
  const position = ARROW_POSITION_CLASSES[this.arrowDirection()];
216
228
  return `${base} ${position}`;
217
- }, ...(ngDevMode ? [{ debugName: "arrowClasses" }] : /* istanbul ignore next */ []));
218
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TooltipOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
219
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: TooltipOverlayComponent, isStandalone: true, selector: "tw-tooltip-overlay", host: { attributes: { "role": "tooltip" }, properties: { "id": "id", "animate.enter": "\"fade-in\"", "animate.leave": "\"fade-out\"" } }, ngImport: i0, template: `
229
+ }, /* @ts-ignore */
230
+ ...(ngDevMode ? [{ debugName: "arrowClasses" }] : /* istanbul ignore next */ []));
231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TooltipOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
232
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: TooltipOverlayComponent, isStandalone: true, selector: "tw-tooltip-overlay", host: { attributes: { "role": "tooltip" }, properties: { "id": "id", "animate.enter": "\"fade-in\"", "animate.leave": "\"fade-out\"" } }, ngImport: i0, template: `
220
233
  <div [class]="wrapperClasses()">
221
234
  <div [class]="panelClasses()">
222
235
  @if (isTemplate()) {
@@ -231,7 +244,7 @@ class TooltipOverlayComponent {
231
244
  </div>
232
245
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
233
246
  }
234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TooltipOverlayComponent, decorators: [{
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TooltipOverlayComponent, decorators: [{
235
248
  type: Component,
236
249
  args: [{
237
250
  selector: 'tw-tooltip-overlay',
@@ -262,35 +275,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
262
275
  // ── Tooltip directive ──
263
276
  class TooltipDirective {
264
277
  /** The tooltip content. Strings render as text; TemplateRef renders via ngTemplateOutlet. */
265
- twTooltip = input.required(...(ngDevMode ? [{ debugName: "twTooltip" }] : /* istanbul ignore next */ []));
278
+ twTooltip = input.required(/* @ts-ignore */
279
+ ...(ngDevMode ? [{ debugName: "twTooltip" }] : /* istanbul ignore next */ []));
266
280
  /** Preferred placement relative to the trigger. CDK handles fallback. Defaults to `'top'`. */
267
- twTooltipPosition = input('top', ...(ngDevMode ? [{ debugName: "twTooltipPosition" }] : /* istanbul ignore next */ []));
281
+ twTooltipPosition = input('top', /* @ts-ignore */
282
+ ...(ngDevMode ? [{ debugName: "twTooltipPosition" }] : /* istanbul ignore next */ []));
268
283
  /** Semantic color palette for the tooltip. Defaults to `'neutral'`. */
269
- twTooltipColor = input('neutral', ...(ngDevMode ? [{ debugName: "twTooltipColor" }] : /* istanbul ignore next */ []));
284
+ twTooltipColor = input('neutral', /* @ts-ignore */
285
+ ...(ngDevMode ? [{ debugName: "twTooltipColor" }] : /* istanbul ignore next */ []));
270
286
  /** Controls padding, font size, and maximum width. Defaults to `'md'`. */
271
- twTooltipSize = input('md', ...(ngDevMode ? [{ debugName: "twTooltipSize" }] : /* istanbul ignore next */ []));
287
+ twTooltipSize = input('md', /* @ts-ignore */
288
+ ...(ngDevMode ? [{ debugName: "twTooltipSize" }] : /* istanbul ignore next */ []));
272
289
  /**
273
290
  * Milliseconds to wait before showing after trigger. Defaults to `200` — an
274
291
  * intent threshold: the trigger must be held long enough that the user reads
275
292
  * as "wants the tooltip" rather than a passing graze with the pointer.
276
293
  */
277
- twTooltipShowDelay = input(200, ...(ngDevMode ? [{ debugName: "twTooltipShowDelay" }] : /* istanbul ignore next */ []));
294
+ twTooltipShowDelay = input(200, /* @ts-ignore */
295
+ ...(ngDevMode ? [{ debugName: "twTooltipShowDelay" }] : /* istanbul ignore next */ []));
278
296
  /**
279
297
  * Milliseconds to wait before hiding after trigger ends. Defaults to `0`
280
298
  * (immediate dismiss). The asymmetry with `twTooltipShowDelay` is
281
299
  * intentional — show is gated to filter noise, hide is instant so the
282
300
  * tooltip never lingers over content the user has moved on from.
283
301
  */
284
- twTooltipHideDelay = input(0, ...(ngDevMode ? [{ debugName: "twTooltipHideDelay" }] : /* istanbul ignore next */ []));
302
+ twTooltipHideDelay = input(0, /* @ts-ignore */
303
+ ...(ngDevMode ? [{ debugName: "twTooltipHideDelay" }] : /* istanbul ignore next */ []));
285
304
  /** When true, tooltip never shows. Defaults to `false`. */
286
- twTooltipDisabled = input(false, ...(ngDevMode ? [{ debugName: "twTooltipDisabled" }] : /* istanbul ignore next */ []));
305
+ twTooltipDisabled = input(false, /* @ts-ignore */
306
+ ...(ngDevMode ? [{ debugName: "twTooltipDisabled" }] : /* istanbul ignore next */ []));
287
307
  // Arrows reinforce the visual association between the floating panel and its trigger
288
308
  // and match every other ngx-tw overlay (popover/menu); opt-out is for compact iconic
289
309
  // contexts only.
290
310
  /** When true, renders an arrow pointing to the trigger. Defaults to `true`. */
291
- twTooltipArrow = input(true, ...(ngDevMode ? [{ debugName: "twTooltipArrow" }] : /* istanbul ignore next */ []));
311
+ twTooltipArrow = input(true, /* @ts-ignore */
312
+ ...(ngDevMode ? [{ debugName: "twTooltipArrow" }] : /* istanbul ignore next */ []));
292
313
  /** Optional class string (space-separated) merged into the panel slot for consumer customization. */
293
- twTooltipPanelClass = input('', ...(ngDevMode ? [{ debugName: "twTooltipPanelClass" }] : /* istanbul ignore next */ []));
314
+ twTooltipPanelClass = input('', /* @ts-ignore */
315
+ ...(ngDevMode ? [{ debugName: "twTooltipPanelClass" }] : /* istanbul ignore next */ []));
294
316
  /** Fires when the tooltip becomes visible. */
295
317
  twTooltipShown = output();
296
318
  /** Fires when the tooltip is fully hidden. */
@@ -505,10 +527,10 @@ class TooltipDirective {
505
527
  this.hideTimer = null;
506
528
  }
507
529
  }
508
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
509
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: TooltipDirective, isStandalone: true, selector: "[twTooltip]", inputs: { twTooltip: { classPropertyName: "twTooltip", publicName: "twTooltip", isSignal: true, isRequired: true, transformFunction: null }, twTooltipPosition: { classPropertyName: "twTooltipPosition", publicName: "twTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, twTooltipColor: { classPropertyName: "twTooltipColor", publicName: "twTooltipColor", isSignal: true, isRequired: false, transformFunction: null }, twTooltipSize: { classPropertyName: "twTooltipSize", publicName: "twTooltipSize", isSignal: true, isRequired: false, transformFunction: null }, twTooltipShowDelay: { classPropertyName: "twTooltipShowDelay", publicName: "twTooltipShowDelay", isSignal: true, isRequired: false, transformFunction: null }, twTooltipHideDelay: { classPropertyName: "twTooltipHideDelay", publicName: "twTooltipHideDelay", isSignal: true, isRequired: false, transformFunction: null }, twTooltipDisabled: { classPropertyName: "twTooltipDisabled", publicName: "twTooltipDisabled", isSignal: true, isRequired: false, transformFunction: null }, twTooltipArrow: { classPropertyName: "twTooltipArrow", publicName: "twTooltipArrow", isSignal: true, isRequired: false, transformFunction: null }, twTooltipPanelClass: { classPropertyName: "twTooltipPanelClass", publicName: "twTooltipPanelClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { twTooltipShown: "twTooltipShown", twTooltipHidden: "twTooltipHidden" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focusin": "onFocusIn()", "focusout": "onFocusOut()", "keydown.escape": "onEscape()", "touchstart": "onTouchStart()", "touchend": "onTouchEnd()" } }, exportAs: ["twTooltip"], ngImport: i0 });
530
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
531
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: TooltipDirective, isStandalone: true, selector: "[twTooltip]", inputs: { twTooltip: { classPropertyName: "twTooltip", publicName: "twTooltip", isSignal: true, isRequired: true, transformFunction: null }, twTooltipPosition: { classPropertyName: "twTooltipPosition", publicName: "twTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, twTooltipColor: { classPropertyName: "twTooltipColor", publicName: "twTooltipColor", isSignal: true, isRequired: false, transformFunction: null }, twTooltipSize: { classPropertyName: "twTooltipSize", publicName: "twTooltipSize", isSignal: true, isRequired: false, transformFunction: null }, twTooltipShowDelay: { classPropertyName: "twTooltipShowDelay", publicName: "twTooltipShowDelay", isSignal: true, isRequired: false, transformFunction: null }, twTooltipHideDelay: { classPropertyName: "twTooltipHideDelay", publicName: "twTooltipHideDelay", isSignal: true, isRequired: false, transformFunction: null }, twTooltipDisabled: { classPropertyName: "twTooltipDisabled", publicName: "twTooltipDisabled", isSignal: true, isRequired: false, transformFunction: null }, twTooltipArrow: { classPropertyName: "twTooltipArrow", publicName: "twTooltipArrow", isSignal: true, isRequired: false, transformFunction: null }, twTooltipPanelClass: { classPropertyName: "twTooltipPanelClass", publicName: "twTooltipPanelClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { twTooltipShown: "twTooltipShown", twTooltipHidden: "twTooltipHidden" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focusin": "onFocusIn()", "focusout": "onFocusOut()", "keydown.escape": "onEscape()", "touchstart": "onTouchStart()", "touchend": "onTouchEnd()" } }, exportAs: ["twTooltip"], ngImport: i0 });
510
532
  }
511
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TooltipDirective, decorators: [{
533
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TooltipDirective, decorators: [{
512
534
  type: Directive,
513
535
  args: [{
514
536
  selector: '[twTooltip]',
@@ -1 +1 @@
1
- {"version":3,"file":"cdevhub-ngx-tw-tooltip.mjs","sources":["../../../projects/ngx-tw/tooltip/tooltip.ts","../../../projects/ngx-tw/tooltip/cdevhub-ngx-tw-tooltip.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n type ConnectedPosition,\n Overlay,\n type OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { AriaDescriber } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { tv } from 'tailwind-variants';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\n\n/** Placement position of the tooltip relative to its trigger element. */\nexport type TooltipPosition =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'right'\n | 'right-start'\n | 'right-end';\n\n/** Direction the arrow points toward (derived from resolved overlay position). */\ntype ArrowDirection = 'top' | 'bottom' | 'left' | 'right';\n\n// ── Variant config ──\n\nconst tooltipVariants = tv(\n {\n slots: {\n wrapper: 'relative pointer-events-none',\n panel: 'rounded-md shadow-md',\n arrow: 'absolute size-2 rotate-45',\n },\n variants: {\n color: {\n primary: {\n panel: 'bg-primary-700 text-on-primary',\n arrow: 'bg-primary-700',\n },\n secondary: {\n panel: 'bg-secondary-700 text-on-secondary',\n arrow: 'bg-secondary-700',\n },\n accent: {\n panel: 'bg-accent-700 text-on-accent',\n arrow: 'bg-accent-700',\n },\n neutral: {\n wrapper: 'drop-shadow-[0_0_0.5px_var(--color-border)] drop-shadow-sm',\n panel: 'bg-surface-overlay text-fg',\n arrow: 'bg-surface-overlay',\n },\n info: {\n panel: 'bg-info-700 text-on-info',\n arrow: 'bg-info-700',\n },\n success: {\n panel: 'bg-success-700 text-on-success',\n arrow: 'bg-success-700',\n },\n warning: {\n panel: 'bg-warning-700 text-on-warning',\n arrow: 'bg-warning-700',\n },\n error: {\n panel: 'bg-error-700 text-on-error',\n arrow: 'bg-error-700',\n },\n },\n size: {\n xs: {\n panel: 'px-1.5 py-0.5 text-2xs max-w-40',\n },\n sm: {\n panel: 'px-2 py-1 text-xs max-w-48',\n },\n md: {\n panel: 'px-3 py-1.5 text-sm max-w-xs',\n },\n lg: {\n panel: 'px-4 py-2 text-sm max-w-sm',\n },\n xl: {\n panel: 'px-4 py-2 text-base max-w-md',\n },\n },\n },\n defaultVariants: {\n color: 'neutral',\n size: 'md',\n },\n },\n { twMerge: true },\n);\n\n// ── Position mappings ──\n\nconst POSITION_MAP: Record<TooltipPosition, ConnectedPosition> = {\n top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-start': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-end': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-start': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-end': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -8,\n },\n 'left-start': {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -8,\n },\n 'left-end': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: -8,\n },\n right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 8,\n },\n 'right-start': {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 8,\n },\n 'right-end': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 8,\n },\n};\n\nconst FALLBACK_ORDER: Record<string, TooltipPosition[]> = {\n top: ['bottom', 'left', 'right'],\n bottom: ['top', 'left', 'right'],\n left: ['right', 'top', 'bottom'],\n right: ['left', 'top', 'bottom'],\n};\n\nfunction buildPositions(preferred: TooltipPosition): ConnectedPosition[] {\n const primary = preferred.split('-')[0];\n const positions = [POSITION_MAP[preferred]];\n const fallbacks = FALLBACK_ORDER[primary] ?? FALLBACK_ORDER['top'];\n for (const fb of fallbacks) {\n positions.push(POSITION_MAP[fb]);\n }\n return positions;\n}\n\nfunction resolveArrowDirection(position: ConnectedPosition): ArrowDirection {\n if (position.overlayY === 'bottom') return 'bottom';\n if (position.overlayY === 'top') return 'top';\n if (position.overlayX === 'end') return 'right';\n return 'left';\n}\n\n/** Arrow position classes keyed by which side the arrow sits on. */\nconst ARROW_POSITION_CLASSES: Record<ArrowDirection, string> = {\n bottom: 'left-1/2 -translate-x-1/2 bottom-0 translate-y-1/2',\n top: 'left-1/2 -translate-x-1/2 top-0 -translate-y-1/2',\n right: 'top-1/2 -translate-y-1/2 right-0 translate-x-1/2',\n left: 'top-1/2 -translate-y-1/2 left-0 -translate-x-1/2',\n};\n\n// ── Internal overlay component (not exported) ──\n\nlet nextTooltipId = 0;\n\n@Component({\n selector: 'tw-tooltip-overlay',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'tooltip',\n '[id]': 'id',\n '[animate.enter]': '\"fade-in\"',\n '[animate.leave]': '\"fade-out\"',\n },\n imports: [NgTemplateOutlet],\n template: `\n <div [class]=\"wrapperClasses()\">\n <div [class]=\"panelClasses()\">\n @if (isTemplate()) {\n <ng-container *ngTemplateOutlet=\"templateContent()\" />\n } @else {\n {{ textContent() }}\n }\n </div>\n @if (showArrow()) {\n <span [class]=\"arrowClasses()\" aria-hidden=\"true\"></span>\n }\n </div>\n `,\n})\nclass TooltipOverlayComponent {\n readonly id = `tw-tooltip-${nextTooltipId++}`;\n\n readonly content = signal<string | TemplateRef<void>>('');\n readonly color = signal<TwColor>('neutral');\n readonly size = signal<TwSize>('md');\n readonly showArrow = signal(true);\n readonly arrowDirection = signal<ArrowDirection>('bottom');\n readonly panelClass = signal<string>('');\n\n readonly isTemplate = computed(\n () => this.content() instanceof TemplateRef,\n );\n readonly templateContent = computed(\n () => this.content() as TemplateRef<void>,\n );\n readonly textContent = computed(() => this.content() as string);\n\n private readonly variantResult = computed(() =>\n tooltipVariants({ color: this.color(), size: this.size() }),\n );\n\n readonly wrapperClasses = computed(() => this.variantResult().wrapper());\n readonly panelClasses = computed(() => {\n const consumer = this.panelClass();\n return this.variantResult().panel({ class: consumer });\n });\n readonly arrowClasses = computed(() => {\n const base = this.variantResult().arrow();\n const position = ARROW_POSITION_CLASSES[this.arrowDirection()];\n return `${base} ${position}`;\n });\n}\n\n// ── Tooltip directive ──\n\n@Directive({\n selector: '[twTooltip]',\n exportAs: 'twTooltip',\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'onFocusOut()',\n '(keydown.escape)': 'onEscape()',\n '(touchstart)': 'onTouchStart()',\n '(touchend)': 'onTouchEnd()',\n },\n})\nexport class TooltipDirective {\n /** The tooltip content. Strings render as text; TemplateRef renders via ngTemplateOutlet. */\n readonly twTooltip = input.required<string | TemplateRef<void>>();\n\n /** Preferred placement relative to the trigger. CDK handles fallback. Defaults to `'top'`. */\n readonly twTooltipPosition = input<TooltipPosition>('top');\n\n /** Semantic color palette for the tooltip. Defaults to `'neutral'`. */\n readonly twTooltipColor = input<TwColor>('neutral');\n\n /** Controls padding, font size, and maximum width. Defaults to `'md'`. */\n readonly twTooltipSize = input<TwSize>('md');\n\n /**\n * Milliseconds to wait before showing after trigger. Defaults to `200` — an\n * intent threshold: the trigger must be held long enough that the user reads\n * as \"wants the tooltip\" rather than a passing graze with the pointer.\n */\n readonly twTooltipShowDelay = input(200);\n\n /**\n * Milliseconds to wait before hiding after trigger ends. Defaults to `0`\n * (immediate dismiss). The asymmetry with `twTooltipShowDelay` is\n * intentional — show is gated to filter noise, hide is instant so the\n * tooltip never lingers over content the user has moved on from.\n */\n readonly twTooltipHideDelay = input(0);\n\n /** When true, tooltip never shows. Defaults to `false`. */\n readonly twTooltipDisabled = input(false);\n\n // Arrows reinforce the visual association between the floating panel and its trigger\n // and match every other ngx-tw overlay (popover/menu); opt-out is for compact iconic\n // contexts only.\n /** When true, renders an arrow pointing to the trigger. Defaults to `true`. */\n readonly twTooltipArrow = input(true);\n\n /** Optional class string (space-separated) merged into the panel slot for consumer customization. */\n readonly twTooltipPanelClass = input<string>('');\n\n /** Fires when the tooltip becomes visible. */\n readonly twTooltipShown = output<void>();\n\n /** Fires when the tooltip is fully hidden. */\n readonly twTooltipHidden = output<void>();\n\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n // CDK `AriaDescriber` owns a single hidden message-container on the document\n // and dedupes identical description strings — if two tooltips on the same\n // trigger advertise the same message, only one `aria-describedby` id is\n // appended. Mirrors the `sort-header` pattern.\n private readonly ariaDescriber = inject(AriaDescriber, { optional: true });\n\n private overlayRef: OverlayRef | null = null;\n private tooltipInstance: TooltipOverlayComponent | null = null;\n private showTimer: ReturnType<typeof setTimeout> | null = null;\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n /** Last description string handed to `AriaDescriber.describe` — required so the symmetrical `removeDescription` call passes the same key. */\n private _describedBy: string | null = null;\n /** True when the trigger's `aria-describedby` was set directly to the overlay id (TemplateRef fallback path); used by `removeAriaDescription` to choose the symmetrical teardown. */\n private _templateDescribedBy = false;\n\n constructor() {\n // Hide immediately when disabled changes to true\n effect(() => {\n if (this.twTooltipDisabled()) {\n this.detach();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n this.clearTimers();\n this.removeAriaDescription();\n this.disposeOverlay();\n });\n }\n\n /** Programmatically show the tooltip. */\n show(): void {\n if (this.twTooltipDisabled() || !this.twTooltip()) return;\n this.clearTimers();\n this.showTimer = setTimeout(\n () => this.createAndShow(),\n this.twTooltipShowDelay(),\n );\n }\n\n /** Programmatically hide the tooltip. */\n hide(): void {\n this.clearTimers();\n this.hideTimer = setTimeout(\n () => this.detach(),\n this.twTooltipHideDelay(),\n );\n }\n\n /** Toggle tooltip visibility. */\n toggle(): void {\n if (this.tooltipInstance) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n // ── Host event handlers ──\n\n protected onMouseEnter(): void {\n this.show();\n }\n\n protected onMouseLeave(): void {\n this.hide();\n }\n\n protected onFocusIn(): void {\n this.show();\n }\n\n protected onFocusOut(): void {\n this.hide();\n }\n\n protected onEscape(): void {\n if (this.tooltipInstance) {\n this.detach();\n }\n }\n\n protected onTouchStart(): void {\n this.show();\n }\n\n protected onTouchEnd(): void {\n this.hide();\n }\n\n // ── Private ──\n\n private createAndShow(): void {\n if (this.tooltipInstance) {\n this.updateTooltip();\n this.applyAriaDescription();\n return;\n }\n\n this.createOverlay();\n const portal = new ComponentPortal(TooltipOverlayComponent);\n const componentRef = this.overlayRef!.attach(portal);\n this.tooltipInstance = componentRef.instance;\n\n this.updateTooltip();\n this.applyAriaDescription();\n\n this.twTooltipShown.emit();\n }\n\n private createOverlay(): void {\n if (this.overlayRef) return;\n\n const positions = buildPositions(this.twTooltipPosition());\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n // Close on ancestor scroll — tooltips are transient and should not chase a\n // moving trigger across a scrolling viewport.\n scrollStrategy: this.overlay.scrollStrategies.close(),\n panelClass: 'tw-tooltip-panel',\n });\n\n positionStrategy.positionChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((change) => {\n if (this.tooltipInstance) {\n const dir = resolveArrowDirection(change.connectionPair);\n this.tooltipInstance.arrowDirection.set(dir);\n }\n });\n }\n\n private updateTooltip(): void {\n if (!this.tooltipInstance) return;\n this.tooltipInstance.content.set(this.twTooltip());\n this.tooltipInstance.color.set(this.twTooltipColor());\n this.tooltipInstance.size.set(this.twTooltipSize());\n this.tooltipInstance.showArrow.set(this.twTooltipArrow());\n this.tooltipInstance.panelClass.set(this.twTooltipPanelClass());\n }\n\n private detach(): void {\n this.clearTimers();\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n if (this.tooltipInstance) {\n this.removeAriaDescription();\n this.tooltipInstance = null;\n this.twTooltipHidden.emit();\n }\n }\n\n /**\n * Push the current tooltip content as an `aria-describedby` link on the\n * trigger element. Dual-mode wiring:\n *\n * - **String content**: routed through CDK `AriaDescriber.describe`, which\n * maintains a single hidden message-container on the document and dedupes\n * identical strings across all describers.\n * - **TemplateRef content**: AriaDescriber's dedup table is keyed by string,\n * so we fall back to a direct `setAttribute('aria-describedby', overlayId)`\n * pointing at the `role=\"tooltip\"` overlay. Without this fallback,\n * assistive tech would have no description link for templated tooltip\n * content.\n *\n * `_describedBy` tracks the string handed to `AriaDescriber`;\n * `_templateDescribedBy` is `true` when the fallback path is active so\n * `removeAriaDescription` can take the symmetrical teardown branch.\n */\n private applyAriaDescription(): void {\n const el = this.elementRef.nativeElement;\n const content = this.twTooltip();\n\n if (typeof content === 'string' && content.length > 0 && this.ariaDescriber) {\n // If we previously wired the template fallback (rare — content can swap\n // at runtime), tear it down before swapping to the describer path.\n if (this._templateDescribedBy) {\n el.removeAttribute('aria-describedby');\n this._templateDescribedBy = false;\n }\n if (this._describedBy && this._describedBy !== content) {\n this.ariaDescriber.removeDescription(el, this._describedBy);\n this._describedBy = null;\n }\n if (this._describedBy === content) return;\n this.ariaDescriber.describe(el, content);\n this._describedBy = content;\n return;\n }\n\n // Template / non-string fallback.\n if (this._describedBy && this.ariaDescriber) {\n this.ariaDescriber.removeDescription(el, this._describedBy);\n this._describedBy = null;\n }\n if (this.tooltipInstance) {\n el.setAttribute('aria-describedby', this.tooltipInstance.id);\n this._templateDescribedBy = true;\n }\n }\n\n private removeAriaDescription(): void {\n const el = this.elementRef.nativeElement;\n if (this._describedBy && this.ariaDescriber) {\n this.ariaDescriber.removeDescription(el, this._describedBy);\n this._describedBy = null;\n }\n if (this._templateDescribedBy) {\n el.removeAttribute('aria-describedby');\n this._templateDescribedBy = false;\n }\n }\n\n private disposeOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n this.tooltipInstance = null;\n }\n\n private clearTimers(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer);\n this.showTimer = null;\n }\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cdevhub-ngx-tw-tooltip.mjs","sources":["../../../projects/ngx-tw/tooltip/tooltip.ts","../../../projects/ngx-tw/tooltip/cdevhub-ngx-tw-tooltip.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n type ConnectedPosition,\n Overlay,\n type OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { AriaDescriber } from '@angular/cdk/a11y';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { tv } from 'tailwind-variants';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\n\n/** Placement position of the tooltip relative to its trigger element. */\nexport type TooltipPosition =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'right'\n | 'right-start'\n | 'right-end';\n\n/** Direction the arrow points toward (derived from resolved overlay position). */\ntype ArrowDirection = 'top' | 'bottom' | 'left' | 'right';\n\n// ── Variant config ──\n\nconst tooltipVariants = tv(\n {\n slots: {\n wrapper: 'relative pointer-events-none',\n panel: 'rounded-md shadow-md',\n arrow: 'absolute size-2 rotate-45',\n },\n variants: {\n color: {\n primary: {\n panel: 'bg-primary-700 text-on-primary',\n arrow: 'bg-primary-700',\n },\n secondary: {\n panel: 'bg-secondary-700 text-on-secondary',\n arrow: 'bg-secondary-700',\n },\n accent: {\n panel: 'bg-accent-700 text-on-accent',\n arrow: 'bg-accent-700',\n },\n neutral: {\n wrapper: 'drop-shadow-[0_0_0.5px_var(--color-border)] drop-shadow-sm',\n panel: 'bg-surface-overlay text-fg',\n arrow: 'bg-surface-overlay',\n },\n info: {\n panel: 'bg-info-700 text-on-info',\n arrow: 'bg-info-700',\n },\n success: {\n panel: 'bg-success-700 text-on-success',\n arrow: 'bg-success-700',\n },\n warning: {\n panel: 'bg-warning-700 text-on-warning',\n arrow: 'bg-warning-700',\n },\n error: {\n panel: 'bg-error-700 text-on-error',\n arrow: 'bg-error-700',\n },\n },\n size: {\n xs: {\n panel: 'px-1.5 py-0.5 text-2xs max-w-40',\n },\n sm: {\n panel: 'px-2 py-1 text-xs max-w-48',\n },\n md: {\n panel: 'px-3 py-1.5 text-sm max-w-xs',\n },\n lg: {\n panel: 'px-4 py-2 text-sm max-w-sm',\n },\n xl: {\n panel: 'px-4 py-2 text-base max-w-md',\n },\n },\n },\n defaultVariants: {\n color: 'neutral',\n size: 'md',\n },\n },\n { twMerge: true },\n);\n\n// ── Position mappings ──\n\nconst POSITION_MAP: Record<TooltipPosition, ConnectedPosition> = {\n top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-start': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-end': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-start': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-end': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -8,\n },\n 'left-start': {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -8,\n },\n 'left-end': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: -8,\n },\n right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 8,\n },\n 'right-start': {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 8,\n },\n 'right-end': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 8,\n },\n};\n\nconst FALLBACK_ORDER: Record<string, TooltipPosition[]> = {\n top: ['bottom', 'left', 'right'],\n bottom: ['top', 'left', 'right'],\n left: ['right', 'top', 'bottom'],\n right: ['left', 'top', 'bottom'],\n};\n\nfunction buildPositions(preferred: TooltipPosition): ConnectedPosition[] {\n const primary = preferred.split('-')[0];\n const positions = [POSITION_MAP[preferred]];\n const fallbacks = FALLBACK_ORDER[primary] ?? FALLBACK_ORDER['top'];\n for (const fb of fallbacks) {\n positions.push(POSITION_MAP[fb]);\n }\n return positions;\n}\n\nfunction resolveArrowDirection(position: ConnectedPosition): ArrowDirection {\n if (position.overlayY === 'bottom') return 'bottom';\n if (position.overlayY === 'top') return 'top';\n if (position.overlayX === 'end') return 'right';\n return 'left';\n}\n\n/** Arrow position classes keyed by which side the arrow sits on. */\nconst ARROW_POSITION_CLASSES: Record<ArrowDirection, string> = {\n bottom: 'left-1/2 -translate-x-1/2 bottom-0 translate-y-1/2',\n top: 'left-1/2 -translate-x-1/2 top-0 -translate-y-1/2',\n right: 'top-1/2 -translate-y-1/2 right-0 translate-x-1/2',\n left: 'top-1/2 -translate-y-1/2 left-0 -translate-x-1/2',\n};\n\n// ── Internal overlay component (not exported) ──\n\nlet nextTooltipId = 0;\n\n@Component({\n selector: 'tw-tooltip-overlay',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'tooltip',\n '[id]': 'id',\n '[animate.enter]': '\"fade-in\"',\n '[animate.leave]': '\"fade-out\"',\n },\n imports: [NgTemplateOutlet],\n template: `\n <div [class]=\"wrapperClasses()\">\n <div [class]=\"panelClasses()\">\n @if (isTemplate()) {\n <ng-container *ngTemplateOutlet=\"templateContent()\" />\n } @else {\n {{ textContent() }}\n }\n </div>\n @if (showArrow()) {\n <span [class]=\"arrowClasses()\" aria-hidden=\"true\"></span>\n }\n </div>\n `,\n})\nclass TooltipOverlayComponent {\n readonly id = `tw-tooltip-${nextTooltipId++}`;\n\n readonly content = signal<string | TemplateRef<void>>('');\n readonly color = signal<TwColor>('neutral');\n readonly size = signal<TwSize>('md');\n readonly showArrow = signal(true);\n readonly arrowDirection = signal<ArrowDirection>('bottom');\n readonly panelClass = signal<string>('');\n\n readonly isTemplate = computed(\n () => this.content() instanceof TemplateRef,\n );\n readonly templateContent = computed(\n () => this.content() as TemplateRef<void>,\n );\n readonly textContent = computed(() => this.content() as string);\n\n private readonly variantResult = computed(() =>\n tooltipVariants({ color: this.color(), size: this.size() }),\n );\n\n readonly wrapperClasses = computed(() => this.variantResult().wrapper());\n readonly panelClasses = computed(() => {\n const consumer = this.panelClass();\n return this.variantResult().panel({ class: consumer });\n });\n readonly arrowClasses = computed(() => {\n const base = this.variantResult().arrow();\n const position = ARROW_POSITION_CLASSES[this.arrowDirection()];\n return `${base} ${position}`;\n });\n}\n\n// ── Tooltip directive ──\n\n@Directive({\n selector: '[twTooltip]',\n exportAs: 'twTooltip',\n host: {\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'onFocusOut()',\n '(keydown.escape)': 'onEscape()',\n '(touchstart)': 'onTouchStart()',\n '(touchend)': 'onTouchEnd()',\n },\n})\nexport class TooltipDirective {\n /** The tooltip content. Strings render as text; TemplateRef renders via ngTemplateOutlet. */\n readonly twTooltip = input.required<string | TemplateRef<void>>();\n\n /** Preferred placement relative to the trigger. CDK handles fallback. Defaults to `'top'`. */\n readonly twTooltipPosition = input<TooltipPosition>('top');\n\n /** Semantic color palette for the tooltip. Defaults to `'neutral'`. */\n readonly twTooltipColor = input<TwColor>('neutral');\n\n /** Controls padding, font size, and maximum width. Defaults to `'md'`. */\n readonly twTooltipSize = input<TwSize>('md');\n\n /**\n * Milliseconds to wait before showing after trigger. Defaults to `200` — an\n * intent threshold: the trigger must be held long enough that the user reads\n * as \"wants the tooltip\" rather than a passing graze with the pointer.\n */\n readonly twTooltipShowDelay = input(200);\n\n /**\n * Milliseconds to wait before hiding after trigger ends. Defaults to `0`\n * (immediate dismiss). The asymmetry with `twTooltipShowDelay` is\n * intentional — show is gated to filter noise, hide is instant so the\n * tooltip never lingers over content the user has moved on from.\n */\n readonly twTooltipHideDelay = input(0);\n\n /** When true, tooltip never shows. Defaults to `false`. */\n readonly twTooltipDisabled = input(false);\n\n // Arrows reinforce the visual association between the floating panel and its trigger\n // and match every other ngx-tw overlay (popover/menu); opt-out is for compact iconic\n // contexts only.\n /** When true, renders an arrow pointing to the trigger. Defaults to `true`. */\n readonly twTooltipArrow = input(true);\n\n /** Optional class string (space-separated) merged into the panel slot for consumer customization. */\n readonly twTooltipPanelClass = input<string>('');\n\n /** Fires when the tooltip becomes visible. */\n readonly twTooltipShown = output<void>();\n\n /** Fires when the tooltip is fully hidden. */\n readonly twTooltipHidden = output<void>();\n\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n // CDK `AriaDescriber` owns a single hidden message-container on the document\n // and dedupes identical description strings — if two tooltips on the same\n // trigger advertise the same message, only one `aria-describedby` id is\n // appended. Mirrors the `sort-header` pattern.\n private readonly ariaDescriber = inject(AriaDescriber, { optional: true });\n\n private overlayRef: OverlayRef | null = null;\n private tooltipInstance: TooltipOverlayComponent | null = null;\n private showTimer: ReturnType<typeof setTimeout> | null = null;\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n /** Last description string handed to `AriaDescriber.describe` — required so the symmetrical `removeDescription` call passes the same key. */\n private _describedBy: string | null = null;\n /** True when the trigger's `aria-describedby` was set directly to the overlay id (TemplateRef fallback path); used by `removeAriaDescription` to choose the symmetrical teardown. */\n private _templateDescribedBy = false;\n\n constructor() {\n // Hide immediately when disabled changes to true\n effect(() => {\n if (this.twTooltipDisabled()) {\n this.detach();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n this.clearTimers();\n this.removeAriaDescription();\n this.disposeOverlay();\n });\n }\n\n /** Programmatically show the tooltip. */\n show(): void {\n if (this.twTooltipDisabled() || !this.twTooltip()) return;\n this.clearTimers();\n this.showTimer = setTimeout(\n () => this.createAndShow(),\n this.twTooltipShowDelay(),\n );\n }\n\n /** Programmatically hide the tooltip. */\n hide(): void {\n this.clearTimers();\n this.hideTimer = setTimeout(\n () => this.detach(),\n this.twTooltipHideDelay(),\n );\n }\n\n /** Toggle tooltip visibility. */\n toggle(): void {\n if (this.tooltipInstance) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n // ── Host event handlers ──\n\n protected onMouseEnter(): void {\n this.show();\n }\n\n protected onMouseLeave(): void {\n this.hide();\n }\n\n protected onFocusIn(): void {\n this.show();\n }\n\n protected onFocusOut(): void {\n this.hide();\n }\n\n protected onEscape(): void {\n if (this.tooltipInstance) {\n this.detach();\n }\n }\n\n protected onTouchStart(): void {\n this.show();\n }\n\n protected onTouchEnd(): void {\n this.hide();\n }\n\n // ── Private ──\n\n private createAndShow(): void {\n if (this.tooltipInstance) {\n this.updateTooltip();\n this.applyAriaDescription();\n return;\n }\n\n this.createOverlay();\n const portal = new ComponentPortal(TooltipOverlayComponent);\n const componentRef = this.overlayRef!.attach(portal);\n this.tooltipInstance = componentRef.instance;\n\n this.updateTooltip();\n this.applyAriaDescription();\n\n this.twTooltipShown.emit();\n }\n\n private createOverlay(): void {\n if (this.overlayRef) return;\n\n const positions = buildPositions(this.twTooltipPosition());\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(positions)\n .withPush(true)\n .withViewportMargin(8);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n // Close on ancestor scroll — tooltips are transient and should not chase a\n // moving trigger across a scrolling viewport.\n scrollStrategy: this.overlay.scrollStrategies.close(),\n panelClass: 'tw-tooltip-panel',\n });\n\n positionStrategy.positionChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((change) => {\n if (this.tooltipInstance) {\n const dir = resolveArrowDirection(change.connectionPair);\n this.tooltipInstance.arrowDirection.set(dir);\n }\n });\n }\n\n private updateTooltip(): void {\n if (!this.tooltipInstance) return;\n this.tooltipInstance.content.set(this.twTooltip());\n this.tooltipInstance.color.set(this.twTooltipColor());\n this.tooltipInstance.size.set(this.twTooltipSize());\n this.tooltipInstance.showArrow.set(this.twTooltipArrow());\n this.tooltipInstance.panelClass.set(this.twTooltipPanelClass());\n }\n\n private detach(): void {\n this.clearTimers();\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n if (this.tooltipInstance) {\n this.removeAriaDescription();\n this.tooltipInstance = null;\n this.twTooltipHidden.emit();\n }\n }\n\n /**\n * Push the current tooltip content as an `aria-describedby` link on the\n * trigger element. Dual-mode wiring:\n *\n * - **String content**: routed through CDK `AriaDescriber.describe`, which\n * maintains a single hidden message-container on the document and dedupes\n * identical strings across all describers.\n * - **TemplateRef content**: AriaDescriber's dedup table is keyed by string,\n * so we fall back to a direct `setAttribute('aria-describedby', overlayId)`\n * pointing at the `role=\"tooltip\"` overlay. Without this fallback,\n * assistive tech would have no description link for templated tooltip\n * content.\n *\n * `_describedBy` tracks the string handed to `AriaDescriber`;\n * `_templateDescribedBy` is `true` when the fallback path is active so\n * `removeAriaDescription` can take the symmetrical teardown branch.\n */\n private applyAriaDescription(): void {\n const el = this.elementRef.nativeElement;\n const content = this.twTooltip();\n\n if (typeof content === 'string' && content.length > 0 && this.ariaDescriber) {\n // If we previously wired the template fallback (rare — content can swap\n // at runtime), tear it down before swapping to the describer path.\n if (this._templateDescribedBy) {\n el.removeAttribute('aria-describedby');\n this._templateDescribedBy = false;\n }\n if (this._describedBy && this._describedBy !== content) {\n this.ariaDescriber.removeDescription(el, this._describedBy);\n this._describedBy = null;\n }\n if (this._describedBy === content) return;\n this.ariaDescriber.describe(el, content);\n this._describedBy = content;\n return;\n }\n\n // Template / non-string fallback.\n if (this._describedBy && this.ariaDescriber) {\n this.ariaDescriber.removeDescription(el, this._describedBy);\n this._describedBy = null;\n }\n if (this.tooltipInstance) {\n el.setAttribute('aria-describedby', this.tooltipInstance.id);\n this._templateDescribedBy = true;\n }\n }\n\n private removeAriaDescription(): void {\n const el = this.elementRef.nativeElement;\n if (this._describedBy && this.ariaDescriber) {\n this.ariaDescriber.removeDescription(el, this._describedBy);\n this._describedBy = null;\n }\n if (this._templateDescribedBy) {\n el.removeAttribute('aria-describedby');\n this._templateDescribedBy = false;\n }\n }\n\n private disposeOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n this.tooltipInstance = null;\n }\n\n private clearTimers(): void {\n if (this.showTimer !== null) {\n clearTimeout(this.showTimer);\n this.showTimer = null;\n }\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}