@radix-ng/primitives 1.0.0-beta.1 → 1.0.0-beta.3

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 (107) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +76 -6
  3. package/fesm2022/radix-ng-primitives-accordion.mjs +2 -2
  4. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +30 -24
  6. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-autocomplete.mjs +1786 -0
  8. package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
  9. package/fesm2022/radix-ng-primitives-calendar.mjs +14 -1
  10. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  11. package/fesm2022/radix-ng-primitives-checkbox.mjs +2 -2
  12. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-collapsible.mjs +1 -1
  14. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  15. package/fesm2022/radix-ng-primitives-combobox.mjs +1983 -0
  16. package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -0
  17. package/fesm2022/radix-ng-primitives-context-menu.mjs +1 -1
  18. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-core.mjs +480 -469
  20. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  21. package/fesm2022/radix-ng-primitives-cropper.mjs +1 -1
  22. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-date-field.mjs +11 -0
  24. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  25. package/fesm2022/radix-ng-primitives-dialog.mjs +44 -46
  26. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-drawer.mjs +154 -64
  28. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-editable.mjs +1 -1
  30. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  31. package/fesm2022/radix-ng-primitives-field.mjs +86 -6
  32. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  33. package/fesm2022/radix-ng-primitives-fieldset.mjs +1 -1
  34. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-focus-scope.mjs +1 -1
  36. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-form.mjs +207 -0
  38. package/fesm2022/radix-ng-primitives-form.mjs.map +1 -0
  39. package/fesm2022/radix-ng-primitives-input.mjs +85 -4
  40. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
  41. package/fesm2022/radix-ng-primitives-menu.mjs +44 -24
  42. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  43. package/fesm2022/radix-ng-primitives-menubar.mjs +1 -1
  44. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  45. package/fesm2022/radix-ng-primitives-meter.mjs +1 -1
  46. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +39 -55
  48. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-number-field.mjs +2 -2
  50. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  51. package/fesm2022/radix-ng-primitives-popover.mjs +36 -51
  52. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  53. package/fesm2022/radix-ng-primitives-popper.mjs +12 -6
  54. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
  56. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  57. package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
  58. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  59. package/fesm2022/radix-ng-primitives-preview-card.mjs +37 -51
  60. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  61. package/fesm2022/radix-ng-primitives-progress.mjs +1 -1
  62. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  63. package/fesm2022/radix-ng-primitives-roving-focus.mjs +1 -1
  64. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  65. package/fesm2022/radix-ng-primitives-scroll-area.mjs +3 -3
  66. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
  67. package/fesm2022/radix-ng-primitives-select.mjs +469 -258
  68. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  69. package/fesm2022/radix-ng-primitives-slider.mjs +1 -1
  70. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  71. package/fesm2022/radix-ng-primitives-switch.mjs +3 -2
  72. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  73. package/fesm2022/radix-ng-primitives-tabs.mjs +1 -1
  74. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  75. package/fesm2022/radix-ng-primitives-time-field.mjs +27 -3
  76. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  77. package/fesm2022/radix-ng-primitives-toast.mjs +1 -1
  78. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
  79. package/fesm2022/radix-ng-primitives-toggle-group.mjs +1 -1
  80. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  81. package/fesm2022/radix-ng-primitives-toolbar.mjs +2 -2
  82. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  83. package/fesm2022/radix-ng-primitives-tooltip.mjs +39 -42
  84. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  85. package/package.json +13 -1
  86. package/schematics/ng-add/index.js +57 -0
  87. package/schematics/ng-add/index.js.map +1 -1
  88. package/schematics/ng-add/schema.d.ts +1 -0
  89. package/schematics/ng-add/schema.json +6 -0
  90. package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
  91. package/types/radix-ng-primitives-autocomplete.d.ts +596 -0
  92. package/types/radix-ng-primitives-combobox.d.ts +1310 -0
  93. package/types/radix-ng-primitives-core.d.ts +148 -56
  94. package/types/radix-ng-primitives-dialog.d.ts +32 -25
  95. package/types/radix-ng-primitives-drawer.d.ts +49 -22
  96. package/types/radix-ng-primitives-field.d.ts +71 -2
  97. package/types/radix-ng-primitives-form.d.ts +124 -0
  98. package/types/radix-ng-primitives-input.d.ts +75 -5
  99. package/types/radix-ng-primitives-menu.d.ts +19 -10
  100. package/types/radix-ng-primitives-navigation-menu.d.ts +24 -26
  101. package/types/radix-ng-primitives-popover.d.ts +23 -23
  102. package/types/radix-ng-primitives-popper.d.ts +7 -1
  103. package/types/radix-ng-primitives-portal.d.ts +53 -8
  104. package/types/radix-ng-primitives-presence.d.ts +98 -17
  105. package/types/radix-ng-primitives-preview-card.d.ts +24 -23
  106. package/types/radix-ng-primitives-select.d.ts +294 -137
  107. package/types/radix-ng-primitives-tooltip.d.ts +26 -19
@@ -1,15 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, signal, numberAttribute, DestroyRef, input, Directive, model, booleanAttribute, output, computed, effect, untracked, ElementRef, afterNextRender } from '@angular/core';
2
+ import { InjectionToken, inject, signal, numberAttribute, DestroyRef, input, Directive, model, booleanAttribute, output, computed, effect, untracked, isDevMode, ElementRef, afterNextRender } from '@angular/core';
3
3
  import { createContext, injectId, watch, useGraceArea } from '@radix-ng/primitives/core';
4
4
  import * as i1 from '@radix-ng/primitives/popper';
5
5
  import { RdxPopper, RdxPopperContentWrapper, RdxPopperArrow, RdxPopperContent, provideRdxPopperContentConfig, RdxPopperAnchor } from '@radix-ng/primitives/popper';
6
6
  import { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';
7
7
  import * as i1$1 from '@radix-ng/primitives/portal';
8
- import { RdxPortal } from '@radix-ng/primitives/portal';
9
- import * as i1$2 from '@radix-ng/primitives/presence';
10
- import { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';
8
+ import { RdxPortalPresence } from '@radix-ng/primitives/portal';
9
+ import { provideRdxPresenceContext } from '@radix-ng/primitives/presence';
11
10
  import { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';
12
- import * as i1$3 from '@radix-ng/primitives/dismissable-layer';
11
+ import * as i1$2 from '@radix-ng/primitives/dismissable-layer';
13
12
  import { RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';
14
13
 
15
14
  const defaultTooltipConfig = {
@@ -79,7 +78,7 @@ function useTimeoutFn(cb, delay, options = {}, destroyRef) {
79
78
  return { start, stop, isPending: () => id != null };
80
79
  }
81
80
 
82
- const [injectRdxTooltipProviderContext, provideRdxTooltipProviderContext] = createContext('RdxTooltipProviderContext');
81
+ const [injectRdxTooltipProviderContext, provideRdxTooltipProviderContext] = createContext('RdxTooltipProviderContext', 'components/tooltip');
83
82
  const numberOrUndefined = (value) => (value == null ? undefined : numberAttribute(value));
84
83
  const providerContext = () => {
85
84
  const provider = inject(RdxTooltipProvider);
@@ -125,7 +124,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
125
124
  }]
126
125
  }], propDecorators: { delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], timeout: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeout", required: false }] }] } });
127
126
 
128
- const [injectRdxTooltipContext, provideRdxTooltipContext] = createContext('RdxTooltipContext');
127
+ const [injectRdxTooltipContext, provideRdxTooltipContext] = createContext('RdxTooltipContext', 'components/tooltip');
129
128
  const context = () => contextFor(inject(RdxTooltip));
130
129
  class RdxTooltip {
131
130
  constructor() {
@@ -423,50 +422,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
423
422
  }] });
424
423
 
425
424
  /**
426
- * Moves the tooltip to a different part of the DOM.
425
+ * Structural directive that teleports the tooltip content into a container (default `document.body`)
426
+ * while the tooltip is open, and keeps it mounted until any CSS exit `@keyframes` finishes.
427
+ *
428
+ * Apply it with the `*` microsyntax on the positioner — `<div *rdxTooltipPortal rdxTooltipPositioner>`
429
+ * — or as an explicit `<ng-template rdxTooltipPortal>`. For a custom container use the explicit form
430
+ * with `[container]`.
427
431
  */
428
432
  class RdxTooltipPortal {
429
- constructor() {
430
- this.container = input.required(...(ngDevMode ? [{ debugName: "container" }] : /* istanbul ignore next */ []));
431
- }
432
433
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
433
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxTooltipPortal, isStandalone: true, selector: "[rdxTooltipPortal]", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1$1.RdxPortal, inputs: ["container", "container"] }], ngImport: i0 }); }
434
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxTooltipPortal, isStandalone: true, selector: "ng-template[rdxTooltipPortal]", providers: [provideRdxPresenceContext(() => ({ present: injectRdxTooltipContext().isOpen }))], exportAs: ["rdxTooltipPortal"], hostDirectives: [{ directive: i1$1.RdxPortalPresence, inputs: ["container", "container"] }], ngImport: i0 }); }
434
435
  }
435
436
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPortal, decorators: [{
436
437
  type: Directive,
437
438
  args: [{
438
- selector: '[rdxTooltipPortal]',
439
- hostDirectives: [
440
- {
441
- directive: RdxPortal,
442
- inputs: ['container']
443
- }
444
- ]
439
+ selector: 'ng-template[rdxTooltipPortal]',
440
+ exportAs: 'rdxTooltipPortal',
441
+ hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],
442
+ providers: [provideRdxPresenceContext(() => ({ present: injectRdxTooltipContext().isOpen }))]
445
443
  }]
446
- }], propDecorators: { container: [{ type: i0.Input, args: [{ isSignal: true, alias: "container", required: true }] }] } });
447
-
448
- class RdxTooltipPortalPresence {
449
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPortalPresence, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
450
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxTooltipPortalPresence, isStandalone: true, selector: "ng-template[rdxTooltipPortalPresence]", providers: [
451
- provideRdxPresenceContext(() => {
452
- const context = injectRdxTooltipContext();
453
- return { present: context.isOpen };
454
- })
455
- ], hostDirectives: [{ directive: i1$2.RdxPresenceDirective }], ngImport: i0 }); }
444
+ }] });
445
+ /**
446
+ * Dev-mode guard: `rdxTooltipPortal` used to be an attribute directive on a `<div>`. It is now
447
+ * structural, so the old `<div rdxTooltipPortal>` markup would silently stop portaling fail loudly
448
+ * instead.
449
+ */
450
+ class RdxTooltipPortalMisuseGuard {
451
+ constructor() {
452
+ if (isDevMode()) {
453
+ throw new Error('[rdxTooltipPortal] is now a structural directive. ' +
454
+ 'Use `*rdxTooltipPortal` on the positioner element or `<ng-template rdxTooltipPortal>`. ' +
455
+ 'rdxTooltipPortalPresence has been removed. See https://radix-ng.com/components/tooltip.md');
456
+ }
457
+ }
458
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPortalMisuseGuard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
459
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: RdxTooltipPortalMisuseGuard, isStandalone: true, selector: "[rdxTooltipPortal]:not(ng-template)", ngImport: i0 }); }
456
460
  }
457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPortalPresence, decorators: [{
461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPortalMisuseGuard, decorators: [{
458
462
  type: Directive,
459
463
  args: [{
460
- selector: 'ng-template[rdxTooltipPortalPresence]',
461
- hostDirectives: [RdxPresenceDirective],
462
- providers: [
463
- provideRdxPresenceContext(() => {
464
- const context = injectRdxTooltipContext();
465
- return { present: context.isOpen };
466
- })
467
- ]
464
+ selector: '[rdxTooltipPortal]:not(ng-template)'
468
465
  }]
469
- }] });
466
+ }], ctorParameters: () => [] });
470
467
 
471
468
  /**
472
469
  * Positions the tooltip popup against its trigger (or a custom anchor).
@@ -577,7 +574,7 @@ class RdxTooltipPositioner {
577
574
  effect(() => this.wrapper.nonInteractive.set(this.rootContext.trackCursorAxis() !== 'none'));
578
575
  }
579
576
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPositioner, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
580
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxTooltipPositioner, isStandalone: true, selector: "[rdxTooltipPositioner]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, alignOffset: { classPropertyName: "alignOffset", publicName: "alignOffset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, avoidCollisions: { classPropertyName: "avoidCollisions", publicName: "avoidCollisions", isSignal: true, isRequired: false, transformFunction: null }, collisionBoundary: { classPropertyName: "collisionBoundary", publicName: "collisionBoundary", isSignal: true, isRequired: false, transformFunction: null }, collisionPadding: { classPropertyName: "collisionPadding", publicName: "collisionPadding", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, hideWhenDetached: { classPropertyName: "hideWhenDetached", publicName: "hideWhenDetached", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, updatePositionStrategy: { classPropertyName: "updatePositionStrategy", publicName: "updatePositionStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placed: "placed", escapeKeyDown: "escapeKeyDown", pointerDownOutside: "pointerDownOutside" }, host: { properties: { "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-side": "wrapper.placedSide()", "attr.data-align": "wrapper.placedAlign()", "style": "{\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)'\n }" } }, providers: [provideRdxPopperContentConfig({ side: 'top', arrowPadding: 5, collisionPadding: 5 })], hostDirectives: [{ directive: i1$3.RdxDismissableLayer }, { directive: i1.RdxPopperContentWrapper, inputs: ["anchor", "anchor", "side", "side", "sideOffset", "sideOffset", "align", "align", "alignOffset", "alignOffset", "arrowPadding", "arrowPadding", "avoidCollisions", "avoidCollisions", "collisionBoundary", "collisionBoundary", "collisionPadding", "collisionPadding", "sticky", "sticky", "hideWhenDetached", "hideWhenDetached", "positionStrategy", "positionStrategy", "updatePositionStrategy", "updatePositionStrategy"] }], ngImport: i0 }); }
577
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: RdxTooltipPositioner, isStandalone: true, selector: "[rdxTooltipPositioner]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, alignOffset: { classPropertyName: "alignOffset", publicName: "alignOffset", isSignal: true, isRequired: false, transformFunction: null }, arrowPadding: { classPropertyName: "arrowPadding", publicName: "arrowPadding", isSignal: true, isRequired: false, transformFunction: null }, avoidCollisions: { classPropertyName: "avoidCollisions", publicName: "avoidCollisions", isSignal: true, isRequired: false, transformFunction: null }, collisionBoundary: { classPropertyName: "collisionBoundary", publicName: "collisionBoundary", isSignal: true, isRequired: false, transformFunction: null }, collisionPadding: { classPropertyName: "collisionPadding", publicName: "collisionPadding", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, hideWhenDetached: { classPropertyName: "hideWhenDetached", publicName: "hideWhenDetached", isSignal: true, isRequired: false, transformFunction: null }, positionStrategy: { classPropertyName: "positionStrategy", publicName: "positionStrategy", isSignal: true, isRequired: false, transformFunction: null }, updatePositionStrategy: { classPropertyName: "updatePositionStrategy", publicName: "updatePositionStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placed: "placed", escapeKeyDown: "escapeKeyDown", pointerDownOutside: "pointerDownOutside" }, host: { properties: { "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-side": "wrapper.placedSide()", "attr.data-align": "wrapper.placedAlign()", "style": "{\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)'\n }" } }, providers: [provideRdxPopperContentConfig({ side: 'top', arrowPadding: 5, collisionPadding: 5 })], hostDirectives: [{ directive: i1$2.RdxDismissableLayer }, { directive: i1.RdxPopperContentWrapper, inputs: ["anchor", "anchor", "side", "side", "sideOffset", "sideOffset", "align", "align", "alignOffset", "alignOffset", "arrowPadding", "arrowPadding", "avoidCollisions", "avoidCollisions", "collisionBoundary", "collisionBoundary", "collisionPadding", "collisionPadding", "sticky", "sticky", "hideWhenDetached", "hideWhenDetached", "positionStrategy", "positionStrategy", "updatePositionStrategy", "updatePositionStrategy"] }], ngImport: i0 }); }
581
578
  }
582
579
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxTooltipPositioner, decorators: [{
583
580
  type: Directive,
@@ -813,7 +810,7 @@ const tooltipImports = [
813
810
  RdxTooltipArrow,
814
811
  RdxTooltipPopup,
815
812
  RdxTooltipPortal,
816
- RdxTooltipPortalPresence,
813
+ RdxTooltipPortalMisuseGuard,
817
814
  RdxTooltipPositioner,
818
815
  RdxTooltipProvider,
819
816
  RdxTooltipTrigger
@@ -823,5 +820,5 @@ const tooltipImports = [
823
820
  * Generated bundle index. Do not edit.
824
821
  */
825
822
 
826
- export { RdxTooltip, RdxTooltipArrow, RdxTooltipDefaultsToken, RdxTooltipHandle, RdxTooltipPopup, RdxTooltipPortal, RdxTooltipPortalPresence, RdxTooltipPositioner, RdxTooltipProvider, RdxTooltipTrigger, createRdxTooltipHandle, defaultTooltipConfig, injectRdxTooltipConfig, injectRdxTooltipContext, injectRdxTooltipProviderContext, provideRdxTooltipConfig, provideRdxTooltipContext, provideRdxTooltipProviderContext, tooltipImports };
823
+ export { RdxTooltip, RdxTooltipArrow, RdxTooltipDefaultsToken, RdxTooltipHandle, RdxTooltipPopup, RdxTooltipPortal, RdxTooltipPortalMisuseGuard, RdxTooltipPositioner, RdxTooltipProvider, RdxTooltipTrigger, createRdxTooltipHandle, defaultTooltipConfig, injectRdxTooltipConfig, injectRdxTooltipContext, injectRdxTooltipProviderContext, provideRdxTooltipConfig, provideRdxTooltipContext, provideRdxTooltipProviderContext, tooltipImports };
827
824
  //# sourceMappingURL=radix-ng-primitives-tooltip.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radix-ng-primitives-tooltip.mjs","sources":["../../../packages/primitives/tooltip/src/tooltip.config.ts","../../../packages/primitives/tooltip/src/utils.ts","../../../packages/primitives/tooltip/src/tooltip-provider.ts","../../../packages/primitives/tooltip/src/tooltip.ts","../../../packages/primitives/tooltip/src/tooltip-arrow.ts","../../../packages/primitives/tooltip/src/tooltip-popup.ts","../../../packages/primitives/tooltip/src/tooltip-portal.ts","../../../packages/primitives/tooltip/src/tooltip-portal-presence.ts","../../../packages/primitives/tooltip/src/tooltip-positioner.ts","../../../packages/primitives/tooltip/src/tooltip-trigger.ts","../../../packages/primitives/tooltip/src/tooltip-handle.ts","../../../packages/primitives/tooltip/index.ts","../../../packages/primitives/tooltip/radix-ng-primitives-tooltip.ts"],"sourcesContent":["import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport type RdxTrackCursorAxis = 'none' | 'x' | 'y' | 'both';\n\nexport type RdxTooltipConfig = {\n /**\n * How long to wait before opening the tooltip. Specified in milliseconds.\n * @defaultValue 600\n */\n delay?: number;\n /**\n * How long to wait before closing the tooltip. Specified in milliseconds.\n * @defaultValue 0\n */\n closeDelay?: number;\n /**\n * Another tooltip within the same provider opens instantly when this window\n * has not yet elapsed since the previous one closed. Specified in milliseconds.\n * @defaultValue 400\n */\n timeout?: number;\n /**\n * When `true`, the tooltip closes as the pointer leaves the trigger instead of\n * staying open while the pointer moves over the popup.\n * @defaultValue false\n */\n disableHoverablePopup?: boolean;\n};\n\nexport const defaultTooltipConfig: Required<RdxTooltipConfig> = {\n delay: 600,\n closeDelay: 0,\n timeout: 400,\n disableHoverablePopup: false\n};\n\nexport const RdxTooltipDefaultsToken = new InjectionToken<RdxTooltipConfig>('RdxTooltipDefaultsToken');\n\nexport function provideRdxTooltipConfig(config: Partial<RdxTooltipConfig>): Provider[] {\n return [\n {\n provide: RdxTooltipDefaultsToken,\n useValue: { ...defaultTooltipConfig, ...config }\n }\n ];\n}\n\nexport function injectRdxTooltipConfig(): Required<RdxTooltipConfig> {\n return { ...defaultTooltipConfig, ...inject(RdxTooltipDefaultsToken, { optional: true }) };\n}\n","import { DestroyRef, signal, Signal } from '@angular/core';\n\nexport type TimeoutController = {\n start: () => void;\n stop: () => void;\n isPending: () => boolean;\n};\n\nexport type TooltipInstantController = {\n /** Whether the next tooltip in the group should open without waiting for the delay. */\n isInstant: Signal<boolean>;\n /** Call when a tooltip opens — leaves the group in the instant phase. */\n onOpen: () => void;\n /** Call when a tooltip closes — keeps the group instant for `timeout` ms, then re-arms the delay. */\n onClose: () => void;\n};\n\n/**\n * Tracks the shared \"instant\" window for a group of tooltips. Once one tooltip\n * opens, sibling tooltips open instantly until `timeout` ms after the last close.\n */\nexport function createTooltipInstantController(\n timeout: () => number,\n destroyRef?: DestroyRef\n): TooltipInstantController {\n const instant = signal(false);\n\n const timer = useTimeoutFn(() => instant.set(false), timeout, { immediate: false }, destroyRef);\n\n return {\n isInstant: instant.asReadonly(),\n onOpen: () => {\n timer.stop();\n instant.set(true);\n },\n onClose: () => {\n timer.start();\n }\n };\n}\n\nexport function useTimeoutFn(\n cb: () => void,\n delay: number | (() => number),\n options: { immediate?: boolean } = {},\n destroyRef?: DestroyRef\n): TimeoutController {\n let id: number | null = null;\n\n const resolveDelay = () => (typeof delay === 'function' ? delay() : delay);\n\n const stop = () => {\n if (id != null) {\n clearTimeout(id);\n id = null;\n }\n };\n\n const start = () => {\n stop();\n const ms = resolveDelay();\n if (ms <= 0) {\n queueMicrotask(cb);\n return;\n }\n id = window.setTimeout(() => {\n id = null;\n cb();\n }, ms);\n };\n\n if (options.immediate) {\n start();\n }\n if (destroyRef) {\n destroyRef.onDestroy(stop);\n }\n\n return { start, stop, isPending: () => id != null };\n}\n","import { DestroyRef, Directive, inject, input, numberAttribute, Signal } from '@angular/core';\nimport { createContext, NumberInput } from '@radix-ng/primitives/core';\nimport { injectRdxTooltipConfig } from './tooltip.config';\nimport { createTooltipInstantController } from './utils';\n\nexport interface RdxTooltipProviderContext {\n /** Default open delay for tooltips in this group, in milliseconds. */\n delay: Signal<number | undefined>;\n /** Default close delay for tooltips in this group, in milliseconds. */\n closeDelay: Signal<number | undefined>;\n /** Whether sibling tooltips should currently open instantly. */\n isInstant: Signal<boolean>;\n /** Notifies the group that a tooltip has opened. */\n onOpen: () => void;\n /** Notifies the group that a tooltip has closed. */\n onClose: () => void;\n}\n\nexport const [injectRdxTooltipProviderContext, provideRdxTooltipProviderContext] =\n createContext<RdxTooltipProviderContext>('RdxTooltipProviderContext');\n\nconst numberOrUndefined = (value: NumberInput | undefined) => (value == null ? undefined : numberAttribute(value));\n\nconst providerContext = (): RdxTooltipProviderContext => {\n const provider = inject(RdxTooltipProvider);\n\n return {\n delay: provider.delay,\n closeDelay: provider.closeDelay,\n isInstant: provider.instant.isInstant,\n onOpen: () => provider.instant.onOpen(),\n onClose: () => provider.instant.onClose()\n };\n};\n\n/**\n * Shares delay configuration and an instant-open window across a group of tooltips.\n * Once one tooltip opens, adjacent ones open instantly until `timeout` ms after the last close.\n */\n@Directive({\n selector: '[rdxTooltipProvider]',\n exportAs: 'rdxTooltipProvider',\n providers: [provideRdxTooltipProviderContext(providerContext)]\n})\nexport class RdxTooltipProvider {\n private readonly defaultConfig = injectRdxTooltipConfig();\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * How long to wait before opening tooltips in this group. Specified in milliseconds.\n */\n readonly delay = input<number | undefined, NumberInput | undefined>(undefined, { transform: numberOrUndefined });\n\n /**\n * How long to wait before closing tooltips in this group. Specified in milliseconds.\n */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: numberOrUndefined\n });\n\n /**\n * The window during which an adjacent tooltip opens instantly. Specified in milliseconds.\n */\n readonly timeout = input<number, NumberInput>(this.defaultConfig.timeout, { transform: numberAttribute });\n\n readonly instant = createTooltipInstantController(() => this.timeout(), this.destroyRef);\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport type { ReferenceElement } from '@floating-ui/dom';\nimport { BooleanInput, createContext, injectId, NumberInput, watch } from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\nimport { RdxTooltipHandle } from './tooltip-handle';\nimport { injectRdxTooltipProviderContext } from './tooltip-provider';\nimport { injectRdxTooltipConfig, RdxTrackCursorAxis } from './tooltip.config';\nimport { createTooltipInstantController, TooltipInstantController, useTimeoutFn } from './utils';\n\nexport interface RdxTooltipContext {\n contentId: string;\n isOpen: Signal<boolean>;\n /** Whether the tooltip opened/closed without waiting for the delay. */\n instant: Signal<boolean>;\n disabled: Signal<boolean>;\n disableHoverablePopup: Signal<boolean>;\n trackCursorAxis: Signal<RdxTrackCursorAxis>;\n /** The active trigger element. */\n trigger: Signal<HTMLElement | undefined>;\n triggers: Signal<HTMLElement[]>;\n payload: Signal<unknown>;\n open: (trigger?: HTMLElement, payload?: unknown) => void;\n close: () => void;\n /** Closes after the resolved close delay (used when hover/focus is lost). */\n closeDelayed: () => void;\n registerTrigger: (trigger: HTMLElement) => () => void;\n /** Hover entered a trigger — opens after the resolved delay (or instantly). */\n onTriggerEnter: (trigger?: HTMLElement, payload?: unknown) => void;\n /** Hover left a trigger — cancels a pending open and closes when appropriate. */\n onTriggerLeave: () => void;\n setCursorPosition: (position: { x: number; y: number } | undefined) => void;\n setDelays: (delay: number | undefined, closeDelay: number | undefined) => void;\n}\n\nexport const [injectRdxTooltipContext, provideRdxTooltipContext] =\n createContext<RdxTooltipContext>('RdxTooltipContext');\n\nconst context = () => contextFor(inject(RdxTooltip));\n\n@Directive({\n selector: '[rdxTooltip]',\n exportAs: 'rdxTooltip',\n providers: [provideRdxTooltipContext(context)],\n hostDirectives: [RdxPopper]\n})\nexport class RdxTooltip {\n private readonly defaultConfig = injectRdxTooltipConfig();\n private readonly provider = injectRdxTooltipProviderContext(true);\n private readonly popper = inject(RdxPopper);\n private readonly destroyRef = inject(DestroyRef);\n private hasAppliedDefaultOpen = false;\n\n /**\n * Whether the tooltip is currently open.\n */\n readonly open = model(false);\n\n /**\n * Whether the tooltip is initially open. Uncontrolled.\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * How long to wait before opening the tooltip. Specified in milliseconds.\n * Falls back to the surrounding provider, then to the global config.\n */\n readonly delay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n /**\n * How long to wait before closing the tooltip. Specified in milliseconds.\n */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n /**\n * When `true`, the tooltip closes as the pointer leaves the trigger instead of\n * staying open while the pointer moves over the popup.\n */\n readonly disableHoverablePopup = input<boolean, BooleanInput>(this.defaultConfig.disableHoverablePopup, {\n transform: booleanAttribute\n });\n\n /**\n * Determines which axis the tooltip should track the cursor on.\n */\n readonly trackCursorAxis = input<RdxTrackCursorAxis>('none');\n\n /**\n * When `true`, the tooltip will not open.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates this root with detached trigger elements.\n */\n readonly handle = input<RdxTooltipHandle<any>>();\n\n /**\n * Event handler called when the open state changes.\n */\n readonly onOpenChange = output<boolean>();\n\n readonly contentId = injectId('rdx-tooltip-content-');\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly payload = signal<unknown>(undefined);\n readonly cursorPosition = signal<{ x: number; y: number } | undefined>(undefined);\n\n private readonly openedInstant = signal(false);\n\n /** Local instant window used when this tooltip is not inside a provider. */\n private readonly localInstant: TooltipInstantController = createTooltipInstantController(\n () => this.defaultConfig.timeout,\n this.destroyRef\n );\n\n private readonly instantGroup = this.provider ?? this.localInstant;\n\n /** Per-trigger overrides set by the active trigger, taking precedence over the root/provider. */\n private readonly triggerDelay = signal<number | undefined>(undefined);\n private readonly triggerCloseDelay = signal<number | undefined>(undefined);\n\n private readonly resolvedDelay = computed(\n () => this.triggerDelay() ?? this.delay() ?? this.provider?.delay() ?? this.defaultConfig.delay\n );\n private readonly resolvedCloseDelay = computed(\n () =>\n this.triggerCloseDelay() ??\n this.closeDelay() ??\n this.provider?.closeDelay() ??\n this.defaultConfig.closeDelay\n );\n\n /** Whether the most recent open happened without the delay. */\n readonly instant = this.openedInstant.asReadonly();\n\n private readonly virtualAnchor = computed<ReferenceElement | undefined>(() => {\n const axis = this.trackCursorAxis();\n const element = this.trigger();\n\n if (axis === 'none' || !element) {\n return element;\n }\n\n const position = this.cursorPosition();\n\n if (!position) {\n return element;\n }\n\n const followX = axis === 'x' || axis === 'both';\n const followY = axis === 'y' || axis === 'both';\n\n return {\n getBoundingClientRect: () => {\n const rect = element.getBoundingClientRect();\n const width = followX ? 0 : rect.width;\n const height = followY ? 0 : rect.height;\n const x = followX ? position.x : rect.x;\n const y = followY ? position.y : rect.y;\n\n return { width, height, x, y, top: y, left: x, right: x + width, bottom: y + height };\n }\n };\n });\n\n private readonly openTimer = useTimeoutFn(\n () => this.applyOpen(false),\n () => this.resolvedDelay(),\n { immediate: false },\n this.destroyRef\n );\n\n private readonly closeTimer = useTimeoutFn(\n () => this.applyClose(),\n () => this.resolvedCloseDelay(),\n { immediate: false },\n this.destroyRef\n );\n\n constructor() {\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(untracked(() => handle.registerRoot(contextFor(this))));\n }\n });\n\n // Keep the popper anchored to the active trigger, or to the cursor while tracking.\n effect(() => this.popper.anchorOverride.set(this.virtualAnchor()));\n\n watch(\n [this.open],\n ([isOpen]) => {\n this.onOpenChange.emit(isOpen);\n\n if (isOpen) {\n this.instantGroup.onOpen();\n } else {\n this.instantGroup.onClose();\n this.openedInstant.set(false);\n }\n },\n { defer: true }\n );\n }\n\n /** Opens immediately, optionally switching the active trigger/payload. */\n show(trigger = this.trigger(), payload?: unknown) {\n this.applyOpen(true, trigger, payload);\n }\n\n close() {\n this.openTimer.stop();\n this.closeTimer.stop();\n this.applyClose();\n }\n\n /** Closes after the resolved close delay, e.g. when the pointer or focus leaves. */\n scheduleClose() {\n this.openTimer.stop();\n\n if (this.resolvedCloseDelay() <= 0) {\n this.applyClose();\n } else {\n this.closeTimer.start();\n }\n }\n\n /** Hover/focus entered — open after the delay, or instantly within the instant window. */\n onTriggerEnter(trigger = this.trigger(), payload?: unknown) {\n if (this.disabled()) {\n return;\n }\n\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n this.payload.set(payload);\n this.closeTimer.stop();\n\n if (this.instantGroup.isInstant() || this.resolvedDelay() <= 0) {\n this.applyOpen(true, trigger, payload);\n } else {\n this.openTimer.start();\n }\n }\n\n onTriggerLeave() {\n this.openTimer.stop();\n\n if (this.disableHoverablePopup()) {\n this.scheduleClose();\n }\n // Otherwise the positioner's grace area decides when to close.\n }\n\n registerTrigger(trigger: HTMLElement) {\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n\n if (!this.trigger()) {\n this.trigger.set(trigger);\n }\n\n return () => {\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n\n if (this.trigger() === trigger) {\n const nextTrigger = this.triggers()[0];\n this.trigger.set(nextTrigger);\n\n if (!nextTrigger && !this.destroyRef.destroyed) {\n this.applyClose();\n }\n }\n };\n }\n\n setCursorPosition(position: { x: number; y: number } | undefined) {\n this.cursorPosition.set(position);\n }\n\n /** Applies per-trigger delay overrides from the trigger that is becoming active. */\n setDelays(delay: number | undefined, closeDelay: number | undefined) {\n this.triggerDelay.set(delay);\n this.triggerCloseDelay.set(closeDelay);\n }\n\n private applyOpen(instant: boolean, trigger = this.trigger(), payload?: unknown) {\n if (this.disabled()) {\n return;\n }\n\n this.openTimer.stop();\n this.closeTimer.stop();\n\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (payload !== undefined) {\n this.payload.set(payload);\n }\n\n this.openedInstant.set(instant || this.instantGroup.isInstant());\n this.open.set(true);\n }\n\n private applyClose() {\n this.openedInstant.set(this.instantGroup.isInstant());\n this.open.set(false);\n }\n}\n\nfunction contextFor(root: RdxTooltip): RdxTooltipContext {\n return {\n contentId: root.contentId,\n isOpen: root.open,\n instant: root.instant,\n disabled: root.disabled,\n disableHoverablePopup: root.disableHoverablePopup,\n trackCursorAxis: root.trackCursorAxis,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n payload: root.payload.asReadonly(),\n open: (trigger?: HTMLElement, payload?: unknown) => root.show(trigger, payload),\n close: () => root.close(),\n closeDelayed: () => root.scheduleClose(),\n registerTrigger: (trigger: HTMLElement) => root.registerTrigger(trigger),\n onTriggerEnter: (trigger?: HTMLElement, payload?: unknown) => root.onTriggerEnter(trigger, payload),\n onTriggerLeave: () => root.onTriggerLeave(),\n setCursorPosition: (position) => root.setCursorPosition(position),\n setDelays: (delay, closeDelay) => root.setDelays(delay, closeDelay)\n };\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperArrow, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';\nimport { injectRdxTooltipContext } from './tooltip';\n\n@Directive({\n selector: '[rdxTooltipArrow]',\n hostDirectives: [RdxPopperArrow],\n host: {\n '[hidden]': 'isVisuallyHidden',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()',\n '[attr.data-uncentered]': 'uncentered() ? \"\" : undefined'\n }\n})\nexport class RdxTooltipArrow {\n protected readonly rootContext = injectRdxTooltipContext();\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n protected readonly uncentered = computed(() => this.wrapper?.arrowUncentered() ?? false);\n\n protected readonly isVisuallyHidden = !!inject(RdxVisuallyHiddenDirective, {\n optional: true\n });\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperContent, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectRdxTooltipContext } from './tooltip';\n\n/**\n * The tooltip popup. Renders the content with `role=\"tooltip\"`.\n */\n@Directive({\n selector: '[rdxTooltipPopup]',\n hostDirectives: [RdxPopperContent],\n host: {\n role: 'tooltip',\n '[id]': 'rootContext.contentId',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()'\n }\n})\nexport class RdxTooltipPopup {\n protected readonly rootContext = injectRdxTooltipContext();\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n}\n","import { Directive, input } from '@angular/core';\nimport { RdxPortal, RdxPortalContainer } from '@radix-ng/primitives/portal';\n\n/**\n * Moves the tooltip to a different part of the DOM.\n */\n@Directive({\n selector: '[rdxTooltipPortal]',\n hostDirectives: [\n {\n directive: RdxPortal,\n inputs: ['container']\n }\n ]\n})\nexport class RdxTooltipPortal {\n readonly container = input.required<RdxPortalContainer>();\n}\n","import { Directive } from '@angular/core';\nimport { provideRdxPresenceContext, RdxPresenceDirective } from '@radix-ng/primitives/presence';\nimport { injectRdxTooltipContext } from './tooltip';\n\n@Directive({\n selector: 'ng-template[rdxTooltipPortalPresence]',\n hostDirectives: [RdxPresenceDirective],\n providers: [\n provideRdxPresenceContext(() => {\n const context = injectRdxTooltipContext();\n\n return { present: context.isOpen };\n })\n ]\n})\nexport class RdxTooltipPortalPresence {}\n","import {\n afterNextRender,\n booleanAttribute,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal\n} from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { BooleanInput, NumberInput, useGraceArea } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport {\n Align,\n provideRdxPopperContentConfig,\n RdxPopperAnchorElement,\n RdxPopperContentWrapper,\n Side\n} from '@radix-ng/primitives/popper';\nimport { injectRdxTooltipContext } from './tooltip';\n\n/**\n * Positions the tooltip popup against its trigger (or a custom anchor).\n */\n@Directive({\n selector: '[rdxTooltipPositioner]',\n providers: [provideRdxPopperContentConfig({ side: 'top', arrowPadding: 5, collisionPadding: 5 })],\n hostDirectives: [\n RdxDismissableLayer,\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'anchor',\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'positionStrategy',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-side]': 'wrapper.placedSide()',\n '[attr.data-align]': 'wrapper.placedAlign()',\n '[style]': `{\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)'\n }`\n }\n})\nexport class RdxTooltipPositioner {\n protected readonly rootContext = injectRdxTooltipContext();\n protected readonly wrapper = inject(RdxPopperContentWrapper);\n private readonly destroyRef = inject(DestroyRef);\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * An element to position the popup against. Defaults to the trigger.\n */\n readonly anchor = input<RdxPopperAnchorElement>();\n\n /**\n * The preferred side of the anchor to render against when open.\n */\n readonly side = input<Side>('top');\n\n /**\n * The distance in pixels from the anchor.\n */\n readonly sideOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The preferred alignment against the anchor.\n */\n readonly align = input<Align>('center');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n */\n readonly alignOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The padding between the arrow and the edges of the content.\n */\n readonly arrowPadding = input<number, NumberInput>(5, { transform: numberAttribute });\n\n /**\n * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.\n */\n readonly avoidCollisions = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * The element used as the collision boundary.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n\n /**\n * The distance in pixels from the boundary edges where collision detection should occur.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(5);\n\n /**\n * The sticky behavior on the `align` axis.\n */\n readonly sticky = input<'partial' | 'always'>('partial');\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The CSS position strategy used by Floating UI.\n */\n readonly positionStrategy = input<'fixed' | 'absolute'>('fixed');\n\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>('always');\n\n /**\n * Emits when the element is placed.\n */\n readonly placed = outputFromObservable(outputToObservable(this.wrapper.placed));\n\n /**\n * Event handler called when the escape key is down. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n private readonly triggerEl = signal<HTMLElement | null>(null);\n private readonly containerEl = signal<HTMLElement | null>(null);\n\n private readonly graceArea = useGraceArea(this.triggerEl, this.containerEl, 300);\n\n private readonly afterNextRender = afterNextRender(() => {\n this.triggerEl.set(this.rootContext.trigger() ?? null);\n this.containerEl.set(this.elementRef.nativeElement);\n\n const handleScroll = (event: Event) => {\n const target = event.target as HTMLElement;\n const trigger = this.rootContext.trigger();\n\n if (trigger && target?.contains(trigger)) {\n this.rootContext.close();\n }\n };\n\n window.addEventListener('scroll', handleScroll, { capture: true });\n\n this.destroyRef.onDestroy(() => {\n window.removeEventListener('scroll', handleScroll, { capture: true });\n });\n\n this.graceArea.onPointerExit(() => {\n // A disabled root is fully controlled by the consumer (e.g. the slider thumb drives\n // `open` while dragging). Hover never opens it, so the hover grace area must not close\n // it either — otherwise a drag that leaves the grace polygon would dismiss it and the\n // one-way `open` binding could not bring it back.\n if (this.rootContext.disabled() || this.rootContext.disableHoverablePopup()) return;\n this.rootContext.closeDelayed();\n });\n });\n\n constructor() {\n this.dismissableLayer.focusOutside.subscribe((e) => e.preventDefault());\n\n this.dismissableLayer.dismiss.subscribe(() => this.rootContext.close());\n\n // While following the cursor the popup sits right under the pointer; if it could intercept\n // the pointer it would steal hover from the trigger and the tooltip would flicker. Render it\n // pointer-events: none so the pointer always passes through to the trigger underneath.\n effect(() => this.wrapper.nonInteractive.set(this.rootContext.trackCursorAxis() !== 'none'));\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal,\n untracked\n} from '@angular/core';\nimport { BooleanInput, injectId, NumberInput } from '@radix-ng/primitives/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectRdxTooltipContext } from './tooltip';\nimport { RdxTooltipHandle } from './tooltip-handle';\n\n@Directive({\n selector: '[rdxTooltipTrigger]',\n hostDirectives: [RdxPopperAnchor],\n host: {\n type: 'button',\n 'data-grace-area-trigger': \"''\",\n '[id]': 'triggerId()',\n '[attr.aria-describedby]': 'isOpen() ? rootContext()?.contentId : undefined',\n '[attr.data-popup-open]': 'isOpen() ? \"\" : undefined',\n '[attr.data-trigger-disabled]': 'isDisabled() ? \"\" : undefined',\n '(pointermove)': 'handlePointerMove($event)',\n '(pointerleave)': 'handlePointerLeave()',\n '(pointerdown)': 'handlePointerDown($event)',\n '(focus)': 'handleFocus()',\n '(blur)': 'handleBlur()',\n '(click)': 'handleClick()'\n }\n})\nexport class RdxTooltipTrigger {\n private readonly parentRootContext = injectRdxTooltipContext(true);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly generatedId = injectId('rdx-tooltip-trigger-');\n\n /**\n * Associates this trigger with a detached tooltip root.\n */\n readonly handle = input<RdxTooltipHandle<any>>();\n\n /**\n * Data associated with this trigger while it is active.\n */\n readonly payload = input<unknown>();\n\n /**\n * ID used to identify this trigger when opening a detached tooltip imperatively.\n */\n readonly id = input<string>();\n\n /**\n * Whether the tooltip should close when the trigger is clicked.\n * @defaultValue true\n */\n readonly closeOnClick = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether this trigger is disabled. A disabled trigger never opens the tooltip.\n * @defaultValue false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Overrides the open delay (ms) for this trigger. Falls back to the root/provider/global delay.\n */\n readonly delay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n /**\n * Overrides the close delay (ms) for this trigger. Falls back to the root/provider/global delay.\n */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n readonly userOnPointerDown = input<(event: PointerEvent) => void | boolean | Promise<void | boolean> | undefined>(\n undefined,\n { alias: 'rdxOnPointerDown' }\n );\n\n protected readonly triggerId = computed(() => this.id() ?? this.generatedId);\n protected readonly rootContext = computed(() => this.handle()?.context() ?? this.parentRootContext);\n\n /** Disabled if either the root or this trigger is disabled. */\n protected readonly isDisabled = computed(() => (this.rootContext()?.disabled() ?? false) || this.disabled());\n\n /** Whether this specific trigger is the active anchor of an open tooltip. */\n protected readonly isOpen = computed(\n () => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement\n );\n\n private readonly isPointerDown = signal(false);\n private readonly hasPointerMoveOpened = signal(false);\n\n constructor() {\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(\n untracked(() =>\n handle.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () => this.payload())\n )\n );\n } else if (this.parentRootContext) {\n onCleanup(untracked(() => this.parentRootContext!.registerTrigger(this.elementRef.nativeElement)));\n }\n });\n }\n\n protected handleFocus() {\n const rootContext = this.rootContext();\n\n if (!rootContext || this.isDisabled() || this.isPointerDown()) {\n return;\n }\n\n rootContext.setDelays(this.delay(), this.closeDelay());\n rootContext.open(this.elementRef.nativeElement, this.payload());\n }\n\n protected handleBlur() {\n this.rootContext()?.closeDelayed();\n }\n\n protected handleClick() {\n const rootContext = this.rootContext();\n\n if (rootContext?.isOpen() && this.closeOnClick()) {\n rootContext.close();\n }\n }\n\n protected handlePointerMove(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n return;\n }\n\n const rootContext = this.rootContext();\n\n if (!rootContext || this.isDisabled()) {\n return;\n }\n\n if (rootContext.trackCursorAxis() !== 'none') {\n rootContext.setCursorPosition({ x: event.clientX, y: event.clientY });\n }\n\n if (!this.hasPointerMoveOpened()) {\n rootContext.setDelays(this.delay(), this.closeDelay());\n rootContext.onTriggerEnter(this.elementRef.nativeElement, this.payload());\n this.hasPointerMoveOpened.set(true);\n }\n }\n\n protected handlePointerLeave() {\n this.rootContext()?.onTriggerLeave();\n this.hasPointerMoveOpened.set(false);\n }\n\n protected async handlePointerDown(event: PointerEvent) {\n const user = this.userOnPointerDown();\n let result: unknown;\n\n if (user) {\n result = user(event);\n if (result instanceof Promise) result = await result;\n }\n\n if (event.defaultPrevented || result === false) {\n return;\n }\n\n this.isPointerDown.set(true);\n\n const handlePointerUp = () => {\n setTimeout(() => this.isPointerDown.set(false), 1);\n };\n\n document.addEventListener('pointerup', handlePointerUp, { once: true });\n }\n}\n","import { computed, signal } from '@angular/core';\nimport type { RdxTooltipContext } from './tooltip';\n\n/**\n * Connects a tooltip root with trigger elements rendered elsewhere in the DOM.\n */\ninterface RdxTooltipHandleTrigger<Payload> {\n element: HTMLElement;\n payload: () => Payload | undefined;\n}\n\nexport class RdxTooltipHandle<Payload = unknown> {\n private readonly rootContext = signal<RdxTooltipContext | undefined>(undefined);\n private readonly triggers = new Map<string, RdxTooltipHandleTrigger<Payload>>();\n private readonly rootTriggerCleanups = new Map<string, () => void>();\n\n readonly isOpen = computed(() => this.rootContext()?.isOpen() ?? false);\n\n open(triggerId: string) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No tooltip trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.open(trigger.element, trigger.payload());\n }\n\n close() {\n this.rootContext()?.close();\n }\n\n registerRoot(rootContext: RdxTooltipContext) {\n this.rootContext.set(rootContext);\n this.triggers.forEach((trigger, id) => {\n this.rootTriggerCleanups.set(id, rootContext.registerTrigger(trigger.element));\n });\n\n return () => {\n if (this.rootContext() === rootContext) {\n this.rootTriggerCleanups.forEach((cleanup) => cleanup());\n this.rootTriggerCleanups.clear();\n this.rootContext.set(undefined);\n }\n };\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined) {\n this.rootTriggerCleanups.get(id)?.();\n this.triggers.set(id, { element: trigger, payload });\n const unregisterFromRoot = this.rootContext()?.registerTrigger(trigger);\n\n if (unregisterFromRoot) {\n this.rootTriggerCleanups.set(id, unregisterFromRoot);\n }\n\n return () => {\n this.rootTriggerCleanups.get(id)?.();\n this.rootTriggerCleanups.delete(id);\n\n if (this.triggers.get(id)?.element === trigger) {\n this.triggers.delete(id);\n }\n };\n }\n\n context() {\n return this.rootContext();\n }\n}\n\nexport function createRdxTooltipHandle<Payload = unknown>() {\n return new RdxTooltipHandle<Payload>();\n}\n","import { RdxTooltip } from './src/tooltip';\nimport { RdxTooltipArrow } from './src/tooltip-arrow';\nimport { RdxTooltipPopup } from './src/tooltip-popup';\nimport { RdxTooltipPortal } from './src/tooltip-portal';\nimport { RdxTooltipPortalPresence } from './src/tooltip-portal-presence';\nimport { RdxTooltipPositioner } from './src/tooltip-positioner';\nimport { RdxTooltipProvider } from './src/tooltip-provider';\nimport { RdxTooltipTrigger } from './src/tooltip-trigger';\n\nexport * from './src/tooltip';\nexport * from './src/tooltip-arrow';\nexport * from './src/tooltip-handle';\nexport * from './src/tooltip-popup';\nexport * from './src/tooltip-portal';\nexport * from './src/tooltip-portal-presence';\nexport * from './src/tooltip-positioner';\nexport * from './src/tooltip-provider';\nexport * from './src/tooltip-trigger';\nexport * from './src/tooltip.config';\n\nexport const tooltipImports = [\n RdxTooltip,\n RdxTooltipArrow,\n RdxTooltipPopup,\n RdxTooltipPortal,\n RdxTooltipPortalPresence,\n RdxTooltipPositioner,\n RdxTooltipProvider,\n RdxTooltipTrigger\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"radix-ng-primitives-tooltip.mjs","sources":["../../../packages/primitives/tooltip/src/tooltip.config.ts","../../../packages/primitives/tooltip/src/utils.ts","../../../packages/primitives/tooltip/src/tooltip-provider.ts","../../../packages/primitives/tooltip/src/tooltip.ts","../../../packages/primitives/tooltip/src/tooltip-arrow.ts","../../../packages/primitives/tooltip/src/tooltip-popup.ts","../../../packages/primitives/tooltip/src/tooltip-portal.ts","../../../packages/primitives/tooltip/src/tooltip-positioner.ts","../../../packages/primitives/tooltip/src/tooltip-trigger.ts","../../../packages/primitives/tooltip/src/tooltip-handle.ts","../../../packages/primitives/tooltip/index.ts","../../../packages/primitives/tooltip/radix-ng-primitives-tooltip.ts"],"sourcesContent":["import { inject, InjectionToken, Provider } from '@angular/core';\n\nexport type RdxTrackCursorAxis = 'none' | 'x' | 'y' | 'both';\n\nexport type RdxTooltipConfig = {\n /**\n * How long to wait before opening the tooltip. Specified in milliseconds.\n * @defaultValue 600\n */\n delay?: number;\n /**\n * How long to wait before closing the tooltip. Specified in milliseconds.\n * @defaultValue 0\n */\n closeDelay?: number;\n /**\n * Another tooltip within the same provider opens instantly when this window\n * has not yet elapsed since the previous one closed. Specified in milliseconds.\n * @defaultValue 400\n */\n timeout?: number;\n /**\n * When `true`, the tooltip closes as the pointer leaves the trigger instead of\n * staying open while the pointer moves over the popup.\n * @defaultValue false\n */\n disableHoverablePopup?: boolean;\n};\n\nexport const defaultTooltipConfig: Required<RdxTooltipConfig> = {\n delay: 600,\n closeDelay: 0,\n timeout: 400,\n disableHoverablePopup: false\n};\n\nexport const RdxTooltipDefaultsToken = new InjectionToken<RdxTooltipConfig>('RdxTooltipDefaultsToken');\n\nexport function provideRdxTooltipConfig(config: Partial<RdxTooltipConfig>): Provider[] {\n return [\n {\n provide: RdxTooltipDefaultsToken,\n useValue: { ...defaultTooltipConfig, ...config }\n }\n ];\n}\n\nexport function injectRdxTooltipConfig(): Required<RdxTooltipConfig> {\n return { ...defaultTooltipConfig, ...inject(RdxTooltipDefaultsToken, { optional: true }) };\n}\n","import { DestroyRef, signal, Signal } from '@angular/core';\n\nexport type TimeoutController = {\n start: () => void;\n stop: () => void;\n isPending: () => boolean;\n};\n\nexport type TooltipInstantController = {\n /** Whether the next tooltip in the group should open without waiting for the delay. */\n isInstant: Signal<boolean>;\n /** Call when a tooltip opens — leaves the group in the instant phase. */\n onOpen: () => void;\n /** Call when a tooltip closes — keeps the group instant for `timeout` ms, then re-arms the delay. */\n onClose: () => void;\n};\n\n/**\n * Tracks the shared \"instant\" window for a group of tooltips. Once one tooltip\n * opens, sibling tooltips open instantly until `timeout` ms after the last close.\n */\nexport function createTooltipInstantController(\n timeout: () => number,\n destroyRef?: DestroyRef\n): TooltipInstantController {\n const instant = signal(false);\n\n const timer = useTimeoutFn(() => instant.set(false), timeout, { immediate: false }, destroyRef);\n\n return {\n isInstant: instant.asReadonly(),\n onOpen: () => {\n timer.stop();\n instant.set(true);\n },\n onClose: () => {\n timer.start();\n }\n };\n}\n\nexport function useTimeoutFn(\n cb: () => void,\n delay: number | (() => number),\n options: { immediate?: boolean } = {},\n destroyRef?: DestroyRef\n): TimeoutController {\n let id: number | null = null;\n\n const resolveDelay = () => (typeof delay === 'function' ? delay() : delay);\n\n const stop = () => {\n if (id != null) {\n clearTimeout(id);\n id = null;\n }\n };\n\n const start = () => {\n stop();\n const ms = resolveDelay();\n if (ms <= 0) {\n queueMicrotask(cb);\n return;\n }\n id = window.setTimeout(() => {\n id = null;\n cb();\n }, ms);\n };\n\n if (options.immediate) {\n start();\n }\n if (destroyRef) {\n destroyRef.onDestroy(stop);\n }\n\n return { start, stop, isPending: () => id != null };\n}\n","import { DestroyRef, Directive, inject, input, numberAttribute, Signal } from '@angular/core';\nimport { createContext, NumberInput } from '@radix-ng/primitives/core';\nimport { injectRdxTooltipConfig } from './tooltip.config';\nimport { createTooltipInstantController } from './utils';\n\nexport interface RdxTooltipProviderContext {\n /** Default open delay for tooltips in this group, in milliseconds. */\n delay: Signal<number | undefined>;\n /** Default close delay for tooltips in this group, in milliseconds. */\n closeDelay: Signal<number | undefined>;\n /** Whether sibling tooltips should currently open instantly. */\n isInstant: Signal<boolean>;\n /** Notifies the group that a tooltip has opened. */\n onOpen: () => void;\n /** Notifies the group that a tooltip has closed. */\n onClose: () => void;\n}\n\nexport const [injectRdxTooltipProviderContext, provideRdxTooltipProviderContext] =\n createContext<RdxTooltipProviderContext>('RdxTooltipProviderContext', 'components/tooltip');\n\nconst numberOrUndefined = (value: NumberInput | undefined) => (value == null ? undefined : numberAttribute(value));\n\nconst providerContext = (): RdxTooltipProviderContext => {\n const provider = inject(RdxTooltipProvider);\n\n return {\n delay: provider.delay,\n closeDelay: provider.closeDelay,\n isInstant: provider.instant.isInstant,\n onOpen: () => provider.instant.onOpen(),\n onClose: () => provider.instant.onClose()\n };\n};\n\n/**\n * Shares delay configuration and an instant-open window across a group of tooltips.\n * Once one tooltip opens, adjacent ones open instantly until `timeout` ms after the last close.\n */\n@Directive({\n selector: '[rdxTooltipProvider]',\n exportAs: 'rdxTooltipProvider',\n providers: [provideRdxTooltipProviderContext(providerContext)]\n})\nexport class RdxTooltipProvider {\n private readonly defaultConfig = injectRdxTooltipConfig();\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * How long to wait before opening tooltips in this group. Specified in milliseconds.\n */\n readonly delay = input<number | undefined, NumberInput | undefined>(undefined, { transform: numberOrUndefined });\n\n /**\n * How long to wait before closing tooltips in this group. Specified in milliseconds.\n */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: numberOrUndefined\n });\n\n /**\n * The window during which an adjacent tooltip opens instantly. Specified in milliseconds.\n */\n readonly timeout = input<number, NumberInput>(this.defaultConfig.timeout, { transform: numberAttribute });\n\n readonly instant = createTooltipInstantController(() => this.timeout(), this.destroyRef);\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n Signal,\n signal,\n untracked\n} from '@angular/core';\nimport type { ReferenceElement } from '@floating-ui/dom';\nimport { BooleanInput, createContext, injectId, NumberInput, watch } from '@radix-ng/primitives/core';\nimport { RdxPopper } from '@radix-ng/primitives/popper';\nimport { RdxTooltipHandle } from './tooltip-handle';\nimport { injectRdxTooltipProviderContext } from './tooltip-provider';\nimport { injectRdxTooltipConfig, RdxTrackCursorAxis } from './tooltip.config';\nimport { createTooltipInstantController, TooltipInstantController, useTimeoutFn } from './utils';\n\nexport interface RdxTooltipContext {\n contentId: string;\n isOpen: Signal<boolean>;\n /** Whether the tooltip opened/closed without waiting for the delay. */\n instant: Signal<boolean>;\n disabled: Signal<boolean>;\n disableHoverablePopup: Signal<boolean>;\n trackCursorAxis: Signal<RdxTrackCursorAxis>;\n /** The active trigger element. */\n trigger: Signal<HTMLElement | undefined>;\n triggers: Signal<HTMLElement[]>;\n payload: Signal<unknown>;\n open: (trigger?: HTMLElement, payload?: unknown) => void;\n close: () => void;\n /** Closes after the resolved close delay (used when hover/focus is lost). */\n closeDelayed: () => void;\n registerTrigger: (trigger: HTMLElement) => () => void;\n /** Hover entered a trigger — opens after the resolved delay (or instantly). */\n onTriggerEnter: (trigger?: HTMLElement, payload?: unknown) => void;\n /** Hover left a trigger — cancels a pending open and closes when appropriate. */\n onTriggerLeave: () => void;\n setCursorPosition: (position: { x: number; y: number } | undefined) => void;\n setDelays: (delay: number | undefined, closeDelay: number | undefined) => void;\n}\n\nexport const [injectRdxTooltipContext, provideRdxTooltipContext] = createContext<RdxTooltipContext>(\n 'RdxTooltipContext',\n 'components/tooltip'\n);\n\nconst context = () => contextFor(inject(RdxTooltip));\n\n@Directive({\n selector: '[rdxTooltip]',\n exportAs: 'rdxTooltip',\n providers: [provideRdxTooltipContext(context)],\n hostDirectives: [RdxPopper]\n})\nexport class RdxTooltip {\n private readonly defaultConfig = injectRdxTooltipConfig();\n private readonly provider = injectRdxTooltipProviderContext(true);\n private readonly popper = inject(RdxPopper);\n private readonly destroyRef = inject(DestroyRef);\n private hasAppliedDefaultOpen = false;\n\n /**\n * Whether the tooltip is currently open.\n */\n readonly open = model(false);\n\n /**\n * Whether the tooltip is initially open. Uncontrolled.\n */\n readonly defaultOpen = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * How long to wait before opening the tooltip. Specified in milliseconds.\n * Falls back to the surrounding provider, then to the global config.\n */\n readonly delay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n /**\n * How long to wait before closing the tooltip. Specified in milliseconds.\n */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n /**\n * When `true`, the tooltip closes as the pointer leaves the trigger instead of\n * staying open while the pointer moves over the popup.\n */\n readonly disableHoverablePopup = input<boolean, BooleanInput>(this.defaultConfig.disableHoverablePopup, {\n transform: booleanAttribute\n });\n\n /**\n * Determines which axis the tooltip should track the cursor on.\n */\n readonly trackCursorAxis = input<RdxTrackCursorAxis>('none');\n\n /**\n * When `true`, the tooltip will not open.\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Associates this root with detached trigger elements.\n */\n readonly handle = input<RdxTooltipHandle<any>>();\n\n /**\n * Event handler called when the open state changes.\n */\n readonly onOpenChange = output<boolean>();\n\n readonly contentId = injectId('rdx-tooltip-content-');\n readonly trigger = signal<HTMLElement | undefined>(undefined);\n readonly triggers = signal<HTMLElement[]>([]);\n readonly payload = signal<unknown>(undefined);\n readonly cursorPosition = signal<{ x: number; y: number } | undefined>(undefined);\n\n private readonly openedInstant = signal(false);\n\n /** Local instant window used when this tooltip is not inside a provider. */\n private readonly localInstant: TooltipInstantController = createTooltipInstantController(\n () => this.defaultConfig.timeout,\n this.destroyRef\n );\n\n private readonly instantGroup = this.provider ?? this.localInstant;\n\n /** Per-trigger overrides set by the active trigger, taking precedence over the root/provider. */\n private readonly triggerDelay = signal<number | undefined>(undefined);\n private readonly triggerCloseDelay = signal<number | undefined>(undefined);\n\n private readonly resolvedDelay = computed(\n () => this.triggerDelay() ?? this.delay() ?? this.provider?.delay() ?? this.defaultConfig.delay\n );\n private readonly resolvedCloseDelay = computed(\n () =>\n this.triggerCloseDelay() ??\n this.closeDelay() ??\n this.provider?.closeDelay() ??\n this.defaultConfig.closeDelay\n );\n\n /** Whether the most recent open happened without the delay. */\n readonly instant = this.openedInstant.asReadonly();\n\n private readonly virtualAnchor = computed<ReferenceElement | undefined>(() => {\n const axis = this.trackCursorAxis();\n const element = this.trigger();\n\n if (axis === 'none' || !element) {\n return element;\n }\n\n const position = this.cursorPosition();\n\n if (!position) {\n return element;\n }\n\n const followX = axis === 'x' || axis === 'both';\n const followY = axis === 'y' || axis === 'both';\n\n return {\n getBoundingClientRect: () => {\n const rect = element.getBoundingClientRect();\n const width = followX ? 0 : rect.width;\n const height = followY ? 0 : rect.height;\n const x = followX ? position.x : rect.x;\n const y = followY ? position.y : rect.y;\n\n return { width, height, x, y, top: y, left: x, right: x + width, bottom: y + height };\n }\n };\n });\n\n private readonly openTimer = useTimeoutFn(\n () => this.applyOpen(false),\n () => this.resolvedDelay(),\n { immediate: false },\n this.destroyRef\n );\n\n private readonly closeTimer = useTimeoutFn(\n () => this.applyClose(),\n () => this.resolvedCloseDelay(),\n { immediate: false },\n this.destroyRef\n );\n\n constructor() {\n effect(() => {\n const defaultOpen = this.defaultOpen();\n\n if (!this.hasAppliedDefaultOpen && defaultOpen) {\n this.hasAppliedDefaultOpen = true;\n this.open.set(defaultOpen);\n }\n });\n\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(untracked(() => handle.registerRoot(contextFor(this))));\n }\n });\n\n // Keep the popper anchored to the active trigger, or to the cursor while tracking.\n effect(() => this.popper.anchorOverride.set(this.virtualAnchor()));\n\n watch(\n [this.open],\n ([isOpen]) => {\n this.onOpenChange.emit(isOpen);\n\n if (isOpen) {\n this.instantGroup.onOpen();\n } else {\n this.instantGroup.onClose();\n this.openedInstant.set(false);\n }\n },\n { defer: true }\n );\n }\n\n /** Opens immediately, optionally switching the active trigger/payload. */\n show(trigger = this.trigger(), payload?: unknown) {\n this.applyOpen(true, trigger, payload);\n }\n\n close() {\n this.openTimer.stop();\n this.closeTimer.stop();\n this.applyClose();\n }\n\n /** Closes after the resolved close delay, e.g. when the pointer or focus leaves. */\n scheduleClose() {\n this.openTimer.stop();\n\n if (this.resolvedCloseDelay() <= 0) {\n this.applyClose();\n } else {\n this.closeTimer.start();\n }\n }\n\n /** Hover/focus entered — open after the delay, or instantly within the instant window. */\n onTriggerEnter(trigger = this.trigger(), payload?: unknown) {\n if (this.disabled()) {\n return;\n }\n\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n this.payload.set(payload);\n this.closeTimer.stop();\n\n if (this.instantGroup.isInstant() || this.resolvedDelay() <= 0) {\n this.applyOpen(true, trigger, payload);\n } else {\n this.openTimer.start();\n }\n }\n\n onTriggerLeave() {\n this.openTimer.stop();\n\n if (this.disableHoverablePopup()) {\n this.scheduleClose();\n }\n // Otherwise the positioner's grace area decides when to close.\n }\n\n registerTrigger(trigger: HTMLElement) {\n this.triggers.update((triggers) => (triggers.includes(trigger) ? triggers : [...triggers, trigger]));\n\n if (!this.trigger()) {\n this.trigger.set(trigger);\n }\n\n return () => {\n this.triggers.update((triggers) => triggers.filter((candidate) => candidate !== trigger));\n\n if (this.trigger() === trigger) {\n const nextTrigger = this.triggers()[0];\n this.trigger.set(nextTrigger);\n\n if (!nextTrigger && !this.destroyRef.destroyed) {\n this.applyClose();\n }\n }\n };\n }\n\n setCursorPosition(position: { x: number; y: number } | undefined) {\n this.cursorPosition.set(position);\n }\n\n /** Applies per-trigger delay overrides from the trigger that is becoming active. */\n setDelays(delay: number | undefined, closeDelay: number | undefined) {\n this.triggerDelay.set(delay);\n this.triggerCloseDelay.set(closeDelay);\n }\n\n private applyOpen(instant: boolean, trigger = this.trigger(), payload?: unknown) {\n if (this.disabled()) {\n return;\n }\n\n this.openTimer.stop();\n this.closeTimer.stop();\n\n if (trigger) {\n this.trigger.set(trigger);\n }\n\n if (payload !== undefined) {\n this.payload.set(payload);\n }\n\n this.openedInstant.set(instant || this.instantGroup.isInstant());\n this.open.set(true);\n }\n\n private applyClose() {\n this.openedInstant.set(this.instantGroup.isInstant());\n this.open.set(false);\n }\n}\n\nfunction contextFor(root: RdxTooltip): RdxTooltipContext {\n return {\n contentId: root.contentId,\n isOpen: root.open,\n instant: root.instant,\n disabled: root.disabled,\n disableHoverablePopup: root.disableHoverablePopup,\n trackCursorAxis: root.trackCursorAxis,\n trigger: root.trigger.asReadonly(),\n triggers: root.triggers.asReadonly(),\n payload: root.payload.asReadonly(),\n open: (trigger?: HTMLElement, payload?: unknown) => root.show(trigger, payload),\n close: () => root.close(),\n closeDelayed: () => root.scheduleClose(),\n registerTrigger: (trigger: HTMLElement) => root.registerTrigger(trigger),\n onTriggerEnter: (trigger?: HTMLElement, payload?: unknown) => root.onTriggerEnter(trigger, payload),\n onTriggerLeave: () => root.onTriggerLeave(),\n setCursorPosition: (position) => root.setCursorPosition(position),\n setDelays: (delay, closeDelay) => root.setDelays(delay, closeDelay)\n };\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperArrow, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { RdxVisuallyHiddenDirective } from '@radix-ng/primitives/visually-hidden';\nimport { injectRdxTooltipContext } from './tooltip';\n\n@Directive({\n selector: '[rdxTooltipArrow]',\n hostDirectives: [RdxPopperArrow],\n host: {\n '[hidden]': 'isVisuallyHidden',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()',\n '[attr.data-uncentered]': 'uncentered() ? \"\" : undefined'\n }\n})\nexport class RdxTooltipArrow {\n protected readonly rootContext = injectRdxTooltipContext();\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n protected readonly uncentered = computed(() => this.wrapper?.arrowUncentered() ?? false);\n\n protected readonly isVisuallyHidden = !!inject(RdxVisuallyHiddenDirective, {\n optional: true\n });\n}\n","import { computed, Directive, inject } from '@angular/core';\nimport { RdxPopperContent, RdxPopperContentWrapper } from '@radix-ng/primitives/popper';\nimport { injectRdxTooltipContext } from './tooltip';\n\n/**\n * The tooltip popup. Renders the content with `role=\"tooltip\"`.\n */\n@Directive({\n selector: '[rdxTooltipPopup]',\n hostDirectives: [RdxPopperContent],\n host: {\n role: 'tooltip',\n '[id]': 'rootContext.contentId',\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-instant]': 'rootContext.instant() ? \"\" : undefined',\n '[attr.data-side]': 'side()',\n '[attr.data-align]': 'align()'\n }\n})\nexport class RdxTooltipPopup {\n protected readonly rootContext = injectRdxTooltipContext();\n private readonly wrapper = inject(RdxPopperContentWrapper, { optional: true });\n\n protected readonly side = computed(() => this.wrapper?.placedSide());\n protected readonly align = computed(() => this.wrapper?.placedAlign());\n}\n","import { Directive, isDevMode } from '@angular/core';\nimport { RdxPortalPresence } from '@radix-ng/primitives/portal';\nimport { provideRdxPresenceContext } from '@radix-ng/primitives/presence';\nimport { injectRdxTooltipContext } from './tooltip';\n\n/**\n * Structural directive that teleports the tooltip content into a container (default `document.body`)\n * while the tooltip is open, and keeps it mounted until any CSS exit `@keyframes` finishes.\n *\n * Apply it with the `*` microsyntax on the positioner — `<div *rdxTooltipPortal rdxTooltipPositioner>`\n * — or as an explicit `<ng-template rdxTooltipPortal>`. For a custom container use the explicit form\n * with `[container]`.\n */\n@Directive({\n selector: 'ng-template[rdxTooltipPortal]',\n exportAs: 'rdxTooltipPortal',\n hostDirectives: [{ directive: RdxPortalPresence, inputs: ['container'] }],\n providers: [provideRdxPresenceContext(() => ({ present: injectRdxTooltipContext().isOpen }))]\n})\nexport class RdxTooltipPortal {}\n\n/**\n * Dev-mode guard: `rdxTooltipPortal` used to be an attribute directive on a `<div>`. It is now\n * structural, so the old `<div rdxTooltipPortal>` markup would silently stop portaling — fail loudly\n * instead.\n */\n@Directive({\n selector: '[rdxTooltipPortal]:not(ng-template)'\n})\nexport class RdxTooltipPortalMisuseGuard {\n constructor() {\n if (isDevMode()) {\n throw new Error(\n '[rdxTooltipPortal] is now a structural directive. ' +\n 'Use `*rdxTooltipPortal` on the positioner element or `<ng-template rdxTooltipPortal>`. ' +\n 'rdxTooltipPortalPresence has been removed. See https://radix-ng.com/components/tooltip.md'\n );\n }\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal\n} from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport { BooleanInput, NumberInput, useGraceArea } from '@radix-ng/primitives/core';\nimport { RdxDismissableLayer } from '@radix-ng/primitives/dismissable-layer';\nimport {\n Align,\n provideRdxPopperContentConfig,\n RdxPopperAnchorElement,\n RdxPopperContentWrapper,\n Side\n} from '@radix-ng/primitives/popper';\nimport { injectRdxTooltipContext } from './tooltip';\n\n/**\n * Positions the tooltip popup against its trigger (or a custom anchor).\n */\n@Directive({\n selector: '[rdxTooltipPositioner]',\n providers: [provideRdxPopperContentConfig({ side: 'top', arrowPadding: 5, collisionPadding: 5 })],\n hostDirectives: [\n RdxDismissableLayer,\n {\n directive: RdxPopperContentWrapper,\n inputs: [\n 'anchor',\n 'side',\n 'sideOffset',\n 'align',\n 'alignOffset',\n 'arrowPadding',\n 'avoidCollisions',\n 'collisionBoundary',\n 'collisionPadding',\n 'sticky',\n 'hideWhenDetached',\n 'positionStrategy',\n 'updatePositionStrategy'\n ]\n }\n ],\n host: {\n '[attr.data-open]': 'rootContext.isOpen() ? \"\" : undefined',\n '[attr.data-closed]': 'rootContext.isOpen() ? undefined : \"\"',\n '[attr.data-side]': 'wrapper.placedSide()',\n '[attr.data-align]': 'wrapper.placedAlign()',\n '[style]': `{\n '--anchor-width': 'var(--radix-popper-anchor-width)',\n '--anchor-height': 'var(--radix-popper-anchor-height)',\n '--available-width': 'var(--radix-popper-available-width)',\n '--available-height': 'var(--radix-popper-available-height)',\n '--transform-origin': 'var(--radix-popper-transform-origin)'\n }`\n }\n})\nexport class RdxTooltipPositioner {\n protected readonly rootContext = injectRdxTooltipContext();\n protected readonly wrapper = inject(RdxPopperContentWrapper);\n private readonly destroyRef = inject(DestroyRef);\n private readonly dismissableLayer = inject(RdxDismissableLayer);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * An element to position the popup against. Defaults to the trigger.\n */\n readonly anchor = input<RdxPopperAnchorElement>();\n\n /**\n * The preferred side of the anchor to render against when open.\n */\n readonly side = input<Side>('top');\n\n /**\n * The distance in pixels from the anchor.\n */\n readonly sideOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The preferred alignment against the anchor.\n */\n readonly align = input<Align>('center');\n\n /**\n * An offset in pixels from the `start` or `end` alignment options.\n */\n readonly alignOffset = input<number, NumberInput>(0, { transform: numberAttribute });\n\n /**\n * The padding between the arrow and the edges of the content.\n */\n readonly arrowPadding = input<number, NumberInput>(5, { transform: numberAttribute });\n\n /**\n * When `true`, overrides the `side` and `align` preferences to prevent collisions with boundary edges.\n */\n readonly avoidCollisions = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * The element used as the collision boundary.\n */\n readonly collisionBoundary = input<ElementRef<HTMLElement> | ElementRef<HTMLElement>[]>();\n\n /**\n * The distance in pixels from the boundary edges where collision detection should occur.\n */\n readonly collisionPadding = input<number | Partial<Record<Side, number>>>(5);\n\n /**\n * The sticky behavior on the `align` axis.\n */\n readonly sticky = input<'partial' | 'always'>('partial');\n\n /**\n * Whether to hide the content when the trigger becomes fully occluded.\n */\n readonly hideWhenDetached = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * The CSS position strategy used by Floating UI.\n */\n readonly positionStrategy = input<'fixed' | 'absolute'>('fixed');\n\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n */\n readonly updatePositionStrategy = input<'optimized' | 'always'>('always');\n\n /**\n * Emits when the element is placed.\n */\n readonly placed = outputFromObservable(outputToObservable(this.wrapper.placed));\n\n /**\n * Event handler called when the escape key is down. Can be prevented.\n */\n readonly escapeKeyDown = outputFromObservable(outputToObservable(this.dismissableLayer.escapeKeyDown));\n\n /**\n * Event handler called when a `pointerdown` event happens outside of the `DismissableLayer`. Can be prevented.\n */\n readonly pointerDownOutside = outputFromObservable(outputToObservable(this.dismissableLayer.pointerDownOutside));\n\n private readonly triggerEl = signal<HTMLElement | null>(null);\n private readonly containerEl = signal<HTMLElement | null>(null);\n\n private readonly graceArea = useGraceArea(this.triggerEl, this.containerEl, 300);\n\n private readonly afterNextRender = afterNextRender(() => {\n this.triggerEl.set(this.rootContext.trigger() ?? null);\n this.containerEl.set(this.elementRef.nativeElement);\n\n const handleScroll = (event: Event) => {\n const target = event.target as HTMLElement;\n const trigger = this.rootContext.trigger();\n\n if (trigger && target?.contains(trigger)) {\n this.rootContext.close();\n }\n };\n\n window.addEventListener('scroll', handleScroll, { capture: true });\n\n this.destroyRef.onDestroy(() => {\n window.removeEventListener('scroll', handleScroll, { capture: true });\n });\n\n this.graceArea.onPointerExit(() => {\n // A disabled root is fully controlled by the consumer (e.g. the slider thumb drives\n // `open` while dragging). Hover never opens it, so the hover grace area must not close\n // it either — otherwise a drag that leaves the grace polygon would dismiss it and the\n // one-way `open` binding could not bring it back.\n if (this.rootContext.disabled() || this.rootContext.disableHoverablePopup()) return;\n this.rootContext.closeDelayed();\n });\n });\n\n constructor() {\n this.dismissableLayer.focusOutside.subscribe((e) => e.preventDefault());\n\n this.dismissableLayer.dismiss.subscribe(() => this.rootContext.close());\n\n // While following the cursor the popup sits right under the pointer; if it could intercept\n // the pointer it would steal hover from the trigger and the tooltip would flicker. Render it\n // pointer-events: none so the pointer always passes through to the trigger underneath.\n effect(() => this.wrapper.nonInteractive.set(this.rootContext.trackCursorAxis() !== 'none'));\n }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal,\n untracked\n} from '@angular/core';\nimport { BooleanInput, injectId, NumberInput } from '@radix-ng/primitives/core';\nimport { RdxPopperAnchor } from '@radix-ng/primitives/popper';\nimport { injectRdxTooltipContext } from './tooltip';\nimport { RdxTooltipHandle } from './tooltip-handle';\n\n@Directive({\n selector: '[rdxTooltipTrigger]',\n hostDirectives: [RdxPopperAnchor],\n host: {\n type: 'button',\n 'data-grace-area-trigger': \"''\",\n '[id]': 'triggerId()',\n '[attr.aria-describedby]': 'isOpen() ? rootContext()?.contentId : undefined',\n '[attr.data-popup-open]': 'isOpen() ? \"\" : undefined',\n '[attr.data-trigger-disabled]': 'isDisabled() ? \"\" : undefined',\n '(pointermove)': 'handlePointerMove($event)',\n '(pointerleave)': 'handlePointerLeave()',\n '(pointerdown)': 'handlePointerDown($event)',\n '(focus)': 'handleFocus()',\n '(blur)': 'handleBlur()',\n '(click)': 'handleClick()'\n }\n})\nexport class RdxTooltipTrigger {\n private readonly parentRootContext = injectRdxTooltipContext(true);\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly generatedId = injectId('rdx-tooltip-trigger-');\n\n /**\n * Associates this trigger with a detached tooltip root.\n */\n readonly handle = input<RdxTooltipHandle<any>>();\n\n /**\n * Data associated with this trigger while it is active.\n */\n readonly payload = input<unknown>();\n\n /**\n * ID used to identify this trigger when opening a detached tooltip imperatively.\n */\n readonly id = input<string>();\n\n /**\n * Whether the tooltip should close when the trigger is clicked.\n * @defaultValue true\n */\n readonly closeOnClick = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n /**\n * Whether this trigger is disabled. A disabled trigger never opens the tooltip.\n * @defaultValue false\n */\n readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n /**\n * Overrides the open delay (ms) for this trigger. Falls back to the root/provider/global delay.\n */\n readonly delay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n /**\n * Overrides the close delay (ms) for this trigger. Falls back to the root/provider/global delay.\n */\n readonly closeDelay = input<number | undefined, NumberInput | undefined>(undefined, {\n transform: (value) => (value == null ? undefined : numberAttribute(value))\n });\n\n readonly userOnPointerDown = input<(event: PointerEvent) => void | boolean | Promise<void | boolean> | undefined>(\n undefined,\n { alias: 'rdxOnPointerDown' }\n );\n\n protected readonly triggerId = computed(() => this.id() ?? this.generatedId);\n protected readonly rootContext = computed(() => this.handle()?.context() ?? this.parentRootContext);\n\n /** Disabled if either the root or this trigger is disabled. */\n protected readonly isDisabled = computed(() => (this.rootContext()?.disabled() ?? false) || this.disabled());\n\n /** Whether this specific trigger is the active anchor of an open tooltip. */\n protected readonly isOpen = computed(\n () => this.rootContext()?.isOpen() === true && this.rootContext()?.trigger() === this.elementRef.nativeElement\n );\n\n private readonly isPointerDown = signal(false);\n private readonly hasPointerMoveOpened = signal(false);\n\n constructor() {\n effect((onCleanup) => {\n const handle = this.handle();\n\n if (handle) {\n onCleanup(\n untracked(() =>\n handle.registerTrigger(this.triggerId(), this.elementRef.nativeElement, () => this.payload())\n )\n );\n } else if (this.parentRootContext) {\n onCleanup(untracked(() => this.parentRootContext!.registerTrigger(this.elementRef.nativeElement)));\n }\n });\n }\n\n protected handleFocus() {\n const rootContext = this.rootContext();\n\n if (!rootContext || this.isDisabled() || this.isPointerDown()) {\n return;\n }\n\n rootContext.setDelays(this.delay(), this.closeDelay());\n rootContext.open(this.elementRef.nativeElement, this.payload());\n }\n\n protected handleBlur() {\n this.rootContext()?.closeDelayed();\n }\n\n protected handleClick() {\n const rootContext = this.rootContext();\n\n if (rootContext?.isOpen() && this.closeOnClick()) {\n rootContext.close();\n }\n }\n\n protected handlePointerMove(event: PointerEvent) {\n if (event.pointerType === 'touch') {\n return;\n }\n\n const rootContext = this.rootContext();\n\n if (!rootContext || this.isDisabled()) {\n return;\n }\n\n if (rootContext.trackCursorAxis() !== 'none') {\n rootContext.setCursorPosition({ x: event.clientX, y: event.clientY });\n }\n\n if (!this.hasPointerMoveOpened()) {\n rootContext.setDelays(this.delay(), this.closeDelay());\n rootContext.onTriggerEnter(this.elementRef.nativeElement, this.payload());\n this.hasPointerMoveOpened.set(true);\n }\n }\n\n protected handlePointerLeave() {\n this.rootContext()?.onTriggerLeave();\n this.hasPointerMoveOpened.set(false);\n }\n\n protected async handlePointerDown(event: PointerEvent) {\n const user = this.userOnPointerDown();\n let result: unknown;\n\n if (user) {\n result = user(event);\n if (result instanceof Promise) result = await result;\n }\n\n if (event.defaultPrevented || result === false) {\n return;\n }\n\n this.isPointerDown.set(true);\n\n const handlePointerUp = () => {\n setTimeout(() => this.isPointerDown.set(false), 1);\n };\n\n document.addEventListener('pointerup', handlePointerUp, { once: true });\n }\n}\n","import { computed, signal } from '@angular/core';\nimport type { RdxTooltipContext } from './tooltip';\n\n/**\n * Connects a tooltip root with trigger elements rendered elsewhere in the DOM.\n */\ninterface RdxTooltipHandleTrigger<Payload> {\n element: HTMLElement;\n payload: () => Payload | undefined;\n}\n\nexport class RdxTooltipHandle<Payload = unknown> {\n private readonly rootContext = signal<RdxTooltipContext | undefined>(undefined);\n private readonly triggers = new Map<string, RdxTooltipHandleTrigger<Payload>>();\n private readonly rootTriggerCleanups = new Map<string, () => void>();\n\n readonly isOpen = computed(() => this.rootContext()?.isOpen() ?? false);\n\n open(triggerId: string) {\n const trigger = this.triggers.get(triggerId);\n\n if (!trigger) {\n throw new Error(`No tooltip trigger registered with id \"${triggerId}\".`);\n }\n\n this.rootContext()?.open(trigger.element, trigger.payload());\n }\n\n close() {\n this.rootContext()?.close();\n }\n\n registerRoot(rootContext: RdxTooltipContext) {\n this.rootContext.set(rootContext);\n this.triggers.forEach((trigger, id) => {\n this.rootTriggerCleanups.set(id, rootContext.registerTrigger(trigger.element));\n });\n\n return () => {\n if (this.rootContext() === rootContext) {\n this.rootTriggerCleanups.forEach((cleanup) => cleanup());\n this.rootTriggerCleanups.clear();\n this.rootContext.set(undefined);\n }\n };\n }\n\n registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined) {\n this.rootTriggerCleanups.get(id)?.();\n this.triggers.set(id, { element: trigger, payload });\n const unregisterFromRoot = this.rootContext()?.registerTrigger(trigger);\n\n if (unregisterFromRoot) {\n this.rootTriggerCleanups.set(id, unregisterFromRoot);\n }\n\n return () => {\n this.rootTriggerCleanups.get(id)?.();\n this.rootTriggerCleanups.delete(id);\n\n if (this.triggers.get(id)?.element === trigger) {\n this.triggers.delete(id);\n }\n };\n }\n\n context() {\n return this.rootContext();\n }\n}\n\nexport function createRdxTooltipHandle<Payload = unknown>() {\n return new RdxTooltipHandle<Payload>();\n}\n","import { RdxTooltip } from './src/tooltip';\nimport { RdxTooltipArrow } from './src/tooltip-arrow';\nimport { RdxTooltipPopup } from './src/tooltip-popup';\nimport { RdxTooltipPortal, RdxTooltipPortalMisuseGuard } from './src/tooltip-portal';\nimport { RdxTooltipPositioner } from './src/tooltip-positioner';\nimport { RdxTooltipProvider } from './src/tooltip-provider';\nimport { RdxTooltipTrigger } from './src/tooltip-trigger';\n\nexport * from './src/tooltip';\nexport * from './src/tooltip-arrow';\nexport * from './src/tooltip-handle';\nexport * from './src/tooltip-popup';\nexport * from './src/tooltip-portal';\nexport * from './src/tooltip-positioner';\nexport * from './src/tooltip-provider';\nexport * from './src/tooltip-trigger';\nexport * from './src/tooltip.config';\n\nexport const tooltipImports = [\n RdxTooltip,\n RdxTooltipArrow,\n RdxTooltipPopup,\n RdxTooltipPortal,\n RdxTooltipPortalMisuseGuard,\n RdxTooltipPositioner,\n RdxTooltipProvider,\n RdxTooltipTrigger\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radix-ng/primitives",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.3",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -54,6 +54,10 @@
54
54
  "types": "./types/radix-ng-primitives-aspect-ratio.d.ts",
55
55
  "default": "./fesm2022/radix-ng-primitives-aspect-ratio.mjs"
56
56
  },
57
+ "./autocomplete": {
58
+ "types": "./types/radix-ng-primitives-autocomplete.d.ts",
59
+ "default": "./fesm2022/radix-ng-primitives-autocomplete.mjs"
60
+ },
57
61
  "./avatar": {
58
62
  "types": "./types/radix-ng-primitives-avatar.d.ts",
59
63
  "default": "./fesm2022/radix-ng-primitives-avatar.mjs"
@@ -78,6 +82,10 @@
78
82
  "types": "./types/radix-ng-primitives-collection.d.ts",
79
83
  "default": "./fesm2022/radix-ng-primitives-collection.mjs"
80
84
  },
85
+ "./combobox": {
86
+ "types": "./types/radix-ng-primitives-combobox.d.ts",
87
+ "default": "./fesm2022/radix-ng-primitives-combobox.mjs"
88
+ },
81
89
  "./config": {
82
90
  "types": "./types/radix-ng-primitives-config.d.ts",
83
91
  "default": "./fesm2022/radix-ng-primitives-config.mjs"
@@ -130,6 +138,10 @@
130
138
  "types": "./types/radix-ng-primitives-focus-scope.d.ts",
131
139
  "default": "./fesm2022/radix-ng-primitives-focus-scope.mjs"
132
140
  },
141
+ "./form": {
142
+ "types": "./types/radix-ng-primitives-form.d.ts",
143
+ "default": "./fesm2022/radix-ng-primitives-form.mjs"
144
+ },
133
145
  "./input": {
134
146
  "types": "./types/radix-ng-primitives-input.d.ts",
135
147
  "default": "./fesm2022/radix-ng-primitives-input.mjs"