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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  2. package/fesm2022/radix-ng-primitives-calendar.mjs +95 -83
  3. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  4. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  6. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-core.mjs +114 -4
  8. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  9. package/fesm2022/radix-ng-primitives-cropper.mjs +287 -308
  10. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  11. package/fesm2022/radix-ng-primitives-date-field.mjs +55 -15
  12. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  13. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-drawer.mjs +6 -105
  15. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-editable.mjs +304 -23
  17. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
  19. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-menu.mjs +409 -1
  21. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  22. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  24. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  25. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  26. package/fesm2022/radix-ng-primitives-popper.mjs +21 -4
  27. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  28. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
  30. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  31. package/fesm2022/radix-ng-primitives-scroll-area.mjs +923 -0
  32. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -0
  33. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  34. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  35. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  36. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-tabs.mjs +11 -2
  38. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  39. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  40. package/fesm2022/radix-ng-primitives-toast.mjs +839 -0
  41. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -0
  42. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  43. package/fesm2022/radix-ng-primitives-tooltip.mjs +9 -1
  44. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  45. package/package.json +10 -2
  46. package/types/radix-ng-primitives-accordion.d.ts +3 -2
  47. package/types/radix-ng-primitives-calendar.d.ts +38 -18
  48. package/types/radix-ng-primitives-checkbox.d.ts +5 -5
  49. package/types/radix-ng-primitives-collapsible.d.ts +2 -1
  50. package/types/radix-ng-primitives-context-menu.d.ts +3 -2
  51. package/types/radix-ng-primitives-core.d.ts +42 -3
  52. package/types/radix-ng-primitives-cropper.d.ts +89 -56
  53. package/types/radix-ng-primitives-date-field.d.ts +11 -5
  54. package/types/radix-ng-primitives-dialog.d.ts +2 -1
  55. package/types/radix-ng-primitives-drawer.d.ts +5 -27
  56. package/types/radix-ng-primitives-editable.d.ts +90 -13
  57. package/types/radix-ng-primitives-field.d.ts +3 -2
  58. package/types/radix-ng-primitives-fieldset.d.ts +3 -2
  59. package/types/radix-ng-primitives-focus-scope.d.ts +2 -1
  60. package/types/radix-ng-primitives-menu.d.ts +16 -4
  61. package/types/radix-ng-primitives-menubar.d.ts +2 -1
  62. package/types/radix-ng-primitives-meter.d.ts +3 -2
  63. package/types/radix-ng-primitives-navigation-menu.d.ts +1 -1
  64. package/types/radix-ng-primitives-number-field.d.ts +6 -6
  65. package/types/radix-ng-primitives-popover.d.ts +2 -1
  66. package/types/radix-ng-primitives-popper.d.ts +19 -2
  67. package/types/radix-ng-primitives-preview-card.d.ts +1 -1
  68. package/types/radix-ng-primitives-progress.d.ts +3 -2
  69. package/types/radix-ng-primitives-roving-focus.d.ts +4 -3
  70. package/types/radix-ng-primitives-scroll-area.d.ts +253 -0
  71. package/types/radix-ng-primitives-select.d.ts +6 -6
  72. package/types/radix-ng-primitives-slider.d.ts +1 -1
  73. package/types/radix-ng-primitives-switch.d.ts +1 -1
  74. package/types/radix-ng-primitives-tabs.d.ts +1 -1
  75. package/types/radix-ng-primitives-toast.d.ts +378 -0
  76. package/types/radix-ng-primitives-toggle-group.d.ts +2 -1
  77. package/types/radix-ng-primitives-toolbar.d.ts +3 -2
  78. package/types/radix-ng-primitives-tooltip.d.ts +3 -2
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
2
3
  import { BooleanInput } from '@radix-ng/primitives/core';
3
4
 
4
5
  /**
@@ -19,9 +20,9 @@ declare const fieldsetRootContext: () => {
19
20
  disabledState: _angular_core.Signal<boolean>;
20
21
  };
21
22
  type RdxFieldsetRootContext = ReturnType<typeof fieldsetRootContext>;
22
- declare const injectFieldsetRootContext: (optional?: boolean) => {
23
+ declare const injectFieldsetRootContext: _radix_ng_primitives_core.InjectContext<{
23
24
  disabledState: _angular_core.Signal<boolean>;
24
- } | null;
25
+ }>;
25
26
  declare const provideFieldsetRootContext: (useFactory: () => {
26
27
  disabledState: _angular_core.Signal<boolean>;
27
28
  }) => _angular_core.Provider;
@@ -1,5 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { WritableSignal, Signal, InjectionToken, Provider } from '@angular/core';
3
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
3
4
  import { BooleanInput } from '@radix-ng/primitives/core';
4
5
 
5
6
  interface FocusScopeAPI {
@@ -12,7 +13,7 @@ interface FocusScopeContext {
12
13
  loop?: Signal<boolean>;
13
14
  trapped?: Signal<boolean>;
14
15
  }
15
- declare const injectFocusScopeContext: (optional?: boolean) => FocusScopeContext | null;
16
+ declare const injectFocusScopeContext: _radix_ng_primitives_core.InjectContext<FocusScopeContext>;
16
17
  declare const provideFocusScopeContext: (useFactory: () => FocusScopeContext) => _angular_core.Provider;
17
18
  /**
18
19
  * @group Components
@@ -34,6 +34,8 @@ interface RdxMenuRootContext {
34
34
  isSubmenu: Signal<boolean>;
35
35
  hasTriggerInteractionHandler: Signal<boolean>;
36
36
  trigger: Signal<HTMLElement | undefined>;
37
+ /** The popup element, once mounted. Used by submenu safe-polygon geometry. */
38
+ popupElement: Signal<HTMLElement | undefined>;
37
39
  transitionStatus: Signal<RdxMenuTransitionStatus>;
38
40
  close: () => void;
39
41
  toggle: () => void;
@@ -41,6 +43,7 @@ interface RdxMenuRootContext {
41
43
  /** Open the menu without moving focus into the popup (used for menubar hover-switching). */
42
44
  showWithoutAutoFocus: () => void;
43
45
  registerTrigger: (el: HTMLElement) => () => void;
46
+ registerPopup: (el: HTMLElement) => () => void;
44
47
  registerTransitionElement: (element: HTMLElement) => () => void;
45
48
  registerPopupArrowNavigationHandler: (handler: (offset: 1 | -1) => boolean) => () => void;
46
49
  registerTriggerInteractionHandler: (handler: RdxMenuTriggerInteractionHandler) => () => void;
@@ -77,7 +80,7 @@ type RdxMenuTriggerInteraction = {
77
80
  event: Event;
78
81
  };
79
82
  type RdxMenuTriggerInteractionHandler = (interaction: RdxMenuTriggerInteraction) => boolean;
80
- declare const injectRdxMenuRootContext: (optional?: boolean) => RdxMenuRootContext | null;
83
+ declare const injectRdxMenuRootContext: _radix_ng_primitives_core.InjectContext<RdxMenuRootContext>;
81
84
  declare const provideRdxMenuRootContext: (useFactory: () => RdxMenuRootContext) => _angular_core.Provider;
82
85
  /**
83
86
  * Groups all parts of a menu.
@@ -111,6 +114,7 @@ declare class RdxMenuRoot {
111
114
  /** Emits when the open/close CSS transition or animation finishes. */
112
115
  readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
113
116
  readonly trigger: _angular_core.WritableSignal<HTMLElement | undefined>;
117
+ readonly popupElement: _angular_core.WritableSignal<HTMLElement | undefined>;
114
118
  readonly transitionStatus: Signal<_radix_ng_primitives_core.RdxTransitionStatus>;
115
119
  /** Whether the popup grabs focus when it opens. Set false for menubar hover-switching. */
116
120
  readonly autoFocus: _angular_core.WritableSignal<RdxMenuAutoFocus>;
@@ -122,6 +126,7 @@ declare class RdxMenuRoot {
122
126
  close(): void;
123
127
  toggle(): void;
124
128
  registerTrigger(el: HTMLElement): () => void;
129
+ registerPopup(el: HTMLElement): () => void;
125
130
  registerTransitionElement(element: HTMLElement): () => void;
126
131
  registerPopupArrowNavigationHandler(handler: (offset: 1 | -1) => boolean): () => void;
127
132
  handlePopupArrowNavigation(offset: 1 | -1): boolean;
@@ -186,8 +191,14 @@ declare class RdxMenuSubTrigger {
186
191
  private readonly submenuRoot;
187
192
  private readonly elementRef;
188
193
  private readonly destroyRef;
194
+ private readonly isBrowser;
189
195
  private readonly isFocused;
190
196
  private openTimer;
197
+ private closeTimer;
198
+ /** Cursor position from the last pointer move over the trigger (safe-polygon apex). */
199
+ private lastPointer;
200
+ /** Whether the current open was initiated by hover (vs keyboard / click). */
201
+ private openedByHover;
191
202
  /** Whether this trigger (and therefore the submenu) is disabled. */
192
203
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
193
204
  /** Whether this trigger should be treated as a native button. Auto-detected for `<button>`. */
@@ -204,6 +215,7 @@ declare class RdxMenuSubTrigger {
204
215
  protected readonly highlighted: _angular_core.Signal<boolean>;
205
216
  protected readonly nativeButtonState: _angular_core.Signal<boolean>;
206
217
  constructor();
218
+ private scheduleClose;
207
219
  protected onFocus(): void;
208
220
  protected onBlur(): void;
209
221
  protected onClick(): void;
@@ -481,7 +493,7 @@ declare function getCheckedState(checked: CheckedState): 'checked' | 'unchecked'
481
493
  interface RdxMenuCheckboxItemContext {
482
494
  checked: Signal<CheckedState>;
483
495
  }
484
- declare const injectRdxMenuCheckboxItemContext: (optional?: boolean) => RdxMenuCheckboxItemContext | null;
496
+ declare const injectRdxMenuCheckboxItemContext: _radix_ng_primitives_core.InjectContext<RdxMenuCheckboxItemContext>;
485
497
  declare const provideRdxMenuCheckboxItemContext: (useFactory: () => RdxMenuCheckboxItemContext) => _angular_core.Provider;
486
498
  /**
487
499
  * A menu item that can be checked or unchecked.
@@ -532,7 +544,7 @@ interface RdxMenuRadioGroupContext {
532
544
  value: Signal<string | undefined>;
533
545
  selectValue: (value: string) => void;
534
546
  }
535
- declare const injectRdxMenuRadioGroupContext: (optional?: boolean) => RdxMenuRadioGroupContext | null;
547
+ declare const injectRdxMenuRadioGroupContext: _radix_ng_primitives_core.InjectContext<RdxMenuRadioGroupContext>;
536
548
  declare const provideRdxMenuRadioGroupContext: (useFactory: () => RdxMenuRadioGroupContext) => _angular_core.Provider;
537
549
  /**
538
550
  * Groups radio items in a menu.
@@ -554,7 +566,7 @@ declare class RdxMenuRadioGroup {
554
566
  interface RdxMenuRadioItemContext {
555
567
  checked: Signal<boolean>;
556
568
  }
557
- declare const injectRdxMenuRadioItemContext: (optional?: boolean) => RdxMenuRadioItemContext | null;
569
+ declare const injectRdxMenuRadioItemContext: _radix_ng_primitives_core.InjectContext<RdxMenuRadioItemContext>;
558
570
  declare const provideRdxMenuRadioItemContext: (useFactory: () => RdxMenuRadioItemContext) => _angular_core.Provider;
559
571
  /**
560
572
  * A radio item within a menu radio group.
@@ -1,5 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal } from '@angular/core';
3
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
3
4
  import { BooleanInput } from '@radix-ng/primitives/core';
4
5
 
5
6
  type RdxMenubarOrientation = 'horizontal' | 'vertical';
@@ -14,7 +15,7 @@ interface RdxMenubarContext {
14
15
  focusAdjacent: (currentId: string, offset: 1 | -1, openOnMove: boolean) => void;
15
16
  focusBoundary: (boundary: 'first' | 'last', openOnMove: boolean) => void;
16
17
  }
17
- declare const injectRdxMenubarContext: (optional?: boolean) => RdxMenubarContext | null;
18
+ declare const injectRdxMenubarContext: _radix_ng_primitives_core.InjectContext<RdxMenubarContext>;
18
19
  declare const provideRdxMenubarContext: (useFactory: () => RdxMenubarContext) => _angular_core.Provider;
19
20
  /**
20
21
  * Container for a horizontal application menu bar.
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
2
3
 
3
4
  type MeterValueFormatter = (formattedValue: string, value: number) => string;
4
5
  interface MeterProps {
@@ -21,7 +22,7 @@ declare const meterRootContext: () => {
21
22
  ariaValueTextState: _angular_core.Signal<string | undefined>;
22
23
  };
23
24
  type RdxMeterRootContext = ReturnType<typeof meterRootContext>;
24
- declare const injectMeterRootContext: (optional?: boolean) => {
25
+ declare const injectMeterRootContext: _radix_ng_primitives_core.InjectContext<{
25
26
  labelId: _angular_core.InputSignal<string>;
26
27
  valueId: _angular_core.InputSignal<string>;
27
28
  minState: _angular_core.Signal<number>;
@@ -30,7 +31,7 @@ declare const injectMeterRootContext: (optional?: boolean) => {
30
31
  percentageState: _angular_core.Signal<number>;
31
32
  formattedValueState: _angular_core.Signal<string>;
32
33
  ariaValueTextState: _angular_core.Signal<string | undefined>;
33
- } | null;
34
+ }>;
34
35
  declare const provideMeterRootContext: (useFactory: () => {
35
36
  labelId: _angular_core.InputSignal<string>;
36
37
  valueId: _angular_core.InputSignal<string>;
@@ -75,7 +75,7 @@ interface RdxNavigationMenuRootContext {
75
75
  registerTransitionElement(element: HTMLElement): () => void;
76
76
  registerViewport(onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void): () => void;
77
77
  }
78
- declare const injectNavigationMenuRootContext: (optional?: boolean) => RdxNavigationMenuRootContext | null;
78
+ declare const injectNavigationMenuRootContext: _radix_ng_primitives_core.InjectContext<RdxNavigationMenuRootContext>;
79
79
  declare const provideNavigationMenuRootContext: (useFactory: () => RdxNavigationMenuRootContext) => _angular_core.Provider;
80
80
 
81
81
  /**
@@ -1,10 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal } from '@angular/core';
3
- import * as i1 from '@radix-ng/primitives/core';
3
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
4
  import { RdxFormValueControl, RdxControlValueAccessor, NumberInput, BooleanInput } from '@radix-ng/primitives/core';
5
5
  import * as _radix_ng_primitives_number_field from '@radix-ng/primitives/number-field';
6
6
  import { NumberFormatter, NumberParser } from '@internationalized/number';
7
- import * as i1$1 from '@radix-ng/primitives/portal';
7
+ import * as i1 from '@radix-ng/primitives/portal';
8
8
 
9
9
  /**
10
10
  * The software keyboard hint shown on touch devices, mapped to the input's `inputmode` attribute.
@@ -188,7 +188,7 @@ declare class RdxNumberFieldRoot implements RdxFormValueControl<number | null> {
188
188
  commitValue(value: number | null): void;
189
189
  private applyValue;
190
190
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldRoot, never>;
191
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldRoot, "div[rdxNumberFieldRoot]", ["rdxNumberFieldRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "smallStep": { "alias": "smallStep"; "required": false; "isSignal": true; }; "largeStep": { "alias": "largeStep"; "required": false; "isSignal": true; }; "snapOnStep": { "alias": "snapOnStep"; "required": false; "isSignal": true; }; "allowOutOfRange": { "alias": "allowOutOfRange"; "required": false; "isSignal": true; }; "allowWheelScrub": { "alias": "allowWheelScrub"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onValueCommitted": "onValueCommitted"; }, never, never, true, [{ directive: typeof i1.RdxControlValueAccessor; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
191
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldRoot, "div[rdxNumberFieldRoot]", ["rdxNumberFieldRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "smallStep": { "alias": "smallStep"; "required": false; "isSignal": true; }; "largeStep": { "alias": "largeStep"; "required": false; "isSignal": true; }; "snapOnStep": { "alias": "snapOnStep"; "required": false; "isSignal": true; }; "allowOutOfRange": { "alias": "allowOutOfRange"; "required": false; "isSignal": true; }; "allowWheelScrub": { "alias": "allowWheelScrub"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; "onValueCommitted": "onValueCommitted"; }, never, never, true, [{ directive: typeof _radix_ng_primitives_core.RdxControlValueAccessor; inputs: { "value": "value"; "disabled": "disabled"; }; outputs: {}; }]>;
192
192
  }
193
193
 
194
194
  /**
@@ -379,7 +379,7 @@ interface RdxNumberFieldScrubAreaContext {
379
379
  *
380
380
  * @see https://base-ui.com/react/components/number-field
381
381
  */
382
- declare const injectNumberFieldScrubAreaContext: (optional?: boolean) => RdxNumberFieldScrubAreaContext | null;
382
+ declare const injectNumberFieldScrubAreaContext: _radix_ng_primitives_core.InjectContext<RdxNumberFieldScrubAreaContext>;
383
383
  declare const provideNumberFieldScrubAreaContext: (useFactory: () => RdxNumberFieldScrubAreaContext) => _angular_core.Provider;
384
384
 
385
385
  type ScrubDirection = 'horizontal' | 'vertical';
@@ -441,7 +441,7 @@ declare class RdxNumberFieldScrubAreaCursor {
441
441
  protected readonly shouldRender: _angular_core.Signal<boolean>;
442
442
  constructor();
443
443
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxNumberFieldScrubAreaCursor, never>;
444
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldScrubAreaCursor, "[rdxNumberFieldScrubAreaCursor]", ["rdxNumberFieldScrubAreaCursor"], {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPortal; inputs: {}; outputs: {}; }]>;
444
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxNumberFieldScrubAreaCursor, "[rdxNumberFieldScrubAreaCursor]", ["rdxNumberFieldScrubAreaCursor"], {}, {}, never, never, true, [{ directive: typeof i1.RdxPortal; inputs: {}; outputs: {}; }]>;
445
445
  }
446
446
 
447
447
  /**
@@ -451,7 +451,7 @@ declare class RdxNumberFieldScrubAreaCursor {
451
451
  *
452
452
  * @see https://base-ui.com/react/components/number-field
453
453
  */
454
- declare const injectNumberFieldRootContext: (optional?: boolean) => RdxNumberFieldRoot | null;
454
+ declare const injectNumberFieldRootContext: _radix_ng_primitives_core.InjectContext<RdxNumberFieldRoot>;
455
455
  declare const provideNumberFieldRootContext: (useFactory: () => RdxNumberFieldRoot) => _angular_core.Provider;
456
456
 
457
457
  declare class RdxNumberFieldModule {
@@ -1,6 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal, ElementRef } from '@angular/core';
3
3
  import * as i1 from '@radix-ng/primitives/presence';
4
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
5
  import { RdxTransitionStatus, BooleanInput, NumberInput } from '@radix-ng/primitives/core';
5
6
  import * as i1$1 from '@radix-ng/primitives/popper';
6
7
  import { RdxPopperContentWrapper, RdxPopperAnchorElement } from '@radix-ng/primitives/popper';
@@ -72,7 +73,7 @@ interface RdxPopoverRootContext {
72
73
  registerViewport: (onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void) => () => void;
73
74
  toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;
74
75
  }
75
- declare const injectRdxPopoverRootContext: (optional?: boolean) => RdxPopoverRootContext | null;
76
+ declare const injectRdxPopoverRootContext: _radix_ng_primitives_core.InjectContext<RdxPopoverRootContext>;
76
77
  declare const provideRdxPopoverRootContext: (useFactory: () => RdxPopoverRootContext) => _angular_core.Provider;
77
78
  type RdxPopoverTransitionStatus = RdxTransitionStatus;
78
79
  /**
@@ -1,6 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { ElementRef, InjectionToken, Provider } from '@angular/core';
3
3
  import { ReferenceElement, Placement, Middleware, VirtualElement } from '@floating-ui/dom';
4
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
5
  import { NumberInput, BooleanInput } from '@radix-ng/primitives/core';
5
6
 
6
7
  declare class RdxPopperAnchor {
@@ -59,7 +60,7 @@ declare const context: () => {
59
60
  anchorHidden: _angular_core.Signal<boolean>;
60
61
  };
61
62
  type PopperContentWrapperContext = ReturnType<typeof context>;
62
- declare const injectPopperContentWrapperContext: (optional?: boolean) => {
63
+ declare const injectPopperContentWrapperContext: _radix_ng_primitives_core.InjectContext<{
63
64
  placedSide: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
64
65
  placedAlign: _angular_core.Signal<"start" | "center" | "end" | undefined>;
65
66
  arrowX: _angular_core.Signal<number | undefined>;
@@ -67,7 +68,7 @@ declare const injectPopperContentWrapperContext: (optional?: boolean) => {
67
68
  shouldHideArrow: _angular_core.Signal<boolean>;
68
69
  isPositioned: _angular_core.Signal<boolean>;
69
70
  anchorHidden: _angular_core.Signal<boolean>;
70
- } | null;
71
+ }>;
71
72
  declare const providePopperContentWrapperContext: (useFactory: () => {
72
73
  placedSide: _angular_core.Signal<"top" | "right" | "bottom" | "left" | undefined>;
73
74
  placedAlign: _angular_core.Signal<"start" | "center" | "end" | undefined>;
@@ -144,6 +145,12 @@ declare class RdxPopperContentWrapper {
144
145
  */
145
146
  readonly placed: _angular_core.OutputEmitterRef<void>;
146
147
  readonly arrow: _angular_core.Signal<any>;
148
+ /**
149
+ * When `true`, the content is rendered click/hover-through (`pointer-events: none`). Used for
150
+ * cursor-following content (e.g. a tooltip tracking the pointer) that must never intercept the
151
+ * pointer and steal hover from its trigger.
152
+ */
153
+ readonly nonInteractive: _angular_core.WritableSignal<boolean>;
147
154
  readonly shouldHideArrow: _angular_core.Signal<boolean>;
148
155
  /** Whether the arrow could not be centered on the anchor because the popup was shifted. */
149
156
  readonly arrowUncentered: _angular_core.Signal<boolean>;
@@ -157,6 +164,16 @@ declare class RdxPopperContentWrapper {
157
164
  private readonly detectOverflowOptions;
158
165
  private readonly resolvedAnchor;
159
166
  private readonly position;
167
+ /**
168
+ * The last successfully computed position, retained while a new one is being computed.
169
+ *
170
+ * The `position` resource resets `value()` to `undefined` whenever its params change (e.g. on
171
+ * every pointer move while a tooltip tracks the cursor). Reading it directly would blank the
172
+ * popup (`visibility: hidden` + off-screen transform) for the frames between a move and the next
173
+ * resolved position — a visible flicker at high pointer-move rates. Holding the previous value
174
+ * keeps the popup placed and visible until the new position is ready.
175
+ */
176
+ private readonly resolvedPosition;
160
177
  /**
161
178
  * Whether the panel is positioned.
162
179
  */
@@ -64,7 +64,7 @@ interface RdxPreviewCardRootContext {
64
64
  registerViewport: (onTriggerChange: (previous: HTMLElement, next: HTMLElement) => void) => () => void;
65
65
  toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;
66
66
  }
67
- declare const injectRdxPreviewCardRootContext: (optional?: boolean) => RdxPreviewCardRootContext | null;
67
+ declare const injectRdxPreviewCardRootContext: _radix_ng_primitives_core.InjectContext<RdxPreviewCardRootContext>;
68
68
  declare const provideRdxPreviewCardRootContext: (useFactory: () => RdxPreviewCardRootContext) => _angular_core.Provider;
69
69
  type RdxPreviewCardTransitionStatus = 'starting' | 'ending' | undefined;
70
70
  /**
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
2
3
  import * as _radix_ng_primitives_progress from '@radix-ng/primitives/progress';
3
4
 
4
5
  type ProgressState = 'indeterminate' | 'complete' | 'progressing';
@@ -23,7 +24,7 @@ declare const progressRootContext: () => {
23
24
  indeterminateState: _angular_core.Signal<boolean>;
24
25
  };
25
26
  type RdxProgressRootContext = ReturnType<typeof progressRootContext>;
26
- declare const injectProgressRootContext: (optional?: boolean) => {
27
+ declare const injectProgressRootContext: _radix_ng_primitives_core.InjectContext<{
27
28
  labelId: _angular_core.InputSignal<string>;
28
29
  valueId: _angular_core.InputSignal<string>;
29
30
  minState: _angular_core.Signal<number>;
@@ -35,7 +36,7 @@ declare const injectProgressRootContext: (optional?: boolean) => {
35
36
  completeState: _angular_core.Signal<boolean>;
36
37
  progressingState: _angular_core.Signal<boolean>;
37
38
  indeterminateState: _angular_core.Signal<boolean>;
38
- } | null;
39
+ }>;
39
40
  declare const provideProgressRootContext: (useFactory: () => {
40
41
  labelId: _angular_core.InputSignal<string>;
41
42
  valueId: _angular_core.InputSignal<string>;
@@ -1,5 +1,6 @@
1
- import * as _angular_core from '@angular/core';
1
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
2
2
  import { BooleanInput } from '@radix-ng/primitives/core';
3
+ import * as _angular_core from '@angular/core';
3
4
  import * as _radix_ng_primitives_roving_focus from '@radix-ng/primitives/roving-focus';
4
5
 
5
6
  type Orientation = 'horizontal' | 'vertical';
@@ -18,7 +19,7 @@ declare const rootContext: () => {
18
19
  unregisterItem: (item: HTMLElement, tabStopId: string) => void;
19
20
  };
20
21
  type RovingFocusGroupContext = ReturnType<typeof rootContext>;
21
- declare const injectRovingFocusGroupContext: (optional?: boolean) => {
22
+ declare const injectRovingFocusGroupContext: _radix_ng_primitives_core.InjectContext<{
22
23
  loop: _angular_core.Signal<boolean>;
23
24
  dir: _angular_core.Signal<Direction>;
24
25
  orientation: _angular_core.Signal<Orientation>;
@@ -28,7 +29,7 @@ declare const injectRovingFocusGroupContext: (optional?: boolean) => {
28
29
  onItemShiftTab: () => void;
29
30
  registerItem: (item: HTMLElement, tabStopId: string) => void;
30
31
  unregisterItem: (item: HTMLElement, tabStopId: string) => void;
31
- } | null;
32
+ }>;
32
33
  declare const provideRovingFocusGroupContext: (useFactory: () => {
33
34
  loop: _angular_core.Signal<boolean>;
34
35
  dir: _angular_core.Signal<Direction>;
@@ -0,0 +1,253 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Signal } from '@angular/core';
3
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
4
+ import { Direction, BooleanInput } from '@radix-ng/primitives/core';
5
+ import * as _radix_ng_primitives_scroll_area from '@radix-ng/primitives/scroll-area';
6
+
7
+ type Size = {
8
+ width: number;
9
+ height: number;
10
+ };
11
+ type Coords = {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ type OverflowEdges = {
16
+ xStart: boolean;
17
+ xEnd: boolean;
18
+ yStart: boolean;
19
+ yEnd: boolean;
20
+ };
21
+ type HiddenState = {
22
+ x: boolean;
23
+ y: boolean;
24
+ corner: boolean;
25
+ };
26
+ /** A minimal, React-`ref`-like mutable holder shared through context. */
27
+ type MutableRef<T> = {
28
+ current: T | null;
29
+ };
30
+ type OverflowEdgeThreshold = number | Partial<{
31
+ xStart: number;
32
+ xEnd: number;
33
+ yStart: number;
34
+ yEnd: number;
35
+ }>;
36
+ interface ScrollAreaRootContext {
37
+ readonly rootId: string;
38
+ readonly direction: Signal<Direction>;
39
+ readonly overflowEdgeThreshold: Signal<{
40
+ xStart: number;
41
+ xEnd: number;
42
+ yStart: number;
43
+ yEnd: number;
44
+ }>;
45
+ readonly hovering: Signal<boolean>;
46
+ readonly scrollingX: Signal<boolean>;
47
+ readonly scrollingY: Signal<boolean>;
48
+ readonly touchModality: Signal<boolean>;
49
+ readonly hasMeasuredScrollbar: Signal<boolean>;
50
+ readonly cornerSize: Signal<Size>;
51
+ readonly thumbSize: Signal<Size>;
52
+ readonly hiddenState: Signal<HiddenState>;
53
+ readonly overflowEdges: Signal<OverflowEdges>;
54
+ readonly rootRef: MutableRef<HTMLElement>;
55
+ readonly viewportRef: MutableRef<HTMLElement>;
56
+ readonly scrollbarYRef: MutableRef<HTMLElement>;
57
+ readonly scrollbarXRef: MutableRef<HTMLElement>;
58
+ readonly thumbYRef: MutableRef<HTMLElement>;
59
+ readonly thumbXRef: MutableRef<HTMLElement>;
60
+ readonly cornerRef: MutableRef<HTMLElement>;
61
+ setHovering(value: boolean): void;
62
+ setHasMeasuredScrollbar(value: boolean): void;
63
+ setScrollingX(value: boolean): void;
64
+ setScrollingY(value: boolean): void;
65
+ setThumbSize(value: Size): void;
66
+ setCornerSize(value: Size): void;
67
+ setHiddenState(value: HiddenState): void;
68
+ setOverflowEdges(value: OverflowEdges): void;
69
+ handleScroll(position: Coords): void;
70
+ handlePointerDown(event: PointerEvent): void;
71
+ handlePointerMove(event: PointerEvent): void;
72
+ handlePointerUp(event: PointerEvent): void;
73
+ }
74
+ declare const injectScrollAreaRootContext: _radix_ng_primitives_core.InjectContext<ScrollAreaRootContext>;
75
+ declare const provideScrollAreaRootContext: (useFactory: () => ScrollAreaRootContext) => _angular_core.Provider;
76
+ /**
77
+ * Groups all parts of the scroll area.
78
+ * Renders a `<div>` element.
79
+ *
80
+ * @group Components
81
+ */
82
+ declare class RdxScrollAreaRoot {
83
+ private readonly destroyRef;
84
+ readonly rootId: string;
85
+ /** Text direction of the scroll area. Affects horizontal (RTL) scroll math. */
86
+ readonly dir: _angular_core.InputSignal<Direction>;
87
+ readonly direction: Signal<Direction>;
88
+ /**
89
+ * The threshold in pixels that must be passed before the overflow edge attributes are applied.
90
+ * Accepts a single number for all edges or an object to configure them individually.
91
+ */
92
+ readonly overflowEdgeThreshold: _angular_core.InputSignal<OverflowEdgeThreshold>;
93
+ readonly normalizedThreshold: Signal<{
94
+ xStart: number;
95
+ xEnd: number;
96
+ yStart: number;
97
+ yEnd: number;
98
+ }>;
99
+ readonly hovering: _angular_core.WritableSignal<boolean>;
100
+ readonly scrollingX: _angular_core.WritableSignal<boolean>;
101
+ readonly scrollingY: _angular_core.WritableSignal<boolean>;
102
+ readonly touchModality: _angular_core.WritableSignal<boolean>;
103
+ readonly hasMeasuredScrollbar: _angular_core.WritableSignal<boolean>;
104
+ readonly cornerSize: _angular_core.WritableSignal<Size>;
105
+ readonly thumbSize: _angular_core.WritableSignal<Size>;
106
+ readonly hiddenState: _angular_core.WritableSignal<HiddenState>;
107
+ readonly overflowEdges: _angular_core.WritableSignal<OverflowEdges>;
108
+ readonly rootRef: MutableRef<HTMLElement>;
109
+ readonly viewportRef: MutableRef<HTMLElement>;
110
+ readonly scrollbarYRef: MutableRef<HTMLElement>;
111
+ readonly scrollbarXRef: MutableRef<HTMLElement>;
112
+ readonly thumbYRef: MutableRef<HTMLElement>;
113
+ readonly thumbXRef: MutableRef<HTMLElement>;
114
+ readonly cornerRef: MutableRef<HTMLElement>;
115
+ private thumbDragging;
116
+ private startY;
117
+ private startX;
118
+ private startScrollTop;
119
+ private startScrollLeft;
120
+ private currentOrientation;
121
+ private scrollPosition;
122
+ private scrollYTimer;
123
+ private scrollXTimer;
124
+ constructor();
125
+ setScrollingX(value: boolean): void;
126
+ setScrollingY(value: boolean): void;
127
+ setThumbSize(value: Size): void;
128
+ setCornerSize(value: Size): void;
129
+ setHiddenState(value: HiddenState): void;
130
+ setOverflowEdges(value: OverflowEdges): void;
131
+ handleScroll(scrollPosition: Coords): void;
132
+ handlePointerDown(event: PointerEvent): void;
133
+ handlePointerMove(event: PointerEvent): void;
134
+ handlePointerUp(event: PointerEvent): void;
135
+ onTouchModalityChange(event: PointerEvent): void;
136
+ onPointerEnterOrMove(event: PointerEvent): void;
137
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaRoot, never>;
138
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaRoot, "[rdxScrollAreaRoot]", ["rdxScrollAreaRoot"], { "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "overflowEdgeThreshold": { "alias": "overflowEdgeThreshold"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
139
+ }
140
+
141
+ interface ScrollAreaViewportContext {
142
+ /** Re-measures the viewport and repositions the thumbs. Called by the content's ResizeObserver. */
143
+ computeThumbPosition(): void;
144
+ }
145
+ declare const injectScrollAreaViewportContext: _radix_ng_primitives_core.InjectContext<ScrollAreaViewportContext>;
146
+ declare const provideScrollAreaViewportContext: (useFactory: () => ScrollAreaViewportContext) => _angular_core.Provider;
147
+ /**
148
+ * The actual scrollable container of the scroll area.
149
+ * Renders a `<div>` element.
150
+ *
151
+ * @group Components
152
+ */
153
+ declare class RdxScrollAreaViewport {
154
+ protected readonly rootContext: _radix_ng_primitives_scroll_area.ScrollAreaRootContext;
155
+ private readonly element;
156
+ private readonly destroyRef;
157
+ private readonly isBrowser;
158
+ private programmaticScroll;
159
+ private lastMeasuredMetrics;
160
+ private scrollEndTimer;
161
+ private animationsTimer;
162
+ constructor();
163
+ computeThumbPosition(): void;
164
+ onScroll(): void;
165
+ onUserInteraction(): void;
166
+ private observeViewport;
167
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaViewport, never>;
168
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaViewport, "[rdxScrollAreaViewport]", ["rdxScrollAreaViewport"], {}, {}, never, never, true, never>;
169
+ }
170
+
171
+ /**
172
+ * A container for the content of the scroll area.
173
+ * Renders a `<div>` element.
174
+ *
175
+ * @group Components
176
+ */
177
+ declare class RdxScrollAreaContent {
178
+ protected readonly rootContext: _radix_ng_primitives_scroll_area.ScrollAreaRootContext;
179
+ private readonly viewportContext;
180
+ private readonly element;
181
+ private readonly destroyRef;
182
+ constructor();
183
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaContent, never>;
184
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaContent, "[rdxScrollAreaContent]", ["rdxScrollAreaContent"], {}, {}, never, never, true, never>;
185
+ }
186
+
187
+ type ScrollbarOrientation = 'vertical' | 'horizontal';
188
+ interface ScrollAreaScrollbarContext {
189
+ orientation: () => ScrollbarOrientation;
190
+ }
191
+ declare const injectScrollAreaScrollbarContext: _radix_ng_primitives_core.InjectContext<ScrollAreaScrollbarContext>;
192
+ declare const provideScrollAreaScrollbarContext: (useFactory: () => ScrollAreaScrollbarContext) => _angular_core.Provider;
193
+ /**
194
+ * A vertical or horizontal scrollbar for the scroll area.
195
+ * Renders a `<div>` element.
196
+ *
197
+ * @group Components
198
+ */
199
+ declare class RdxScrollAreaScrollbar {
200
+ protected readonly rootContext: _radix_ng_primitives_scroll_area.ScrollAreaRootContext;
201
+ private readonly element;
202
+ /** Whether the scrollbar controls vertical or horizontal scroll. */
203
+ readonly orientation: _angular_core.InputSignal<ScrollbarOrientation>;
204
+ /** Whether to keep the element rendered when the viewport isn't scrollable. */
205
+ readonly keepMounted: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
206
+ protected readonly scrolling: _angular_core.Signal<boolean>;
207
+ private readonly isHidden;
208
+ protected readonly shouldRender: _angular_core.Signal<boolean>;
209
+ protected readonly hideTrackUntilMeasured: _angular_core.Signal<boolean>;
210
+ constructor();
211
+ onWheel(event: WheelEvent): void;
212
+ onPointerDown(event: PointerEvent): void;
213
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaScrollbar, never>;
214
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaScrollbar, "[rdxScrollAreaScrollbar]", ["rdxScrollAreaScrollbar"], { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "keepMounted": { "alias": "keepMounted"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
215
+ }
216
+
217
+ /**
218
+ * The draggable part of the scrollbar that indicates the current scroll position.
219
+ * Renders a `<div>` element.
220
+ *
221
+ * @group Components
222
+ */
223
+ declare class RdxScrollAreaThumb {
224
+ protected readonly rootContext: _radix_ng_primitives_scroll_area.ScrollAreaRootContext;
225
+ protected readonly scrollbarContext: _radix_ng_primitives_scroll_area.ScrollAreaScrollbarContext;
226
+ private readonly element;
227
+ constructor();
228
+ endDrag(event: PointerEvent): void;
229
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaThumb, never>;
230
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaThumb, "[rdxScrollAreaThumb]", ["rdxScrollAreaThumb"], {}, {}, never, never, true, never>;
231
+ }
232
+
233
+ /**
234
+ * A small rectangular area that appears at the intersection of horizontal and vertical scrollbars.
235
+ * Renders a `<div>` element.
236
+ *
237
+ * @group Components
238
+ */
239
+ declare class RdxScrollAreaCorner {
240
+ protected readonly rootContext: _radix_ng_primitives_scroll_area.ScrollAreaRootContext;
241
+ constructor();
242
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaCorner, never>;
243
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxScrollAreaCorner, "[rdxScrollAreaCorner]", ["rdxScrollAreaCorner"], {}, {}, never, never, true, never>;
244
+ }
245
+
246
+ declare class RdxScrollAreaModule {
247
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxScrollAreaModule, never>;
248
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxScrollAreaModule, never, [typeof RdxScrollAreaRoot, typeof RdxScrollAreaViewport, typeof RdxScrollAreaContent, typeof RdxScrollAreaScrollbar, typeof RdxScrollAreaThumb, typeof RdxScrollAreaCorner], [typeof RdxScrollAreaRoot, typeof RdxScrollAreaViewport, typeof RdxScrollAreaContent, typeof RdxScrollAreaScrollbar, typeof RdxScrollAreaThumb, typeof RdxScrollAreaCorner]>;
249
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxScrollAreaModule>;
250
+ }
251
+
252
+ export { RdxScrollAreaContent, RdxScrollAreaCorner, RdxScrollAreaModule, RdxScrollAreaRoot, RdxScrollAreaScrollbar, RdxScrollAreaThumb, RdxScrollAreaViewport, injectScrollAreaRootContext, injectScrollAreaScrollbarContext, injectScrollAreaViewportContext, provideScrollAreaRootContext, provideScrollAreaScrollbarContext, provideScrollAreaViewportContext };
253
+ export type { Coords, HiddenState, MutableRef, OverflowEdgeThreshold, OverflowEdges, ScrollAreaRootContext, ScrollAreaScrollbarContext, ScrollAreaViewportContext, ScrollbarOrientation, Size };