@radix-ng/primitives 0.51.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 (186) hide show
  1. package/fesm2022/radix-ng-primitives-accordion.mjs +105 -38
  2. package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
  3. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +221 -129
  4. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
  5. package/fesm2022/radix-ng-primitives-arrow.mjs +20 -4
  6. package/fesm2022/radix-ng-primitives-arrow.mjs.map +1 -1
  7. package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
  8. package/fesm2022/radix-ng-primitives-avatar.mjs +54 -61
  9. package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
  10. package/fesm2022/radix-ng-primitives-button.mjs +123 -0
  11. package/fesm2022/radix-ng-primitives-button.mjs.map +1 -0
  12. package/fesm2022/radix-ng-primitives-calendar.mjs +95 -83
  13. package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
  14. package/fesm2022/radix-ng-primitives-checkbox.mjs +378 -54
  15. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
  16. package/fesm2022/radix-ng-primitives-collapsible.mjs +182 -81
  17. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
  18. package/fesm2022/radix-ng-primitives-collection.mjs +40 -57
  19. package/fesm2022/radix-ng-primitives-collection.mjs.map +1 -1
  20. package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
  21. package/fesm2022/radix-ng-primitives-context-menu.mjs +140 -424
  22. package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
  23. package/fesm2022/radix-ng-primitives-core.mjs +845 -744
  24. package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
  25. package/fesm2022/radix-ng-primitives-cropper.mjs +288 -308
  26. package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
  27. package/fesm2022/radix-ng-primitives-date-field.mjs +104 -58
  28. package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
  29. package/fesm2022/radix-ng-primitives-dialog.mjs +655 -327
  30. package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
  31. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +70 -46
  32. package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
  33. package/fesm2022/radix-ng-primitives-drawer.mjs +960 -0
  34. package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -0
  35. package/fesm2022/radix-ng-primitives-editable.mjs +304 -23
  36. package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
  37. package/fesm2022/radix-ng-primitives-field.mjs +363 -0
  38. package/fesm2022/radix-ng-primitives-field.mjs.map +1 -0
  39. package/fesm2022/radix-ng-primitives-fieldset.mjs +79 -0
  40. package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -0
  41. package/fesm2022/radix-ng-primitives-focus-scope.mjs +23 -8
  42. package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
  43. package/fesm2022/radix-ng-primitives-input.mjs +172 -0
  44. package/fesm2022/radix-ng-primitives-input.mjs.map +1 -0
  45. package/fesm2022/radix-ng-primitives-label.mjs +6 -6
  46. package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
  47. package/fesm2022/radix-ng-primitives-menu.mjs +1907 -363
  48. package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
  49. package/fesm2022/radix-ng-primitives-menubar.mjs +290 -162
  50. package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
  51. package/fesm2022/radix-ng-primitives-meter.mjs +271 -0
  52. package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -0
  53. package/fesm2022/radix-ng-primitives-navigation-menu.mjs +1052 -1553
  54. package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
  55. package/fesm2022/radix-ng-primitives-number-field.mjs +1102 -367
  56. package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
  57. package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
  58. package/fesm2022/radix-ng-primitives-popover.mjs +978 -989
  59. package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
  60. package/fesm2022/radix-ng-primitives-popper.mjs +111 -44
  61. package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
  62. package/fesm2022/radix-ng-primitives-portal.mjs +34 -10
  63. package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
  64. package/fesm2022/radix-ng-primitives-presence.mjs +134 -246
  65. package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
  66. package/fesm2022/radix-ng-primitives-preview-card.mjs +997 -0
  67. package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -0
  68. package/fesm2022/radix-ng-primitives-progress.mjs +223 -84
  69. package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
  70. package/fesm2022/radix-ng-primitives-radio.mjs +191 -51
  71. package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
  72. package/fesm2022/radix-ng-primitives-roving-focus.mjs +96 -50
  73. package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
  74. package/fesm2022/radix-ng-primitives-scroll-area.mjs +923 -0
  75. package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -0
  76. package/fesm2022/radix-ng-primitives-select.mjs +791 -509
  77. package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
  78. package/fesm2022/radix-ng-primitives-separator.mjs +12 -35
  79. package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
  80. package/fesm2022/radix-ng-primitives-slider.mjs +969 -717
  81. package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
  82. package/fesm2022/radix-ng-primitives-stepper.mjs +15 -19
  83. package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
  84. package/fesm2022/radix-ng-primitives-switch.mjs +125 -113
  85. package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
  86. package/fesm2022/radix-ng-primitives-tabs.mjs +390 -108
  87. package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
  88. package/fesm2022/radix-ng-primitives-time-field.mjs +55 -46
  89. package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
  90. package/fesm2022/radix-ng-primitives-toast.mjs +839 -0
  91. package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -0
  92. package/fesm2022/radix-ng-primitives-toggle-group.mjs +121 -247
  93. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
  94. package/fesm2022/radix-ng-primitives-toggle.mjs +98 -61
  95. package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
  96. package/fesm2022/radix-ng-primitives-toolbar.mjs +303 -92
  97. package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
  98. package/fesm2022/radix-ng-primitives-tooltip.mjs +699 -1072
  99. package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
  100. package/fesm2022/radix-ng-primitives-visually-hidden.mjs +25 -66
  101. package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
  102. package/meter/README.md +3 -0
  103. package/navigation-menu/README.md +2 -1
  104. package/package.json +39 -18
  105. package/portal/README.md +2 -0
  106. package/preview-card/README.md +3 -0
  107. package/schematics/collection.json +1 -0
  108. package/schematics/ng-add/index.d.ts +3 -2
  109. package/schematics/ng-add/index.js +62 -31
  110. package/schematics/ng-add/index.js.map +1 -1
  111. package/schematics/ng-add/package-config.d.ts +4 -2
  112. package/schematics/ng-add/package-config.js +10 -2
  113. package/schematics/ng-add/package-config.js.map +1 -1
  114. package/schematics/ng-add/schema.d.ts +3 -0
  115. package/schematics/ng-add/schema.js +3 -0
  116. package/schematics/ng-add/schema.js.map +1 -0
  117. package/schematics/ng-add/schema.json +14 -0
  118. package/select/README.md +2 -0
  119. package/types/radix-ng-primitives-accordion.d.ts +51 -16
  120. package/types/radix-ng-primitives-alert-dialog.d.ts +95 -38
  121. package/types/radix-ng-primitives-arrow.d.ts +1 -1
  122. package/types/radix-ng-primitives-aspect-ratio.d.ts +1 -1
  123. package/types/radix-ng-primitives-avatar.d.ts +7 -11
  124. package/types/radix-ng-primitives-button.d.ts +73 -0
  125. package/types/radix-ng-primitives-calendar.d.ts +39 -20
  126. package/types/radix-ng-primitives-checkbox.d.ts +204 -35
  127. package/types/radix-ng-primitives-collapsible.d.ts +114 -40
  128. package/types/radix-ng-primitives-collection.d.ts +38 -34
  129. package/types/radix-ng-primitives-config.d.ts +1 -1
  130. package/types/radix-ng-primitives-context-menu.d.ts +61 -116
  131. package/types/radix-ng-primitives-core.d.ts +345 -235
  132. package/types/radix-ng-primitives-cropper.d.ts +89 -56
  133. package/types/radix-ng-primitives-date-field.d.ts +49 -28
  134. package/types/radix-ng-primitives-dialog.d.ts +283 -165
  135. package/types/radix-ng-primitives-dismissable-layer.d.ts +15 -7
  136. package/types/radix-ng-primitives-drawer.d.ts +426 -0
  137. package/types/radix-ng-primitives-editable.d.ts +91 -14
  138. package/types/radix-ng-primitives-field.d.ts +374 -0
  139. package/types/radix-ng-primitives-fieldset.d.ts +49 -0
  140. package/types/radix-ng-primitives-focus-scope.d.ts +15 -6
  141. package/types/radix-ng-primitives-input.d.ts +87 -0
  142. package/types/radix-ng-primitives-label.d.ts +0 -1
  143. package/types/radix-ng-primitives-menu.d.ts +584 -99
  144. package/types/radix-ng-primitives-menubar.d.ts +61 -50
  145. package/types/radix-ng-primitives-meter.d.ts +194 -0
  146. package/types/radix-ng-primitives-navigation-menu.d.ts +422 -340
  147. package/types/radix-ng-primitives-number-field.d.ts +405 -145
  148. package/types/radix-ng-primitives-pagination.d.ts +2 -2
  149. package/types/radix-ng-primitives-popover.d.ts +366 -351
  150. package/types/radix-ng-primitives-popper.d.ts +68 -11
  151. package/types/radix-ng-primitives-portal.d.ts +14 -6
  152. package/types/radix-ng-primitives-presence.d.ts +28 -76
  153. package/types/radix-ng-primitives-preview-card.d.ts +359 -0
  154. package/types/radix-ng-primitives-progress.d.ts +175 -48
  155. package/types/radix-ng-primitives-radio.d.ts +55 -25
  156. package/types/radix-ng-primitives-roving-focus.d.ts +33 -23
  157. package/types/radix-ng-primitives-scroll-area.d.ts +253 -0
  158. package/types/radix-ng-primitives-select.d.ts +475 -177
  159. package/types/radix-ng-primitives-separator.d.ts +7 -32
  160. package/types/radix-ng-primitives-slider.d.ts +315 -201
  161. package/types/radix-ng-primitives-stepper.d.ts +5 -7
  162. package/types/radix-ng-primitives-switch.d.ts +86 -71
  163. package/types/radix-ng-primitives-tabs.d.ts +213 -79
  164. package/types/radix-ng-primitives-time-field.d.ts +42 -27
  165. package/types/radix-ng-primitives-toast.d.ts +378 -0
  166. package/types/radix-ng-primitives-toggle-group.d.ts +86 -164
  167. package/types/radix-ng-primitives-toggle.d.ts +43 -53
  168. package/types/radix-ng-primitives-toolbar.d.ts +164 -38
  169. package/types/radix-ng-primitives-tooltip.d.ts +348 -384
  170. package/types/radix-ng-primitives-visually-hidden.d.ts +19 -19
  171. package/dropdown-menu/README.md +0 -1
  172. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -581
  173. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
  174. package/fesm2022/radix-ng-primitives-hover-card.mjs +0 -1238
  175. package/fesm2022/radix-ng-primitives-hover-card.mjs.map +0 -1
  176. package/fesm2022/radix-ng-primitives-select2.mjs +0 -897
  177. package/fesm2022/radix-ng-primitives-select2.mjs.map +0 -1
  178. package/fesm2022/radix-ng-primitives-tooltip2.mjs +0 -735
  179. package/fesm2022/radix-ng-primitives-tooltip2.mjs.map +0 -1
  180. package/hover-card/README.md +0 -3
  181. package/select2/README.md +0 -3
  182. package/tooltip2/README.md +0 -3
  183. package/types/radix-ng-primitives-dropdown-menu.d.ts +0 -171
  184. package/types/radix-ng-primitives-hover-card.d.ts +0 -471
  185. package/types/radix-ng-primitives-select2.d.ts +0 -511
  186. package/types/radix-ng-primitives-tooltip2.d.ts +0 -325
@@ -1,206 +1,324 @@
1
- import * as i0 from '@angular/core';
2
- import { TemplateRef, EnvironmentProviders, Provider } from '@angular/core';
3
- import { AutoFocusTarget, DialogConfig, DialogRef } from '@angular/cdk/dialog';
4
- import { ComponentType } from '@angular/cdk/overlay';
5
- import { Observable } from 'rxjs';
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken, Provider, Signal, ElementRef } from '@angular/core';
3
+ import * as i1 from '@radix-ng/primitives/presence';
4
+ import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
5
+ import { RdxTransitionStatus, BooleanInput } from '@radix-ng/primitives/core';
6
6
  import * as _radix_ng_primitives_dialog from '@radix-ng/primitives/dialog';
7
+ import * as i1$1 from '@radix-ng/primitives/portal';
8
+ import { RdxPortalContainer } from '@radix-ng/primitives/portal';
9
+ import * as i1$2 from '@radix-ng/primitives/dismissable-layer';
10
+ import * as i2 from '@radix-ng/primitives/focus-scope';
7
11
 
8
- declare const ɵdialogData: unique symbol;
9
- declare const ɵdialogResult: unique symbol;
10
- type ɵDialogDataFlag = {
11
- [ɵdialogData]: unknown;
12
- };
13
- type ɵDialogResultFlag<R> = {
14
- [ɵdialogResult]: R;
15
- };
16
- type RdxDialogData<T> = {
17
- [K in keyof T]: T[K] extends ɵDialogDataFlag ? Omit<T[K], typeof ɵdialogData> : never;
18
- }[keyof T];
19
- type DialogRefProps<C> = {
20
- [K in keyof C]: C[K] extends ɵDialogResultFlag<unknown> ? K : never;
21
- }[keyof C] & keyof C;
22
- type RdxDialogResult<C> = DialogRefProps<C> extends never ? void : C[DialogRefProps<C>] extends ɵDialogResultFlag<infer T> ? T : void;
23
- type RdxDialogMode = 'default' | 'sheet' | 'sheet-bottom' | 'sheet-top' | 'sheet-left' | 'sheet-right';
24
- type RdxBaseDialogConfig<C> = {
25
- content: ComponentType<C> | TemplateRef<C>;
26
- data: RdxDialogData<C>;
27
- modal?: boolean;
28
- ariaLabel?: string;
29
- autoFocus?: AutoFocusTarget | 'first-input' | string;
30
- canClose?: (comp: C) => boolean | Observable<boolean>;
31
- canCloseWithBackdrop?: boolean;
32
- closeDelay?: number;
33
- cdkConfigOverride?: Partial<DialogConfig<C>>;
34
- mode?: RdxDialogMode;
35
- backdropClass?: string | string[];
36
- panelClasses?: string[];
37
- isAlert?: boolean;
38
- };
39
- type RdxDialogConfig<T> = RdxDialogData<T> extends never ? Omit<RdxBaseDialogConfig<T>, 'data'> : RdxBaseDialogConfig<T> & {
40
- data: Required<RdxDialogData<T>>;
41
- };
42
- type RdxDialogState = 'open' | 'closed';
43
- declare function getState(open: boolean): RdxDialogState;
12
+ /**
13
+ * Mounts the portal while the dialog is open and waits for CSS exit keyframes before unmounting.
14
+ */
15
+ declare class RdxDialogPortalPresence {
16
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogPortalPresence, never>;
17
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogPortalPresence, "ng-template[rdxDialogPortalPresence]", never, {}, {}, never, never, true, [{ directive: typeof i1.RdxPresenceDirective; inputs: {}; outputs: {}; }]>;
18
+ }
19
+
20
+ /**
21
+ * Connects a dialog root with trigger elements rendered elsewhere in the DOM, and exposes
22
+ * imperative `open`/`close`/`toggle` methods.
23
+ */
24
+ declare class RdxDialogHandle<Payload = unknown> {
25
+ private readonly rootContext;
26
+ private readonly triggers;
27
+ private readonly rootTriggerCleanups;
28
+ readonly isOpen: _angular_core.Signal<boolean>;
29
+ open(triggerId: string): void;
30
+ close(): void;
31
+ toggle(triggerId: string, event?: Event): void;
32
+ registerRoot(rootContext: RdxDialogRootContext): () => void;
33
+ registerTrigger(id: string, trigger: HTMLElement, payload: () => Payload | undefined): () => void;
34
+ context(): RdxDialogRootContext | undefined;
35
+ }
36
+ declare function createRdxDialogHandle<Payload = unknown>(): RdxDialogHandle<Payload>;
37
+
38
+ type RdxDialogRole = 'dialog' | 'alertdialog';
39
+ /**
40
+ * Behavioral profile for a dialog, supplied by a composing root (e.g. alert-dialog, drawer) to
41
+ * specialize the shared Dialog without new public dialog inputs.
42
+ *
43
+ * These are *force-only* overrides: a variant uses them to pin behavior regardless of the public
44
+ * inputs (as alert-dialog does). A variant that wants a configurable default instead simply leaves
45
+ * the flags off and lets the composing root proxy the `modal` / `disablePointerDismissal` inputs —
46
+ * that is how Drawer stays modal-by-default while remaining user-overridable.
47
+ *
48
+ * The three concerns are kept independent on purpose so future variants can mix them freely
49
+ * (e.g. a modal, non-dismissable drawer that is still `role="dialog"`):
50
+ * - `role` — ARIA role rendered on the popup.
51
+ * - `forceModal` — pin modality to `true` regardless of the `modal` input.
52
+ * - `forcePointerDismissalDisabled` — disable outside-press / focus-out dismissal (Escape still closes).
53
+ */
54
+ interface RdxDialogVariant {
55
+ role: RdxDialogRole;
56
+ forceModal: boolean;
57
+ forcePointerDismissalDisabled: boolean;
58
+ }
59
+ declare const RDX_DIALOG_VARIANT: InjectionToken<RdxDialogVariant>;
60
+ declare function provideRdxDialogVariant(variant: Partial<RdxDialogVariant>): Provider;
44
61
 
62
+ type RdxDialogModal = boolean | 'trap-focus';
63
+ type RdxDialogOpenChangeReason = 'trigger-press' | 'close-press' | 'outside-press' | 'focus-out' | 'escape-key' | 'swipe' | 'imperative-action' | 'none';
64
+ interface RdxDialogOpenChange {
65
+ open: boolean;
66
+ triggerId: string | null;
67
+ trigger: HTMLElement | undefined;
68
+ reason: RdxDialogOpenChangeReason;
69
+ event: Event;
70
+ }
71
+ interface RdxDialogRootContext {
72
+ contentId: string;
73
+ titleId: Signal<string | undefined>;
74
+ descriptionId: Signal<string | undefined>;
75
+ isOpen: Signal<boolean>;
76
+ /** Effective modality (the variant can pin this to `true`). */
77
+ modal: Signal<RdxDialogModal>;
78
+ /** Effective outside-press / focus-out dismissal flag (the variant can force it on). */
79
+ disablePointerDismissal: Signal<boolean>;
80
+ /** ARIA role for the popup; constant, fixed by the variant at construction. */
81
+ role: RdxDialogRole;
82
+ transitionStatus: Signal<RdxTransitionStatus>;
83
+ trigger: Signal<HTMLElement | undefined>;
84
+ triggers: Signal<HTMLElement[]>;
85
+ payload: Signal<unknown>;
86
+ /** Whether this dialog is nested in another; constant, fixed at construction. */
87
+ nested: boolean;
88
+ nestedDialogOpen: Signal<boolean>;
89
+ setTitleId: (id: string | undefined) => void;
90
+ setDescriptionId: (id: string | undefined) => void;
91
+ registerTransitionElement: (element: HTMLElement) => () => void;
92
+ registerTrigger: (id: string, trigger: HTMLElement, payload: () => unknown) => () => void;
93
+ open: (trigger?: HTMLElement, payload?: unknown, triggerId?: string, reason?: RdxDialogOpenChangeReason, event?: Event) => void;
94
+ close: (reason?: RdxDialogOpenChangeReason, event?: Event) => void;
95
+ toggle: (triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event) => void;
96
+ }
97
+ declare const injectRdxDialogRootContext: _radix_ng_primitives_core.InjectContext<RdxDialogRootContext>;
98
+ declare const provideRdxDialogRootContext: (useFactory: () => RdxDialogRootContext) => _angular_core.Provider;
45
99
  /**
46
- * @group Components
100
+ * Groups all parts of the dialog.
47
101
  */
48
- declare class RdxDialogTriggerDirective {
49
- private readonly dialogService;
102
+ declare class RdxDialogRoot {
103
+ private readonly destroyRef;
104
+ private readonly parentRoot;
105
+ private readonly variant;
106
+ private hasAppliedDefaultOpen;
107
+ private hasAppliedDefaultTriggerId;
108
+ private readonly registeredTriggers;
109
+ private readonly transition;
110
+ readonly transitionStatus: Signal<RdxTransitionStatus>;
111
+ readonly registerTransitionElement: (element: HTMLElement) => () => void;
50
112
  /**
51
- * @group Props
113
+ * Whether the dialog is currently open.
52
114
  */
53
- readonly id: i0.InputSignal<string>;
54
- readonly dialogId: i0.Signal<string>;
115
+ readonly open: _angular_core.ModelSignal<boolean>;
55
116
  /**
56
- * @group Props
117
+ * Whether the dialog is initially open.
57
118
  */
58
- dialog: TemplateRef<void>;
119
+ readonly defaultOpen: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
59
120
  /**
60
- * @group Props
121
+ * ID of the trigger associated with a controlled dialog.
61
122
  */
62
- dialogConfig: RdxDialogConfig<unknown>;
63
- readonly isOpen: i0.WritableSignal<boolean>;
64
- readonly state: i0.Signal<RdxDialogState>;
65
- private currentDialogRef;
66
- protected onClick(): void;
67
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogTriggerDirective, never>;
68
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxDialogTriggerDirective, "[rdxDialogTrigger]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "dialog": { "alias": "rdxDialogTrigger"; "required": true; }; "dialogConfig": { "alias": "rdxDialogConfig"; "required": false; }; }, {}, never, never, true, never>;
69
- }
70
-
71
- declare class RdxDialogContentDirective<C = unknown> {
72
- private readonly dialogRef;
73
- private readonly destroyRef;
74
- private readonly isOpen;
75
- readonly state: i0.Signal<_radix_ng_primitives_dialog.RdxDialogState>;
76
- constructor();
123
+ readonly triggerId: _angular_core.ModelSignal<string | null>;
77
124
  /**
78
- * Closes the dialog with a specified result.
79
- *
80
- * @param result The result to be passed back when closing the dialog
125
+ * ID of the trigger associated with an initially open uncontrolled dialog.
81
126
  */
82
- close(result: RdxDialogResult<C>): void;
127
+ readonly defaultTriggerId: _angular_core.InputSignal<string | null>;
83
128
  /**
84
- * Dismisses the dialog without a result.
129
+ * Determines if the dialog enters a modal state when open.
130
+ * - `true`: focus is trapped, page scroll is locked, outside pointer events are disabled.
131
+ * - `false`: interaction with the rest of the document is allowed.
132
+ * - `'trap-focus'`: focus is trapped, but scroll is not locked and outside pointer events remain enabled.
85
133
  */
86
- dismiss(): void;
87
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogContentDirective<any>, never>;
88
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxDialogContentDirective<any>, "[rdxDialogContent]", never, {}, {}, never, never, true, never>;
89
- }
90
-
91
- declare class RdxDialogTitleDirective {
92
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogTitleDirective, never>;
93
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxDialogTitleDirective, "[rdxDialogTitle]", never, {}, {}, never, never, true, never>;
134
+ readonly modal: _angular_core.InputSignalWithTransform<RdxDialogModal, BooleanInput>;
135
+ /**
136
+ * Determines whether the dialog should close on outside clicks.
137
+ */
138
+ readonly disablePointerDismissal: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
139
+ /**
140
+ * Associates this root with detached trigger elements rendered outside of it.
141
+ */
142
+ readonly handle: _angular_core.InputSignal<RdxDialogHandle<any> | undefined>;
143
+ /**
144
+ * Event handler called when the dialog is opened or closed.
145
+ */
146
+ readonly onOpenChange: _angular_core.OutputEmitterRef<RdxDialogOpenChange>;
147
+ /**
148
+ * Event handler called after any animations complete when the dialog is opened or closed.
149
+ */
150
+ readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
151
+ readonly contentId: string;
152
+ readonly titleId: _angular_core.WritableSignal<string | undefined>;
153
+ readonly descriptionId: _angular_core.WritableSignal<string | undefined>;
154
+ readonly trigger: _angular_core.WritableSignal<HTMLElement | undefined>;
155
+ readonly triggers: _angular_core.WritableSignal<HTMLElement[]>;
156
+ readonly payload: _angular_core.WritableSignal<unknown>;
157
+ readonly nestedOpenCount: _angular_core.WritableSignal<number>;
158
+ /** Whether this dialog is rendered inside another dialog. Fixed at construction. */
159
+ readonly nested: boolean;
160
+ readonly nestedDialogOpen: Signal<boolean>;
161
+ /** ARIA role, fixed at construction by the dialog variant (`alertdialog` for alert dialogs). */
162
+ readonly role: RdxDialogRole;
163
+ /** Effective modality: the variant can pin it to `true` regardless of the `modal` input. */
164
+ readonly effectiveModal: Signal<RdxDialogModal>;
165
+ /** Effective dismissal flag: disabled when the input asks, or when the variant forces it (alerts). */
166
+ readonly effectiveDisablePointerDismissal: Signal<boolean>;
167
+ constructor();
168
+ show(trigger?: HTMLElement | undefined, payload?: unknown, triggerId?: string, reason?: RdxDialogOpenChangeReason, event?: Event): void;
169
+ close(reason?: RdxDialogOpenChangeReason, event?: Event): void;
170
+ toggle(triggerId: string, trigger: HTMLElement, payload?: unknown, event?: Event): void;
171
+ registerTrigger(id: string, trigger: HTMLElement, payload: () => unknown): () => void;
172
+ /** Increments the nested-open counter and returns a release callback that decrements it. */
173
+ openNestedChild(): () => void;
174
+ private syncTriggerId;
175
+ private emitOpenChange;
176
+ private emitOpenChangeComplete;
177
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogRoot, never>;
178
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogRoot, "[rdxDialogRoot]", ["rdxDialogRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "triggerId": { "alias": "triggerId"; "required": false; "isSignal": true; }; "defaultTriggerId": { "alias": "defaultTriggerId"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "disablePointerDismissal": { "alias": "disablePointerDismissal"; "required": false; "isSignal": true; }; "handle": { "alias": "handle"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "triggerId": "triggerIdChange"; "onOpenChange": "onOpenChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, never>;
94
179
  }
95
180
 
96
- declare class RdxDialogCloseDirective {
97
- private readonly ref;
98
- protected onClick(): void;
99
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogCloseDirective, never>;
100
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxDialogCloseDirective, "[rdxDialogClose]", never, {}, {}, never, never, true, never>;
181
+ /**
182
+ * A button that opens the dialog.
183
+ */
184
+ declare class RdxDialogTrigger {
185
+ private readonly parentRootContext;
186
+ readonly elementRef: ElementRef<HTMLElement>;
187
+ /**
188
+ * Associates this trigger with a detached dialog root.
189
+ */
190
+ readonly handle: _angular_core.InputSignal<RdxDialogHandle<any> | undefined>;
191
+ /**
192
+ * Data associated with this trigger while it is active.
193
+ */
194
+ readonly payload: _angular_core.InputSignal<unknown>;
195
+ /**
196
+ * ID used to identify this trigger when opening a detached or controlled dialog.
197
+ */
198
+ readonly id: _angular_core.InputSignal<string | undefined>;
199
+ /**
200
+ * Whether the trigger should ignore user interaction.
201
+ */
202
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
203
+ private readonly generatedId;
204
+ protected readonly triggerId: _angular_core.Signal<string>;
205
+ protected readonly rootContext: _angular_core.Signal<_radix_ng_primitives_dialog.RdxDialogRootContext | null>;
206
+ protected readonly isOpen: _angular_core.Signal<boolean>;
207
+ constructor();
208
+ protected handleClick(event: MouseEvent): void;
209
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogTrigger, never>;
210
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogTrigger, "button[rdxDialogTrigger]", ["rdxDialogTrigger"], { "handle": { "alias": "handle"; "required": false; "isSignal": true; }; "payload": { "alias": "payload"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
101
211
  }
102
212
 
103
- declare class RdxDialogDescriptionDirective {
104
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogDescriptionDirective, never>;
105
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxDialogDescriptionDirective, "[rdxDialogDescription]", never, {}, {}, never, never, true, never>;
213
+ /**
214
+ * Moves the dialog to a different part of the DOM.
215
+ */
216
+ declare class RdxDialogPortal {
217
+ protected readonly rootContext: _radix_ng_primitives_dialog.RdxDialogRootContext;
218
+ /**
219
+ * Optional container to portal the content into. Defaults to `document.body`.
220
+ */
221
+ readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
222
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogPortal, never>;
223
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogPortal, "[rdxDialogPortal]", ["rdxDialogPortal"], { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$1.RdxPortal; inputs: { "container": "container"; }; outputs: {}; }]>;
106
224
  }
107
225
 
108
- declare class RdxDialogDismissDirective {
109
- private readonly ref;
110
- protected onClick(): void;
111
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogDismissDirective, never>;
112
- static ɵdir: i0.ɵɵDirectiveDeclaration<RdxDialogDismissDirective, "button[rdxDialogDismiss]", never, {}, {}, never, never, true, never>;
226
+ /**
227
+ * An overlay displayed beneath the dialog popup.
228
+ */
229
+ declare class RdxDialogBackdrop {
230
+ protected readonly rootContext: _radix_ng_primitives_dialog.RdxDialogRootContext;
231
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogBackdrop, never>;
232
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogBackdrop, "[rdxDialogBackdrop]", ["rdxDialogBackdrop"], {}, {}, never, never, true, never>;
113
233
  }
114
234
 
115
- declare const DISMISSED_VALUE: {};
116
235
  /**
117
- * Represents a reference to an open dialog.
118
- * Provides methods and observables to interact with and monitor the dialog's state.
119
- * @template C - The type of the dialog's content component
236
+ * A positioning container for the dialog popup that can be made scrollable.
237
+ *
238
+ * Place it inside the portal, around the popup, to scroll the popup when it is taller than the
239
+ * viewport (outside scroll). Pointer events pass through while the dialog is closed.
120
240
  */
121
- declare class RdxDialogRef<C = unknown> {
122
- readonly cdkRef: DialogRef<RdxDialogResult<C> | typeof DISMISSED_VALUE, C>;
123
- readonly config: RdxDialogConfig<C>;
124
- private _previousTimeout;
125
- private readonly _openSignal;
126
- readonly state: i0.Signal<"open" | "closed">;
127
- closed$: Observable<RdxDialogResult<C> | undefined>;
128
- dismissed$: Observable<void>;
129
- result$: Observable<RdxDialogResult<C>>;
130
- /**
131
- * @param cdkRef - Reference to the underlying CDK dialog
132
- * @param config - Configuration options for the dialog
133
- */
134
- constructor(cdkRef: DialogRef<RdxDialogResult<C> | typeof DISMISSED_VALUE, C>, config: RdxDialogConfig<C>);
135
- get instance(): C | null;
136
- /**
137
- * Attempts to dismiss the dialog
138
- * Checks the canClose condition before dismissing
139
- */
140
- dismiss(): void;
141
- close(result: RdxDialogResult<C>): void;
241
+ declare class RdxDialogViewport {
242
+ protected readonly rootContext: _radix_ng_primitives_dialog.RdxDialogRootContext;
243
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogViewport, never>;
244
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogViewport, "[rdxDialogViewport]", ["rdxDialogViewport"], {}, {}, never, never, true, never>;
142
245
  }
246
+
143
247
  /**
144
- * Represents a simplified interface for dialog interaction
145
- * Typically used by dialog content components
146
- * @template R - The type of the result when closing the dialog
248
+ * A container for the dialog contents.
147
249
  */
148
- type RdxDialogSelfRef<R> = {
149
- dismiss(): void;
150
- close(res: R): void;
151
- };
152
-
153
- declare function injectDialogData<TData>(): TData & ɵDialogDataFlag;
154
- declare function injectDialogRef<R = void>(): RdxDialogSelfRef<R> & ɵDialogResultFlag<R>;
250
+ declare class RdxDialogPopup {
251
+ protected readonly rootContext: _radix_ng_primitives_dialog.RdxDialogRootContext;
252
+ private readonly dismissableLayer;
253
+ private readonly focusScope;
254
+ private dismissDetails;
255
+ /**
256
+ * Event handler called when the escape key is down. Can be prevented.
257
+ */
258
+ readonly escapeKeyDown: _angular_core.OutputRef<KeyboardEvent>;
259
+ /**
260
+ * Event handler called when a pointerdown event happens outside of the popup. Can be prevented.
261
+ */
262
+ readonly pointerDownOutside: _angular_core.OutputRef<PointerEvent>;
263
+ /**
264
+ * Event handler called when focus moves outside of the popup. Can be prevented.
265
+ */
266
+ readonly focusOutside: _angular_core.OutputRef<FocusEvent>;
267
+ /**
268
+ * Event handler called when an interaction happens outside of the popup. Can be prevented.
269
+ */
270
+ readonly interactOutside: _angular_core.OutputRef<PointerEvent | FocusEvent>;
271
+ /**
272
+ * Event handler called before focus moves into the popup. Can be prevented.
273
+ */
274
+ readonly openAutoFocus: _angular_core.OutputRef<Event>;
275
+ /**
276
+ * Event handler called before focus returns after the popup is removed. Can be prevented.
277
+ */
278
+ readonly closeAutoFocus: _angular_core.OutputRef<Event>;
279
+ constructor();
280
+ private isEventOnTrigger;
281
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogPopup, never>;
282
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogPopup, "[rdxDialogPopup]", ["rdxDialogPopup"], {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1$2.RdxDismissableLayer; inputs: {}; outputs: {}; }, { directive: typeof i2.RdxFocusScope; inputs: {}; outputs: {}; }]>;
283
+ }
155
284
 
156
285
  /**
157
- * Configures the RdxDialog module by providing necessary dependencies.
158
- *
159
- * This function sets up the environment providers required for the RdxDialog to function,
160
- * specifically importing the Angular CDK's DialogModule.
161
- *
162
- * @returns {EnvironmentProviders} An EnvironmentProviders instance containing the DialogModule.
286
+ * An accessible title for the dialog.
163
287
  */
164
- declare function provideRdxDialogConfig(): EnvironmentProviders;
288
+ declare class RdxDialogTitle {
289
+ private readonly rootContext;
290
+ readonly id: string;
291
+ constructor();
292
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogTitle, never>;
293
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogTitle, "[rdxDialogTitle]", ["rdxDialogTitle"], {}, {}, never, never, true, never>;
294
+ }
295
+
165
296
  /**
166
- * Provides the RdxDialogService for dependency injection.
167
- *
168
- * This function is used to make the RdxDialogService available for injection
169
- * in components, directives, or other services that require dialog functionality.
170
- *
171
- * @returns {Provider} A provider for the RdxDialogService.
297
+ * An accessible description for the dialog.
172
298
  */
173
- declare function provideRdxDialog(): Provider;
299
+ declare class RdxDialogDescription {
300
+ private readonly rootContext;
301
+ readonly id: string;
302
+ constructor();
303
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogDescription, never>;
304
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogDescription, "[rdxDialogDescription]", ["rdxDialogDescription"], {}, {}, never, never, true, never>;
305
+ }
174
306
 
175
307
  /**
176
- * Modality control: When `isModal` is set to `true`, the dialog will:
177
- *
178
- * - Have a backdrop that blocks interaction with the rest of the page
179
- * - Disable closing by clicking outside or pressing Escape
180
- * - Set `aria-modal="true"` for screen readers
181
- * - Automatically focus the first tabbable element in the dialog
182
- * - Restore focus to the element that opened the dialog when it's closed
183
- *
184
- *
185
- * When `isModal` is `false`, the dialog will:
186
- *
187
- * - Not have a backdrop, allowing interaction with the rest of the page
188
- * - Allow closing by clicking outside or pressing Escape
189
- * - Not set `aria-modal` attribute
190
- * - Not automatically manage focus
308
+ * A button that closes the dialog.
191
309
  */
192
- declare class RdxDialogService {
193
- #private;
194
- open<C>(config: RdxDialogConfig<C>): RdxDialogRef<C>;
195
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogService, never>;
196
- static ɵprov: i0.ɵɵInjectableDeclaration<RdxDialogService>;
310
+ declare class RdxDialogClose {
311
+ protected readonly rootContext: _radix_ng_primitives_dialog.RdxDialogRootContext;
312
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogClose, never>;
313
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDialogClose, "button[rdxDialogClose]", ["rdxDialogClose"], {}, {}, never, never, true, never>;
197
314
  }
198
315
 
316
+ declare const dialogImports: (typeof RdxDialogPortalPresence)[];
199
317
  declare class RdxDialogModule {
200
- static ɵfac: i0.ɵɵFactoryDeclaration<RdxDialogModule, never>;
201
- static ɵmod: i0.ɵɵNgModuleDeclaration<RdxDialogModule, never, [typeof RdxDialogTriggerDirective, typeof RdxDialogContentDirective, typeof RdxDialogTitleDirective, typeof RdxDialogCloseDirective, typeof RdxDialogDescriptionDirective, typeof RdxDialogDismissDirective], [typeof RdxDialogTriggerDirective, typeof RdxDialogContentDirective, typeof RdxDialogTitleDirective, typeof RdxDialogCloseDirective, typeof RdxDialogDescriptionDirective, typeof RdxDialogDismissDirective]>;
202
- static ɵinj: i0.ɵɵInjectorDeclaration<RdxDialogModule>;
318
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDialogModule, never>;
319
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxDialogModule, never, [typeof RdxDialogRoot, typeof RdxDialogTrigger, typeof RdxDialogPortalPresence, typeof RdxDialogPortal, typeof RdxDialogBackdrop, typeof RdxDialogViewport, typeof RdxDialogPopup, typeof RdxDialogTitle, typeof RdxDialogDescription, typeof RdxDialogClose], [typeof RdxDialogRoot, typeof RdxDialogTrigger, typeof RdxDialogPortalPresence, typeof RdxDialogPortal, typeof RdxDialogBackdrop, typeof RdxDialogViewport, typeof RdxDialogPopup, typeof RdxDialogTitle, typeof RdxDialogDescription, typeof RdxDialogClose]>;
320
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxDialogModule>;
203
321
  }
204
322
 
205
- export { DISMISSED_VALUE, RdxDialogCloseDirective, RdxDialogContentDirective, RdxDialogDescriptionDirective, RdxDialogDismissDirective, RdxDialogModule, RdxDialogRef, RdxDialogService, RdxDialogTitleDirective, RdxDialogTriggerDirective, getState, injectDialogData, injectDialogRef, provideRdxDialog, provideRdxDialogConfig };
206
- export type { RdxDialogConfig, RdxDialogData, RdxDialogResult, RdxDialogSelfRef, RdxDialogState, ɵDialogDataFlag, ɵDialogResultFlag };
323
+ export { RDX_DIALOG_VARIANT, RdxDialogBackdrop, RdxDialogClose, RdxDialogDescription, RdxDialogHandle, RdxDialogModule, RdxDialogPopup, RdxDialogPortal, RdxDialogPortalPresence, RdxDialogRoot, RdxDialogTitle, RdxDialogTrigger, RdxDialogViewport, createRdxDialogHandle, dialogImports, injectRdxDialogRootContext, provideRdxDialogRootContext, provideRdxDialogVariant };
324
+ export type { RdxDialogModal, RdxDialogOpenChange, RdxDialogOpenChangeReason, RdxDialogRole, RdxDialogRootContext, RdxDialogVariant };
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Signal, Provider } from '@angular/core';
3
- import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { Signal, InjectionToken, Provider } from '@angular/core';
3
+ import { BooleanInput } from '@radix-ng/primitives/core';
4
4
 
5
5
  /**
6
6
  * Listens for when focus happens outside a DOM subtree.
@@ -33,7 +33,7 @@ declare class RdxPointerDownOutside {
33
33
  readonly pointerDownOutside: _angular_core.OutputEmitterRef<PointerEvent>;
34
34
  private readonly isPointerInsideDOMTree;
35
35
  private readonly handleAndDispatchPointerDownOutsideEvent;
36
- private handleClick;
36
+ private handleClick?;
37
37
  constructor();
38
38
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxPointerDownOutside, never>;
39
39
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxPointerDownOutside, "[rdxPointerDownOutside]", ["rdxPointerDownOutside"], { "enabledInput": { "alias": "enabled"; "required": false; "isSignal": true; }; }, { "pointerDownOutside": "pointerDownOutside"; }, never, never, true, never>;
@@ -42,7 +42,7 @@ declare class RdxEscapeKeyDown {
42
42
  private readonly elementRef;
43
43
  private readonly destroyRef;
44
44
  readonly escapeKeyDown: _angular_core.OutputEmitterRef<KeyboardEvent>;
45
- private readonly afterNextRender;
45
+ constructor();
46
46
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxEscapeKeyDown, never>;
47
47
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxEscapeKeyDown, "[rdxEscapeKeyDown]", ["rdxEscapeKeyDown"], {}, { "escapeKeyDown": "escapeKeyDown"; }, never, never, true, never>;
48
48
  }
@@ -86,13 +86,21 @@ declare class RdxDismissableLayer {
86
86
  * the `DismissableLayer`. Users will need to click twice on outside elements to
87
87
  * interact with them: once to close the `DismissableLayer`, and again to trigger the element.
88
88
  */
89
- readonly disableOutsidePointerEvents: _angular_core.InputSignalWithTransform<boolean, unknown>;
90
- readonly layers: _angular_core.Signal<_angular_core.WritableSignal<RdxDismissableLayer[]>>;
89
+ readonly disableOutsidePointerEvents: _angular_core.InputSignalWithTransform<boolean | undefined, BooleanInput>;
90
+ readonly isOutsidePointerEventsDisabled: _angular_core.Signal<boolean>;
91
91
  protected readonly isBodyPointerEventsDisabled: _angular_core.Signal<boolean>;
92
92
  protected readonly isPointerEventsEnabled: _angular_core.Signal<boolean>;
93
93
  private readonly index;
94
- private readonly afterNextRender;
94
+ /** The topmost layer in the stack — the only one that should react to the Escape key. */
95
+ private readonly isHighestLayer;
95
96
  constructor();
97
+ /**
98
+ * Toggles `pointer-events: none` on the document body while any layer has
99
+ * `disableOutsidePointerEvents`. Ownership is shared across all layers via
100
+ * {@link originalBodyPointerEvents}: the original value is saved only on the global
101
+ * `0 -> >0` transition and restored only when the count returns to `0`.
102
+ */
103
+ private setupBodyPointerEvents;
96
104
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxDismissableLayer, never>;
97
105
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxDismissableLayer, "[rdxDismissableLayer]", ["rdxDismissableLayer"], { "disableOutsidePointerEvents": { "alias": "disableOutsidePointerEvents"; "required": false; "isSignal": true; }; }, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "dismiss": "dismiss"; }, never, never, true, [{ directive: typeof RdxPointerDownOutside; inputs: {}; outputs: {}; }, { directive: typeof RdxFocusOutside; inputs: {}; outputs: {}; }, { directive: typeof RdxEscapeKeyDown; inputs: {}; outputs: {}; }]>;
98
106
  }