@radix-ng/primitives 1.0.0-beta.2 → 1.0.0-beta.4
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.
- package/LICENSE +1 -1
- package/README.md +76 -6
- package/fesm2022/radix-ng-primitives-accordion.mjs +5 -3
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +31 -24
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +1744 -0
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-calendar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +1399 -606
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +13 -4
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +51 -10
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +1345 -64
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +271 -145
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +70 -0
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +519 -184
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +154 -64
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +3 -2
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +517 -0
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +296 -70
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +894 -299
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +32 -4
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +176 -207
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +250 -250
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +94 -45
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +107 -17
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +262 -79
- package/fesm2022/radix-ng-primitives-presence.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-preview-card.mjs +172 -218
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +4 -2
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +5 -4
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +303 -234
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +5 -3
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +5 -3
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +5 -3
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +15 -36
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +5 -3
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +105 -145
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/package.json +14 -1
- package/types/radix-ng-primitives-accordion.d.ts +4 -3
- package/types/radix-ng-primitives-alert-dialog.d.ts +17 -11
- package/types/radix-ng-primitives-autocomplete.d.ts +661 -0
- package/types/radix-ng-primitives-calendar.d.ts +5 -3
- package/types/radix-ng-primitives-combobox.d.ts +727 -293
- package/types/radix-ng-primitives-config.d.ts +1 -1
- package/types/radix-ng-primitives-context-menu.d.ts +15 -5
- package/types/radix-ng-primitives-core.d.ts +762 -14
- package/types/radix-ng-primitives-date-field.d.ts +3 -2
- package/types/radix-ng-primitives-dialog.d.ts +107 -55
- package/types/radix-ng-primitives-direction-provider.d.ts +41 -0
- package/types/radix-ng-primitives-dismissable-layer.d.ts +147 -99
- package/types/radix-ng-primitives-drawer.d.ts +49 -22
- package/types/radix-ng-primitives-field.d.ts +1 -0
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +175 -0
- package/types/radix-ng-primitives-focus-scope.d.ts +132 -1
- package/types/radix-ng-primitives-menu.d.ts +204 -112
- package/types/radix-ng-primitives-navigation-menu.d.ts +61 -101
- package/types/radix-ng-primitives-popover.d.ts +82 -115
- package/types/radix-ng-primitives-popper.d.ts +46 -10
- package/types/radix-ng-primitives-portal.d.ts +53 -8
- package/types/radix-ng-primitives-presence.d.ts +98 -17
- package/types/radix-ng-primitives-preview-card.d.ts +63 -95
- package/types/radix-ng-primitives-roving-focus.d.ts +7 -6
- package/types/radix-ng-primitives-scroll-area.d.ts +2 -2
- package/types/radix-ng-primitives-select.d.ts +192 -158
- package/types/radix-ng-primitives-slider.d.ts +5 -4
- package/types/radix-ng-primitives-stepper.d.ts +4 -3
- package/types/radix-ng-primitives-time-field.d.ts +3 -2
- package/types/radix-ng-primitives-toast.d.ts +7 -7
- package/types/radix-ng-primitives-toggle-group.d.ts +5 -4
- package/types/radix-ng-primitives-toolbar.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +48 -84
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal,
|
|
2
|
+
import { Signal, WritableSignal } from '@angular/core';
|
|
3
3
|
import * as _radix_ng_primitives_core from '@radix-ng/primitives/core';
|
|
4
|
-
import { BooleanInput, NumberInput } from '@radix-ng/primitives/core';
|
|
4
|
+
import { RdxFloatingRootContext, BooleanInput, Direction, RdxCancelableChangeEventDetails, NumberInput } from '@radix-ng/primitives/core';
|
|
5
|
+
import * as i3 from '@radix-ng/primitives/floating-focus-manager';
|
|
6
|
+
import { RdxInteractionType } from '@radix-ng/primitives/floating-focus-manager';
|
|
5
7
|
import * as i1 from '@radix-ng/primitives/popper';
|
|
6
|
-
import { RdxPopperContentWrapper
|
|
8
|
+
import { RdxPopperContentWrapper } from '@radix-ng/primitives/popper';
|
|
7
9
|
import * as _radix_ng_primitives_menu from '@radix-ng/primitives/menu';
|
|
8
|
-
import * as i2 from '@radix-ng/primitives/dismissable-layer';
|
|
9
10
|
import * as i1$1 from '@radix-ng/primitives/portal';
|
|
10
|
-
import {
|
|
11
|
-
import * as i3 from '@radix-ng/primitives/focus-scope';
|
|
11
|
+
import { RdxOutsidePressDomEvent } from '@radix-ng/primitives/dismissable-layer';
|
|
12
12
|
|
|
13
13
|
type RdxMenuTransitionStatus = 'starting' | 'ending' | undefined;
|
|
14
14
|
/**
|
|
@@ -21,39 +21,85 @@ type RdxMenuTransitionStatus = 'starting' | 'ending' | undefined;
|
|
|
21
21
|
type RdxMenuAutoFocus = 'first' | 'last' | 'popup' | false;
|
|
22
22
|
type RdxMenuAutoFocusInput = boolean | RdxMenuAutoFocus;
|
|
23
23
|
type RdxMenuOrientation = 'horizontal' | 'vertical';
|
|
24
|
+
/**
|
|
25
|
+
* What kind of parent a menu has (Base UI `MenuParent.type`). Drives the per-kind dismissal / focus /
|
|
26
|
+
* backdrop / scroll-lock policy:
|
|
27
|
+
* - `'menu'` — a **submenu** (its parent is another menu).
|
|
28
|
+
* - `'menubar'` — a menu coordinated by a `Menubar`.
|
|
29
|
+
* - `'context-menu'` — the root of a `ContextMenu` (opened at the pointer).
|
|
30
|
+
* - `undefined` — a standalone menu (a plain dropdown).
|
|
31
|
+
*/
|
|
32
|
+
type RdxMenuParentType = 'menu' | 'menubar' | 'context-menu' | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Why a menu's open state changed (Base UI open-change `reason`). Read by the per-kind policy — e.g. a
|
|
35
|
+
* `'trigger-hover'` open suppresses the modal backdrop / scroll-lock, and the dismissal reason decides
|
|
36
|
+
* return-focus.
|
|
37
|
+
*/
|
|
38
|
+
type RdxMenuOpenChangeReason = 'trigger-press' | 'trigger-hover' | 'trigger-focus' | 'list-navigation' | 'sibling-open' | 'escape-key' | 'outside-press' | 'cancel-open' | 'focus-out' | 'none';
|
|
39
|
+
type RdxMenuOpenChangeEventDetails = RdxCancelableChangeEventDetails<RdxMenuOpenChangeReason>;
|
|
40
|
+
interface RdxMenuOpenChange {
|
|
41
|
+
open: boolean;
|
|
42
|
+
trigger: HTMLElement | undefined;
|
|
43
|
+
reason: RdxMenuOpenChangeReason;
|
|
44
|
+
event: Event;
|
|
45
|
+
eventDetails: RdxMenuOpenChangeEventDetails;
|
|
46
|
+
}
|
|
24
47
|
interface RdxMenuRootContext {
|
|
25
48
|
isOpen: Signal<boolean>;
|
|
49
|
+
present: Signal<boolean>;
|
|
26
50
|
disabled: Signal<boolean>;
|
|
27
51
|
modal: Signal<boolean>;
|
|
28
52
|
loopFocus: Signal<boolean>;
|
|
29
53
|
highlightItemOnHover: Signal<boolean>;
|
|
30
54
|
orientation: Signal<RdxMenuOrientation>;
|
|
55
|
+
dir: Signal<Direction>;
|
|
31
56
|
closeParentOnEsc: Signal<boolean>;
|
|
32
57
|
/** Whether the popup should focus its first item when it opens. */
|
|
33
58
|
autoFocus: Signal<RdxMenuAutoFocus>;
|
|
34
59
|
isSubmenu: Signal<boolean>;
|
|
60
|
+
/** What kind of parent this menu has (ADR 0015/0017 parity) — drives the per-kind policy. */
|
|
61
|
+
parentType: Signal<RdxMenuParentType>;
|
|
62
|
+
/** The reason for the most recent open-change (Base UI open-change `reason`). */
|
|
63
|
+
lastOpenChangeReason: Signal<RdxMenuOpenChangeReason>;
|
|
64
|
+
/** Whether a trigger-originated press may activate an item on the following mouseup. */
|
|
65
|
+
allowMouseUpTrigger: Signal<boolean>;
|
|
66
|
+
/** Whether the current open was initiated by touch (ADR 0016 §3 — gates the anchored scroll lock). */
|
|
67
|
+
openedByTouch: Signal<boolean>;
|
|
68
|
+
openInteractionType: Signal<RdxInteractionType>;
|
|
69
|
+
closeInteractionType: Signal<RdxInteractionType>;
|
|
35
70
|
hasTriggerInteractionHandler: Signal<boolean>;
|
|
36
71
|
trigger: Signal<HTMLElement | undefined>;
|
|
37
72
|
/** The popup element, once mounted. Used by submenu safe-polygon geometry. */
|
|
38
73
|
popupElement: Signal<HTMLElement | undefined>;
|
|
39
74
|
transitionStatus: Signal<RdxMenuTransitionStatus>;
|
|
40
|
-
close: () => void;
|
|
41
|
-
|
|
42
|
-
|
|
75
|
+
close: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;
|
|
76
|
+
/** Close this menu and every ancestor — used by item selection (the whole menu dismisses). */
|
|
77
|
+
closeEntireMenu: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;
|
|
78
|
+
toggle: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;
|
|
79
|
+
show: (autoFocus?: RdxMenuAutoFocusInput, reason?: RdxMenuOpenChangeReason, event?: Event) => void;
|
|
43
80
|
/** Open the menu without moving focus into the popup (used for menubar hover-switching). */
|
|
44
|
-
showWithoutAutoFocus: () => void;
|
|
81
|
+
showWithoutAutoFocus: (reason?: RdxMenuOpenChangeReason, event?: Event) => void;
|
|
45
82
|
registerTrigger: (el: HTMLElement) => () => void;
|
|
46
83
|
registerPopup: (el: HTMLElement) => () => void;
|
|
47
84
|
registerTransitionElement: (element: HTMLElement) => () => void;
|
|
48
85
|
registerPopupArrowNavigationHandler: (handler: (offset: 1 | -1) => boolean) => () => void;
|
|
49
86
|
registerTriggerInteractionHandler: (handler: RdxMenuTriggerInteractionHandler) => () => void;
|
|
50
87
|
markAsSubmenu: () => void;
|
|
88
|
+
/** Marks this menu as the root of a Context Menu (called by `RdxContextMenuRoot`). */
|
|
89
|
+
markAsContextMenu: () => void;
|
|
90
|
+
setAllowMouseUpTrigger: (value: boolean) => void;
|
|
51
91
|
closeParent: () => void;
|
|
52
92
|
handlePopupArrowNavigation: (offset: 1 | -1) => boolean;
|
|
53
93
|
handleTriggerInteraction: (interaction: RdxMenuTriggerInteraction) => boolean;
|
|
54
94
|
}
|
|
55
95
|
type RdxMenuTriggerInteraction = {
|
|
56
96
|
type: 'click';
|
|
97
|
+
} | {
|
|
98
|
+
type: 'enter';
|
|
99
|
+
event: Event;
|
|
100
|
+
} | {
|
|
101
|
+
type: 'space';
|
|
102
|
+
event: Event;
|
|
57
103
|
} | {
|
|
58
104
|
type: 'pointerenter';
|
|
59
105
|
event: PointerEvent;
|
|
@@ -87,6 +133,14 @@ declare const provideRdxMenuRootContext: (useFactory: () => RdxMenuRootContext)
|
|
|
87
133
|
*/
|
|
88
134
|
declare class RdxMenuRoot {
|
|
89
135
|
private readonly popper;
|
|
136
|
+
private readonly parentRoot;
|
|
137
|
+
private readonly providedDirection;
|
|
138
|
+
/**
|
|
139
|
+
* The shared per-popup floating context (ADR 0015 §1) — `open` mirrors this menu's open state, the
|
|
140
|
+
* trigger registry is bridged from {@link registerTrigger}, and the reference / floating elements are
|
|
141
|
+
* set by the trigger / popup. The new dismissal engine reads this once the popup migrates.
|
|
142
|
+
*/
|
|
143
|
+
readonly floatingContext: RdxFloatingRootContext;
|
|
90
144
|
/** Shared open/close transition state machine (completes on the real animationend). */
|
|
91
145
|
private readonly transition;
|
|
92
146
|
private registeredTrigger;
|
|
@@ -99,7 +153,10 @@ declare class RdxMenuRoot {
|
|
|
99
153
|
readonly defaultOpen: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
100
154
|
/** Whether interactions with the menu are disabled. */
|
|
101
155
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
102
|
-
/**
|
|
156
|
+
/**
|
|
157
|
+
* Whether the menu should block outside interactions and page scrolling.
|
|
158
|
+
* Nested menus are always non-modal.
|
|
159
|
+
*/
|
|
103
160
|
readonly modal: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
104
161
|
/** Whether keyboard navigation wraps at list boundaries. */
|
|
105
162
|
readonly loopFocus: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
@@ -107,10 +164,12 @@ declare class RdxMenuRoot {
|
|
|
107
164
|
readonly highlightItemOnHover: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
108
165
|
/** The menu orientation. */
|
|
109
166
|
readonly orientation: _angular_core.InputSignal<RdxMenuOrientation>;
|
|
167
|
+
/** Text direction for submenu arrow-key behavior. Inherited by nested submenu roots. */
|
|
168
|
+
readonly dirInput: _angular_core.InputSignal<Direction | undefined>;
|
|
110
169
|
/** Whether pressing Escape inside a submenu closes the whole menu chain. */
|
|
111
170
|
readonly closeParentOnEsc: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
112
171
|
/** Emits when the open state changes. */
|
|
113
|
-
readonly onOpenChange: _angular_core.OutputEmitterRef<
|
|
172
|
+
readonly onOpenChange: _angular_core.OutputEmitterRef<RdxMenuOpenChange>;
|
|
114
173
|
/** Emits when the open/close CSS transition or animation finishes. */
|
|
115
174
|
readonly onOpenChangeComplete: _angular_core.OutputEmitterRef<boolean>;
|
|
116
175
|
readonly trigger: _angular_core.WritableSignal<HTMLElement | undefined>;
|
|
@@ -119,12 +178,40 @@ declare class RdxMenuRoot {
|
|
|
119
178
|
/** Whether the popup grabs focus when it opens. Set false for menubar hover-switching. */
|
|
120
179
|
readonly autoFocus: _angular_core.WritableSignal<RdxMenuAutoFocus>;
|
|
121
180
|
readonly isSubmenu: _angular_core.WritableSignal<boolean>;
|
|
181
|
+
/** Set by `RdxContextMenuRoot` (it composes this root) — distinguishes a context menu from a dropdown. */
|
|
182
|
+
readonly isContextMenu: _angular_core.WritableSignal<boolean>;
|
|
122
183
|
readonly hasTriggerInteractionHandler: _angular_core.WritableSignal<boolean>;
|
|
184
|
+
private readonly preventUnmountOnClose;
|
|
185
|
+
/**
|
|
186
|
+
* What kind of parent this menu has (Base UI `MenuParent.type`). A submenu wins over everything (its
|
|
187
|
+
* parent is a menu); otherwise a context-menu marker, then a menubar (detected by the trigger
|
|
188
|
+
* interaction handler the menubar registers), else a standalone dropdown.
|
|
189
|
+
*/
|
|
190
|
+
readonly parentType: Signal<RdxMenuParentType>;
|
|
191
|
+
/** The reason for the most recent open-change (Base UI open-change `reason`), for the per-kind policy. */
|
|
192
|
+
readonly lastOpenChangeReason: _angular_core.WritableSignal<RdxMenuOpenChangeReason>;
|
|
193
|
+
private readonly localAllowMouseUpTrigger;
|
|
194
|
+
readonly allowMouseUpTrigger: Signal<boolean>;
|
|
195
|
+
/** Whether the current open was initiated by **touch** (ADR 0016 §3 — gates the anchored scroll lock). */
|
|
196
|
+
readonly openedByTouch: _angular_core.WritableSignal<boolean>;
|
|
197
|
+
readonly openInteractionType: _angular_core.WritableSignal<RdxInteractionType>;
|
|
198
|
+
readonly closeInteractionType: _angular_core.WritableSignal<RdxInteractionType>;
|
|
199
|
+
readonly effectiveDisabled: Signal<boolean>;
|
|
200
|
+
readonly dir: Signal<Direction>;
|
|
201
|
+
readonly effectiveModal: Signal<boolean>;
|
|
123
202
|
readonly state: Signal<"open" | "closed">;
|
|
203
|
+
readonly present: Signal<boolean>;
|
|
124
204
|
constructor();
|
|
125
|
-
show(autoFocus?: RdxMenuAutoFocusInput): void;
|
|
126
|
-
close(): void;
|
|
127
|
-
toggle(): void;
|
|
205
|
+
show(autoFocus?: RdxMenuAutoFocusInput, reason?: RdxMenuOpenChangeReason, event?: Event): void;
|
|
206
|
+
close(reason?: RdxMenuOpenChangeReason, event?: Event): void;
|
|
207
|
+
toggle(reason?: RdxMenuOpenChangeReason, event?: Event): void;
|
|
208
|
+
markAsContextMenu(): void;
|
|
209
|
+
setAllowMouseUpTrigger(value: boolean): void;
|
|
210
|
+
/**
|
|
211
|
+
* Close this menu **and every ancestor menu** in the chain. Selecting an item dismisses the whole
|
|
212
|
+
* menu, not just the innermost submenu (a submenu's `close()` would leave its parents open).
|
|
213
|
+
*/
|
|
214
|
+
closeEntireMenu(reason?: RdxMenuOpenChangeReason, event?: Event): void;
|
|
128
215
|
registerTrigger(el: HTMLElement): () => void;
|
|
129
216
|
registerPopup(el: HTMLElement): () => void;
|
|
130
217
|
registerTransitionElement(element: HTMLElement): () => void;
|
|
@@ -134,8 +221,9 @@ declare class RdxMenuRoot {
|
|
|
134
221
|
handleTriggerInteraction(interaction: RdxMenuTriggerInteraction): boolean;
|
|
135
222
|
markAsSubmenu(): void;
|
|
136
223
|
closeParent(): void;
|
|
224
|
+
private createOpenChangeEvent;
|
|
137
225
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuRoot, never>;
|
|
138
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRoot, "[rdxMenuRoot],[rdxMenuSubmenuRoot]", ["rdxMenuRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; "highlightItemOnHover": { "alias": "highlightItemOnHover"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "closeParentOnEsc": { "alias": "closeParentOnEsc"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "onOpenChange": "onOpenChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1.RdxPopper; inputs: {}; outputs: {}; }]>;
|
|
226
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRoot, "[rdxMenuRoot],[rdxMenuSubmenuRoot]", ["rdxMenuRoot"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "loopFocus": { "alias": "loopFocus"; "required": false; "isSignal": true; }; "highlightItemOnHover": { "alias": "highlightItemOnHover"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "dirInput": { "alias": "dir"; "required": false; "isSignal": true; }; "closeParentOnEsc": { "alias": "closeParentOnEsc"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "onOpenChange": "onOpenChange"; "onOpenChangeComplete": "onOpenChangeComplete"; }, never, never, true, [{ directive: typeof i1.RdxPopper; inputs: {}; outputs: {}; }]>;
|
|
139
227
|
}
|
|
140
228
|
|
|
141
229
|
/**
|
|
@@ -145,9 +233,14 @@ declare class RdxMenuTrigger {
|
|
|
145
233
|
protected readonly rootContext: _radix_ng_primitives_menu.RdxMenuRootContext;
|
|
146
234
|
private readonly elementRef;
|
|
147
235
|
private readonly destroyRef;
|
|
148
|
-
private readonly
|
|
236
|
+
private readonly isBrowser;
|
|
149
237
|
private openTimer;
|
|
150
238
|
private closeTimer;
|
|
239
|
+
private allowMouseUpTriggerTimer;
|
|
240
|
+
private lastPointer;
|
|
241
|
+
private openedByHover;
|
|
242
|
+
private ignoreNextClick;
|
|
243
|
+
private readonly handleDocumentMouseUp;
|
|
151
244
|
/** Whether this trigger should be treated as a native button. Auto-detected for `<button>`. */
|
|
152
245
|
readonly nativeButton: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
153
246
|
/** Whether this trigger is disabled. */
|
|
@@ -161,7 +254,8 @@ declare class RdxMenuTrigger {
|
|
|
161
254
|
protected readonly nativeButtonState: _angular_core.Signal<boolean>;
|
|
162
255
|
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
163
256
|
constructor();
|
|
164
|
-
protected
|
|
257
|
+
protected handleMouseDown(event: MouseEvent): void;
|
|
258
|
+
protected handleClick(event: MouseEvent): void;
|
|
165
259
|
protected handleArrowDown(event: Event): void;
|
|
166
260
|
protected handleArrowUp(event: Event): void;
|
|
167
261
|
protected handleArrowLeft(event: Event): void;
|
|
@@ -172,8 +266,13 @@ declare class RdxMenuTrigger {
|
|
|
172
266
|
protected handleKeyboardToggle(event: Event): void;
|
|
173
267
|
protected handlePointerEnter(event: PointerEvent): void;
|
|
174
268
|
protected handlePointerLeave(event: PointerEvent): void;
|
|
269
|
+
protected handlePointerMove(event: PointerEvent): void;
|
|
270
|
+
private scheduleClose;
|
|
175
271
|
private clearOpenTimer;
|
|
176
272
|
private clearCloseTimer;
|
|
273
|
+
private armMouseUpGuard;
|
|
274
|
+
private clearMouseUpGuard;
|
|
275
|
+
private restoreKeyboardPopupFocus;
|
|
177
276
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuTrigger, never>;
|
|
178
277
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuTrigger, "[rdxMenuTrigger]", ["rdxMenuTrigger"], { "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
|
|
179
278
|
}
|
|
@@ -199,6 +298,7 @@ declare class RdxMenuSubTrigger {
|
|
|
199
298
|
private lastPointer;
|
|
200
299
|
/** Whether the current open was initiated by hover (vs keyboard / click). */
|
|
201
300
|
private openedByHover;
|
|
301
|
+
private ignoreNextKeyboardClick;
|
|
202
302
|
/** Whether this trigger (and therefore the submenu) is disabled. */
|
|
203
303
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
204
304
|
/** Whether this trigger should be treated as a native button. Auto-detected for `<button>`. */
|
|
@@ -213,99 +313,62 @@ declare class RdxMenuSubTrigger {
|
|
|
213
313
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
214
314
|
/** Highlighted when focused OR while the submenu is open. */
|
|
215
315
|
protected readonly highlighted: _angular_core.Signal<boolean>;
|
|
316
|
+
protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
|
|
216
317
|
protected readonly nativeButtonState: _angular_core.Signal<boolean>;
|
|
217
318
|
constructor();
|
|
218
319
|
private scheduleClose;
|
|
219
320
|
protected onFocus(): void;
|
|
220
321
|
protected onBlur(): void;
|
|
221
|
-
protected onClick(): void;
|
|
322
|
+
protected onClick(event: MouseEvent): void;
|
|
323
|
+
protected onEnter(event: Event): void;
|
|
222
324
|
protected onArrowRight(event: Event): void;
|
|
325
|
+
protected onArrowLeft(event: Event): void;
|
|
223
326
|
protected onPointerMove(event: PointerEvent): void;
|
|
224
327
|
protected onPointerLeave(): void;
|
|
225
328
|
protected clearHighlight(): void;
|
|
226
329
|
private closeSiblingSubmenus;
|
|
227
330
|
private clearSiblingHighlights;
|
|
331
|
+
private focusFirstSubmenuItem;
|
|
228
332
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuSubTrigger, never>;
|
|
229
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuSubTrigger, "[rdxMenuSubTrigger]", ["rdxMenuSubTrigger"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxPopperAnchor; inputs: {}; outputs: {}; }
|
|
333
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuSubTrigger, "[rdxMenuSubTrigger]", ["rdxMenuSubTrigger"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "nativeButton": { "alias": "nativeButton"; "required": false; "isSignal": true; }; "openOnHover": { "alias": "openOnHover"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.RdxPopperAnchor; inputs: {}; outputs: {}; }]>;
|
|
230
334
|
}
|
|
231
335
|
|
|
232
336
|
/**
|
|
233
|
-
*
|
|
234
|
-
*
|
|
337
|
+
* Structural directive that teleports the menu popup into a container (default `document.body`) while
|
|
338
|
+
* the menu is open, and keeps it mounted until any CSS exit `@keyframes` finishes.
|
|
339
|
+
*
|
|
340
|
+
* This replaces the consumer-owned `@if (root.open())` mount: it adds both teleporting *and*
|
|
341
|
+
* exit-animation support. Apply it with the `*` microsyntax on the positioner —
|
|
342
|
+
* `<div *rdxMenuPortal rdxMenuPositioner>` — or as an explicit `<ng-template rdxMenuPortal>`. For a
|
|
343
|
+
* custom container, or a backdrop alongside the positioner (multi-root), use the explicit form.
|
|
235
344
|
*/
|
|
236
345
|
declare class RdxMenuPortal {
|
|
237
|
-
/**
|
|
238
|
-
* Optional container to portal the content into. Defaults to `document.body`.
|
|
239
|
-
*/
|
|
240
|
-
readonly container: _angular_core.InputSignal<RdxPortalContainer | undefined>;
|
|
241
346
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuPortal, never>;
|
|
242
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPortal, "[rdxMenuPortal]", ["rdxMenuPortal"], {
|
|
347
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPortal, "ng-template[rdxMenuPortal]", ["rdxMenuPortal"], {}, {}, never, never, true, [{ directive: typeof i1$1.RdxPortalPresence; inputs: { "container": "container"; }; outputs: {}; }]>;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Dev-mode guard: `rdxMenuPortal` is a structural directive. The old `<div rdxMenuPortal>` markup
|
|
351
|
+
* would silently stop portaling — fail loudly instead.
|
|
352
|
+
*/
|
|
353
|
+
declare class RdxMenuPortalMisuseGuard {
|
|
354
|
+
constructor();
|
|
355
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuPortalMisuseGuard, never>;
|
|
356
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPortalMisuseGuard, "[rdxMenuPortal]:not(ng-template)", never, {}, {}, never, never, true, never>;
|
|
243
357
|
}
|
|
244
358
|
|
|
245
359
|
/**
|
|
246
360
|
* Positions the menu against its trigger.
|
|
361
|
+
*
|
|
362
|
+
* A "thin" positioner (ADR 0012): it inherits the popper positioning surface (inputs, `placed`
|
|
363
|
+
* output, unified vars + placement attrs) from {@link RdxPopperContentWrapper} and adds the menu
|
|
364
|
+
* defaults, the open/closed state attributes, and the deprecated `--radix-menu-*` aliases.
|
|
247
365
|
*/
|
|
248
|
-
declare class RdxMenuPositioner {
|
|
366
|
+
declare class RdxMenuPositioner extends RdxPopperContentWrapper {
|
|
249
367
|
protected readonly rootContext: _radix_ng_primitives_menu.RdxMenuRootContext;
|
|
250
|
-
protected readonly
|
|
251
|
-
|
|
252
|
-
* An element to position the popup against. Defaults to the trigger.
|
|
253
|
-
*/
|
|
254
|
-
readonly anchor: _angular_core.InputSignal<RdxPopperAnchorElement>;
|
|
255
|
-
/**
|
|
256
|
-
* The preferred side of the trigger to render against when open.
|
|
257
|
-
*/
|
|
258
|
-
readonly side: _angular_core.InputSignal<"top" | "right" | "bottom" | "left">;
|
|
259
|
-
/**
|
|
260
|
-
* Distance between the trigger and the popup in pixels.
|
|
261
|
-
*/
|
|
262
|
-
readonly sideOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
|
|
263
|
-
/**
|
|
264
|
-
* How to align the popup relative to the specified side.
|
|
265
|
-
*/
|
|
266
|
-
readonly align: _angular_core.InputSignal<"end" | "start" | "center">;
|
|
267
|
-
/**
|
|
268
|
-
* An offset in pixels from the `start` or `end` alignment options.
|
|
269
|
-
*/
|
|
270
|
-
readonly alignOffset: _angular_core.InputSignalWithTransform<number, NumberInput>;
|
|
271
|
-
/**
|
|
272
|
-
* Minimum distance to maintain between the arrow and the edges of the popup.
|
|
273
|
-
*/
|
|
274
|
-
readonly arrowPadding: _angular_core.InputSignalWithTransform<number, NumberInput>;
|
|
275
|
-
/**
|
|
276
|
-
* Whether to override side and alignment preferences to prevent collisions.
|
|
277
|
-
*/
|
|
278
|
-
readonly avoidCollisions: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
279
|
-
/**
|
|
280
|
-
* The element used as the collision boundary.
|
|
281
|
-
*/
|
|
282
|
-
readonly collisionBoundary: _angular_core.InputSignal<ElementRef<HTMLElement> | ElementRef<HTMLElement>[] | undefined>;
|
|
283
|
-
/**
|
|
284
|
-
* Distance in pixels from the boundary edges where collision detection should occur.
|
|
285
|
-
*/
|
|
286
|
-
readonly collisionPadding: _angular_core.InputSignal<number | Partial<Record<"top" | "right" | "bottom" | "left", number>>>;
|
|
287
|
-
/**
|
|
288
|
-
* The sticky behavior on the alignment axis.
|
|
289
|
-
*/
|
|
290
|
-
readonly sticky: _angular_core.InputSignal<"always" | "partial">;
|
|
291
|
-
/**
|
|
292
|
-
* Whether to hide the popup when the trigger becomes fully occluded.
|
|
293
|
-
*/
|
|
294
|
-
readonly hideWhenDetached: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
295
|
-
/**
|
|
296
|
-
* The CSS position strategy used by Floating UI.
|
|
297
|
-
*/
|
|
298
|
-
readonly positionStrategy: _angular_core.InputSignal<"fixed" | "absolute">;
|
|
299
|
-
/**
|
|
300
|
-
* Whether to update position on every animation frame.
|
|
301
|
-
*/
|
|
302
|
-
readonly updatePositionStrategy: _angular_core.InputSignal<"always" | "optimized">;
|
|
303
|
-
/**
|
|
304
|
-
* Emits when the popup has been placed.
|
|
305
|
-
*/
|
|
306
|
-
readonly placed: _angular_core.OutputRef<void>;
|
|
368
|
+
protected readonly legacyVars: Record<string, string>;
|
|
369
|
+
constructor();
|
|
307
370
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuPositioner, never>;
|
|
308
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPositioner, "[rdxMenuPositioner]", ["rdxMenuPositioner"], {
|
|
371
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPositioner, "[rdxMenuPositioner]", ["rdxMenuPositioner"], {}, {}, never, never, true, never>;
|
|
309
372
|
}
|
|
310
373
|
|
|
311
374
|
/**
|
|
@@ -313,11 +376,12 @@ declare class RdxMenuPositioner {
|
|
|
313
376
|
*/
|
|
314
377
|
declare class RdxMenuPopup {
|
|
315
378
|
protected readonly rootContext: _radix_ng_primitives_menu.RdxMenuRootContext;
|
|
316
|
-
private readonly
|
|
379
|
+
private readonly floatingContext;
|
|
380
|
+
private readonly registration;
|
|
381
|
+
private readonly focusManager;
|
|
317
382
|
private readonly focusScope;
|
|
318
383
|
private readonly wrapper;
|
|
319
384
|
private readonly elementRef;
|
|
320
|
-
private readonly dismissableLayersContext;
|
|
321
385
|
private search;
|
|
322
386
|
private searchTimer;
|
|
323
387
|
protected readonly align: _angular_core.Signal<"end" | "start" | "center" | undefined>;
|
|
@@ -325,19 +389,19 @@ declare class RdxMenuPopup {
|
|
|
325
389
|
/**
|
|
326
390
|
* Event handler called when the escape key is pressed. Can be prevented.
|
|
327
391
|
*/
|
|
328
|
-
readonly escapeKeyDown: _angular_core.
|
|
392
|
+
readonly escapeKeyDown: _angular_core.OutputEmitterRef<KeyboardEvent>;
|
|
329
393
|
/**
|
|
330
394
|
* Event handler called when a pointerdown event happens outside of the popup. Can be prevented.
|
|
331
395
|
*/
|
|
332
|
-
readonly pointerDownOutside: _angular_core.
|
|
396
|
+
readonly pointerDownOutside: _angular_core.OutputEmitterRef<RdxOutsidePressDomEvent>;
|
|
333
397
|
/**
|
|
334
398
|
* Event handler called when focus moves outside of the popup. Can be prevented.
|
|
335
399
|
*/
|
|
336
|
-
readonly focusOutside: _angular_core.
|
|
400
|
+
readonly focusOutside: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
337
401
|
/**
|
|
338
402
|
* Event handler called when an interaction happens outside of the popup. Can be prevented.
|
|
339
403
|
*/
|
|
340
|
-
readonly interactOutside: _angular_core.
|
|
404
|
+
readonly interactOutside: _angular_core.OutputEmitterRef<RdxOutsidePressDomEvent | FocusEvent>;
|
|
341
405
|
/**
|
|
342
406
|
* Event handler called before focus moves into the popup. Can be prevented.
|
|
343
407
|
*/
|
|
@@ -349,8 +413,10 @@ declare class RdxMenuPopup {
|
|
|
349
413
|
constructor();
|
|
350
414
|
protected handleCloseParent(event: Event): void;
|
|
351
415
|
protected handleKeydown(event: KeyboardEvent): void;
|
|
416
|
+
private scheduleSubmenuKeyboardFocus;
|
|
417
|
+
private applySubmenuKeyboardFocus;
|
|
352
418
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuPopup, never>;
|
|
353
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPopup, "[rdxMenuPopup]", ["rdxMenuPopup"], {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof
|
|
419
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuPopup, "[rdxMenuPopup]", ["rdxMenuPopup"], {}, { "escapeKeyDown": "escapeKeyDown"; "pointerDownOutside": "pointerDownOutside"; "focusOutside": "focusOutside"; "interactOutside": "interactOutside"; "openAutoFocus": "openAutoFocus"; "closeAutoFocus": "closeAutoFocus"; }, never, never, true, [{ directive: typeof i1.RdxPopperContent; inputs: {}; outputs: {}; }, { directive: typeof _radix_ng_primitives_core.RdxFloatingNodeRegistration; inputs: {}; outputs: {}; }, { directive: typeof i3.RdxFloatingFocusManager; inputs: {}; outputs: {}; }]>;
|
|
354
420
|
}
|
|
355
421
|
|
|
356
422
|
/**
|
|
@@ -426,11 +492,13 @@ declare class RdxMenuItem {
|
|
|
426
492
|
/** Emits when the item is selected. */
|
|
427
493
|
readonly onSelect: _angular_core.OutputEmitterRef<void>;
|
|
428
494
|
protected readonly highlighted: _angular_core.Signal<boolean>;
|
|
495
|
+
protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
|
|
429
496
|
onFocus(): void;
|
|
430
497
|
onBlur(): void;
|
|
431
498
|
onPointerMove(event: PointerEvent): void;
|
|
432
499
|
onPointerLeave(event: PointerEvent): void;
|
|
433
500
|
onItemClick(): void;
|
|
501
|
+
onMouseUp(event: MouseEvent): void;
|
|
434
502
|
protected onActivate(event: Event): void;
|
|
435
503
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuItem, never>;
|
|
436
504
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuItem, "[rdxMenuItem]", ["rdxMenuItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, never>;
|
|
@@ -452,11 +520,13 @@ declare class RdxMenuLinkItem {
|
|
|
452
520
|
/** Emits when the item is selected. */
|
|
453
521
|
readonly onSelect: _angular_core.OutputEmitterRef<void>;
|
|
454
522
|
protected readonly highlighted: _angular_core.Signal<boolean>;
|
|
523
|
+
protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
|
|
455
524
|
onFocus(): void;
|
|
456
525
|
onBlur(): void;
|
|
457
526
|
onPointerMove(event: PointerEvent): void;
|
|
458
527
|
onPointerLeave(event: PointerEvent): void;
|
|
459
528
|
onItemClick(event: MouseEvent): void;
|
|
529
|
+
onMouseUp(event: MouseEvent): void;
|
|
460
530
|
protected onActivate(event: Event): void;
|
|
461
531
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuLinkItem, never>;
|
|
462
532
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuLinkItem, "a[rdxMenuLinkItem]", ["rdxMenuLinkItem"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, never>;
|
|
@@ -466,6 +536,7 @@ declare class RdxMenuLinkItem {
|
|
|
466
536
|
* Groups related menu items together.
|
|
467
537
|
*/
|
|
468
538
|
declare class RdxMenuGroup {
|
|
539
|
+
readonly labelId: _angular_core.WritableSignal<string | undefined>;
|
|
469
540
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuGroup, never>;
|
|
470
541
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuGroup, "[rdxMenuGroup]", ["rdxMenuGroup"], {}, {}, never, never, true, never>;
|
|
471
542
|
}
|
|
@@ -474,6 +545,9 @@ declare class RdxMenuGroup {
|
|
|
474
545
|
* A label for a menu group.
|
|
475
546
|
*/
|
|
476
547
|
declare class RdxMenuGroupLabel {
|
|
548
|
+
private readonly groupContext;
|
|
549
|
+
readonly id: string;
|
|
550
|
+
constructor();
|
|
477
551
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuGroupLabel, never>;
|
|
478
552
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuGroupLabel, "[rdxMenuGroupLabel]", ["rdxMenuGroupLabel"], {}, {}, never, never, true, never>;
|
|
479
553
|
}
|
|
@@ -513,6 +587,7 @@ declare class RdxMenuCheckboxItem {
|
|
|
513
587
|
/** Emits when the checked state changes. */
|
|
514
588
|
readonly onCheckedChange: _angular_core.OutputEmitterRef<CheckedState>;
|
|
515
589
|
protected readonly highlighted: Signal<boolean>;
|
|
590
|
+
protected readonly effectiveDisabled: Signal<boolean>;
|
|
516
591
|
protected readonly isIndeterminate: typeof isIndeterminate;
|
|
517
592
|
protected readonly getCheckedState: typeof getCheckedState;
|
|
518
593
|
onFocus(): void;
|
|
@@ -520,6 +595,7 @@ declare class RdxMenuCheckboxItem {
|
|
|
520
595
|
onPointerMove(event: PointerEvent): void;
|
|
521
596
|
onPointerLeave(event: PointerEvent): void;
|
|
522
597
|
onItemClick(): void;
|
|
598
|
+
onMouseUp(event: MouseEvent): void;
|
|
523
599
|
protected onActivate(event: Event): void;
|
|
524
600
|
private toggleChecked;
|
|
525
601
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuCheckboxItem, never>;
|
|
@@ -540,27 +616,35 @@ declare class RdxMenuCheckboxItemIndicator {
|
|
|
540
616
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuCheckboxItemIndicator, "[rdxMenuCheckboxItemIndicator]", ["rdxMenuCheckboxItemIndicator"], { "keepMounted": { "alias": "keepMounted"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
541
617
|
}
|
|
542
618
|
|
|
543
|
-
interface RdxMenuRadioGroupContext {
|
|
544
|
-
value: Signal<
|
|
545
|
-
|
|
619
|
+
interface RdxMenuRadioGroupContext<T = unknown> {
|
|
620
|
+
value: Signal<T | undefined>;
|
|
621
|
+
disabled: Signal<boolean>;
|
|
622
|
+
selectValue: (value: T) => void;
|
|
546
623
|
}
|
|
547
|
-
declare const injectRdxMenuRadioGroupContext: _radix_ng_primitives_core.InjectContext<RdxMenuRadioGroupContext
|
|
548
|
-
declare const provideRdxMenuRadioGroupContext: (useFactory: () => RdxMenuRadioGroupContext) => _angular_core.Provider;
|
|
624
|
+
declare const injectRdxMenuRadioGroupContext: _radix_ng_primitives_core.InjectContext<RdxMenuRadioGroupContext<unknown>>;
|
|
625
|
+
declare const provideRdxMenuRadioGroupContext: (useFactory: () => RdxMenuRadioGroupContext<unknown>) => _angular_core.Provider;
|
|
549
626
|
/**
|
|
550
627
|
* Groups radio items in a menu.
|
|
551
628
|
*/
|
|
552
|
-
declare class RdxMenuRadioGroup {
|
|
629
|
+
declare class RdxMenuRadioGroup<T = unknown> {
|
|
630
|
+
private hasAppliedDefaultValue;
|
|
553
631
|
/**
|
|
554
632
|
* The currently selected value.
|
|
555
633
|
*/
|
|
556
|
-
readonly value: _angular_core.ModelSignal<
|
|
634
|
+
readonly value: _angular_core.ModelSignal<T | undefined>;
|
|
635
|
+
/** The initially selected value for uncontrolled usage. */
|
|
636
|
+
readonly defaultValue: _angular_core.InputSignal<T | undefined>;
|
|
637
|
+
/** Whether all radio items in the group are disabled. */
|
|
638
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
557
639
|
/**
|
|
558
640
|
* Emits when the selected value changes.
|
|
559
641
|
*/
|
|
560
|
-
readonly onValueChange: _angular_core.OutputEmitterRef<
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
642
|
+
readonly onValueChange: _angular_core.OutputEmitterRef<T>;
|
|
643
|
+
readonly labelId: _angular_core.WritableSignal<string | undefined>;
|
|
644
|
+
constructor();
|
|
645
|
+
selectValue(newValue: T): void;
|
|
646
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuRadioGroup<any>, never>;
|
|
647
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRadioGroup<any>, "[rdxMenuRadioGroup]", ["rdxMenuRadioGroup"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "onValueChange": "onValueChange"; }, never, never, true, never>;
|
|
564
648
|
}
|
|
565
649
|
|
|
566
650
|
interface RdxMenuRadioItemContext {
|
|
@@ -571,13 +655,13 @@ declare const provideRdxMenuRadioItemContext: (useFactory: () => RdxMenuRadioIte
|
|
|
571
655
|
/**
|
|
572
656
|
* A radio item within a menu radio group.
|
|
573
657
|
*/
|
|
574
|
-
declare class RdxMenuRadioItem {
|
|
658
|
+
declare class RdxMenuRadioItem<T = unknown> {
|
|
575
659
|
private readonly rootContext;
|
|
576
660
|
private readonly radioGroupContext;
|
|
577
661
|
private readonly elementRef;
|
|
578
662
|
private readonly isFocused;
|
|
579
663
|
/** The value of this radio item. */
|
|
580
|
-
readonly value: _angular_core.InputSignal<
|
|
664
|
+
readonly value: _angular_core.InputSignal<T>;
|
|
581
665
|
/** Whether this item is disabled. */
|
|
582
666
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
583
667
|
/** Whether selecting closes the menu. Defaults to false — radio items stay open. */
|
|
@@ -585,19 +669,21 @@ declare class RdxMenuRadioItem {
|
|
|
585
669
|
/** Explicit typeahead label. When set, overrides textContent for character search. */
|
|
586
670
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
587
671
|
/** Emits when this item is selected. */
|
|
588
|
-
readonly onSelect: _angular_core.OutputEmitterRef<
|
|
672
|
+
readonly onSelect: _angular_core.OutputEmitterRef<T>;
|
|
589
673
|
readonly checked: Signal<boolean>;
|
|
590
674
|
protected readonly highlighted: Signal<boolean>;
|
|
675
|
+
protected readonly effectiveDisabled: Signal<boolean>;
|
|
591
676
|
protected readonly getCheckedState: typeof getCheckedState;
|
|
592
677
|
onFocus(): void;
|
|
593
678
|
onBlur(): void;
|
|
594
679
|
onPointerMove(event: PointerEvent): void;
|
|
595
680
|
onPointerLeave(event: PointerEvent): void;
|
|
596
681
|
onItemClick(): void;
|
|
682
|
+
onMouseUp(event: MouseEvent): void;
|
|
597
683
|
protected onActivate(event: Event): void;
|
|
598
684
|
private selectItem;
|
|
599
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuRadioItem
|
|
600
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRadioItem
|
|
685
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuRadioItem<any>, never>;
|
|
686
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRadioItem<any>, "[rdxMenuRadioItem]", ["rdxMenuRadioItem"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; }, never, never, true, never>;
|
|
601
687
|
}
|
|
602
688
|
|
|
603
689
|
/**
|
|
@@ -614,11 +700,17 @@ declare class RdxMenuRadioItemIndicator {
|
|
|
614
700
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RdxMenuRadioItemIndicator, "[rdxMenuRadioItemIndicator]", ["rdxMenuRadioItemIndicator"], { "keepMounted": { "alias": "keepMounted"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
615
701
|
}
|
|
616
702
|
|
|
703
|
+
interface RdxMenuGroupContext {
|
|
704
|
+
labelId: WritableSignal<string | undefined>;
|
|
705
|
+
}
|
|
706
|
+
declare const injectRdxMenuGroupContext: _radix_ng_primitives_core.InjectContext<RdxMenuGroupContext>;
|
|
707
|
+
declare const provideRdxMenuGroupContext: (useFactory: () => RdxMenuGroupContext) => _angular_core.Provider;
|
|
708
|
+
|
|
617
709
|
declare class RdxMenuModule {
|
|
618
710
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RdxMenuModule, never>;
|
|
619
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxMenuModule, never, [typeof RdxMenuRoot, typeof RdxMenuTrigger, typeof RdxMenuSubTrigger, typeof RdxMenuPortal, typeof RdxMenuPositioner, typeof RdxMenuPopup, typeof RdxMenuViewport, typeof RdxMenuBackdrop, typeof RdxMenuArrow, typeof RdxMenuItem, typeof RdxMenuLinkItem, typeof RdxMenuGroup, typeof RdxMenuGroupLabel, typeof RdxMenuSeparator, typeof RdxMenuCheckboxItem, typeof RdxMenuCheckboxItemIndicator, typeof RdxMenuRadioGroup, typeof RdxMenuRadioItem, typeof RdxMenuRadioItemIndicator], [typeof RdxMenuRoot, typeof RdxMenuTrigger, typeof RdxMenuSubTrigger, typeof RdxMenuPortal, typeof RdxMenuPositioner, typeof RdxMenuPopup, typeof RdxMenuViewport, typeof RdxMenuBackdrop, typeof RdxMenuArrow, typeof RdxMenuItem, typeof RdxMenuLinkItem, typeof RdxMenuGroup, typeof RdxMenuGroupLabel, typeof RdxMenuSeparator, typeof RdxMenuCheckboxItem, typeof RdxMenuCheckboxItemIndicator, typeof RdxMenuRadioGroup, typeof RdxMenuRadioItem, typeof RdxMenuRadioItemIndicator]>;
|
|
711
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<RdxMenuModule, never, [typeof RdxMenuRoot, typeof RdxMenuTrigger, typeof RdxMenuSubTrigger, typeof RdxMenuPortal, typeof RdxMenuPortalMisuseGuard, typeof RdxMenuPositioner, typeof RdxMenuPopup, typeof RdxMenuViewport, typeof RdxMenuBackdrop, typeof RdxMenuArrow, typeof RdxMenuItem, typeof RdxMenuLinkItem, typeof RdxMenuGroup, typeof RdxMenuGroupLabel, typeof RdxMenuSeparator, typeof RdxMenuCheckboxItem, typeof RdxMenuCheckboxItemIndicator, typeof RdxMenuRadioGroup, typeof RdxMenuRadioItem, typeof RdxMenuRadioItemIndicator], [typeof RdxMenuRoot, typeof RdxMenuTrigger, typeof RdxMenuSubTrigger, typeof RdxMenuPortal, typeof RdxMenuPortalMisuseGuard, typeof RdxMenuPositioner, typeof RdxMenuPopup, typeof RdxMenuViewport, typeof RdxMenuBackdrop, typeof RdxMenuArrow, typeof RdxMenuItem, typeof RdxMenuLinkItem, typeof RdxMenuGroup, typeof RdxMenuGroupLabel, typeof RdxMenuSeparator, typeof RdxMenuCheckboxItem, typeof RdxMenuCheckboxItemIndicator, typeof RdxMenuRadioGroup, typeof RdxMenuRadioItem, typeof RdxMenuRadioItemIndicator]>;
|
|
620
712
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<RdxMenuModule>;
|
|
621
713
|
}
|
|
622
714
|
|
|
623
|
-
export { RdxMenuArrow, RdxMenuBackdrop, RdxMenuCheckboxItem, RdxMenuCheckboxItemIndicator, RdxMenuGroup, RdxMenuGroupLabel, RdxMenuItem, RdxMenuLinkItem, RdxMenuModule, RdxMenuPopup, RdxMenuPortal, RdxMenuPositioner, RdxMenuRadioGroup, RdxMenuRadioItem, RdxMenuRadioItemIndicator, RdxMenuRoot, RdxMenuSeparator, RdxMenuSubTrigger, RdxMenuTrigger, RdxMenuViewport, getCheckedState, injectRdxMenuCheckboxItemContext, injectRdxMenuRadioGroupContext, injectRdxMenuRadioItemContext, injectRdxMenuRootContext, isIndeterminate, provideRdxMenuCheckboxItemContext, provideRdxMenuRadioGroupContext, provideRdxMenuRadioItemContext, provideRdxMenuRootContext };
|
|
624
|
-
export type { CheckedState, RdxMenuAutoFocus, RdxMenuAutoFocusInput, RdxMenuCheckboxItemContext, RdxMenuOrientation, RdxMenuRadioGroupContext, RdxMenuRadioItemContext, RdxMenuRootContext, RdxMenuTransitionStatus, RdxMenuTriggerInteraction, RdxMenuTriggerInteractionHandler };
|
|
715
|
+
export { RdxMenuArrow, RdxMenuBackdrop, RdxMenuCheckboxItem, RdxMenuCheckboxItemIndicator, RdxMenuGroup, RdxMenuGroupLabel, RdxMenuItem, RdxMenuLinkItem, RdxMenuModule, RdxMenuPopup, RdxMenuPortal, RdxMenuPortalMisuseGuard, RdxMenuPositioner, RdxMenuRadioGroup, RdxMenuRadioItem, RdxMenuRadioItemIndicator, RdxMenuRoot, RdxMenuSeparator, RdxMenuSubTrigger, RdxMenuTrigger, RdxMenuViewport, getCheckedState, injectRdxMenuCheckboxItemContext, injectRdxMenuGroupContext, injectRdxMenuRadioGroupContext, injectRdxMenuRadioItemContext, injectRdxMenuRootContext, isIndeterminate, provideRdxMenuCheckboxItemContext, provideRdxMenuGroupContext, provideRdxMenuRadioGroupContext, provideRdxMenuRadioItemContext, provideRdxMenuRootContext };
|
|
716
|
+
export type { CheckedState, RdxMenuAutoFocus, RdxMenuAutoFocusInput, RdxMenuCheckboxItemContext, RdxMenuGroupContext, RdxMenuOpenChange, RdxMenuOpenChangeEventDetails, RdxMenuOpenChangeReason, RdxMenuOrientation, RdxMenuParentType, RdxMenuRadioGroupContext, RdxMenuRadioItemContext, RdxMenuRootContext, RdxMenuTransitionStatus, RdxMenuTriggerInteraction, RdxMenuTriggerInteractionHandler };
|