@radix-ng/primitives 1.0.4 → 1.0.6
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/fesm2022/radix-ng-primitives-accordion.mjs +35 -27
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-alert-dialog.mjs +34 -34
- package/fesm2022/radix-ng-primitives-arrow.mjs +3 -3
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs +5 -4
- package/fesm2022/radix-ng-primitives-aspect-ratio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-autocomplete.mjs +175 -125
- package/fesm2022/radix-ng-primitives-autocomplete.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-avatar.mjs +25 -19
- package/fesm2022/radix-ng-primitives-avatar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-button.mjs +11 -7
- package/fesm2022/radix-ng-primitives-button.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-calendar.mjs +140 -90
- package/fesm2022/radix-ng-primitives-calendar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +61 -40
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-collapsible.mjs +35 -24
- package/fesm2022/radix-ng-primitives-collapsible.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-combobox.mjs +278 -177
- package/fesm2022/radix-ng-primitives-combobox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +76 -35
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-config.mjs +7 -5
- package/fesm2022/radix-ng-primitives-config.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-context-menu.mjs +48 -22
- package/fesm2022/radix-ng-primitives-context-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-core.mjs +44 -28
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-cropper.mjs +73 -45
- package/fesm2022/radix-ng-primitives-cropper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-date-field.mjs +70 -40
- package/fesm2022/radix-ng-primitives-date-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +93 -67
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-direction-provider.mjs +5 -4
- package/fesm2022/radix-ng-primitives-direction-provider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs +20 -16
- package/fesm2022/radix-ng-primitives-dismissable-layer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +107 -81
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +53 -39
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-field.mjs +69 -42
- package/fesm2022/radix-ng-primitives-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-fieldset.mjs +8 -7
- package/fesm2022/radix-ng-primitives-fieldset.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +77 -40
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-guards.mjs +3 -3
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +7 -5
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-form.mjs +25 -16
- package/fesm2022/radix-ng-primitives-form.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-input.mjs +41 -22
- package/fesm2022/radix-ng-primitives-input.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-label.mjs +7 -5
- package/fesm2022/radix-ng-primitives-label.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +274 -154
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +35 -17
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-meter.mjs +41 -30
- package/fesm2022/radix-ng-primitives-meter.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +220 -183
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +87 -59
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-pagination.mjs +48 -38
- package/fesm2022/radix-ng-primitives-pagination.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +150 -107
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +79 -47
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-portal.mjs +20 -13
- package/fesm2022/radix-ng-primitives-portal.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-presence.mjs +3 -3
- package/fesm2022/radix-ng-primitives-preview-card.mjs +119 -74
- package/fesm2022/radix-ng-primitives-preview-card.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-progress.mjs +43 -31
- package/fesm2022/radix-ng-primitives-progress.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +177 -168
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +54 -38
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +595 -102
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-separator.mjs +7 -5
- package/fesm2022/radix-ng-primitives-separator.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +101 -63
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +53 -39
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +44 -25
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +72 -47
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-time-field.mjs +72 -41
- package/fesm2022/radix-ng-primitives-time-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toast.mjs +75 -56
- package/fesm2022/radix-ng-primitives-toast.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +29 -19
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +16 -11
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +38 -30
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +118 -63
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs +31 -20
- package/fesm2022/radix-ng-primitives-visually-hidden.mjs.map +1 -1
- package/package.json +2 -2
- package/types/radix-ng-primitives-autocomplete.d.ts +3 -1
- package/types/radix-ng-primitives-combobox.d.ts +28 -9
- package/types/radix-ng-primitives-composite.d.ts +2 -0
- package/types/radix-ng-primitives-context-menu.d.ts +2 -0
- package/types/radix-ng-primitives-dialog.d.ts +6 -3
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +11 -0
- package/types/radix-ng-primitives-menu.d.ts +47 -15
- package/types/radix-ng-primitives-menubar.d.ts +6 -1
- package/types/radix-ng-primitives-navigation-menu.d.ts +8 -6
- package/types/radix-ng-primitives-popover.d.ts +12 -4
- package/types/radix-ng-primitives-preview-card.d.ts +18 -5
- package/types/radix-ng-primitives-radio.d.ts +100 -65
- package/types/radix-ng-primitives-select.d.ts +186 -391
- package/types/radix-ng-primitives-switch.d.ts +3 -2
- package/types/radix-ng-primitives-tooltip.d.ts +17 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, model, input, booleanAttribute, output, signal, computed, effect, untracked, Directive, DestroyRef, isDevMode, Injector, afterNextRender, numberAttribute, PLATFORM_ID, NgModule } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, ElementRef, model, input, booleanAttribute, output, signal, computed, effect, untracked, Directive, DestroyRef, isDevMode, Injector, afterNextRender, numberAttribute, PLATFORM_ID, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@radix-ng/primitives/popper';
|
|
4
4
|
import { RdxPopper, RdxPopperContentWrapper, RdxPopperArrow, RdxPopperContent, legacyPopperVars, provideRdxPopperContentWrapper, provideRdxPopperContentConfig, RdxPopperAnchor } from '@radix-ng/primitives/popper';
|
|
5
5
|
import * as i2 from '@radix-ng/primitives/core';
|
|
@@ -79,6 +79,12 @@ function getMenuItemType(element) {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
const [injectRdxMenuRootContext, provideRdxMenuRootContext] = createContext('RdxMenuRootContext', 'components/menu');
|
|
82
|
+
/**
|
|
83
|
+
* Ambient modality for a menu, provided by a coordinator (e.g. `Menubar`) so its child menus inherit
|
|
84
|
+
* the coordinator's `modal` setting instead of each defaulting independently. A top-level menu prefers
|
|
85
|
+
* this over its own `modal` input when present; submenus stay non-modal regardless.
|
|
86
|
+
*/
|
|
87
|
+
const RDX_MENU_AMBIENT_MODAL = new InjectionToken('RdxMenuAmbientModal');
|
|
82
88
|
function buildContext(instance) {
|
|
83
89
|
return {
|
|
84
90
|
isOpen: instance.open,
|
|
@@ -95,6 +101,7 @@ function buildContext(instance) {
|
|
|
95
101
|
isSubmenu: instance.isSubmenu.asReadonly(),
|
|
96
102
|
parentType: instance.parentType,
|
|
97
103
|
lastOpenChangeReason: instance.lastOpenChangeReason.asReadonly(),
|
|
104
|
+
instantType: instance.instantType,
|
|
98
105
|
allowMouseUpTrigger: instance.allowMouseUpTrigger,
|
|
99
106
|
openedByTouch: instance.openedByTouch.asReadonly(),
|
|
100
107
|
openInteractionType: instance.openInteractionType.asReadonly(),
|
|
@@ -133,6 +140,8 @@ class RdxMenuRoot {
|
|
|
133
140
|
this.popper = inject(RdxPopper);
|
|
134
141
|
this.parentRoot = inject(RdxMenuRoot, { optional: true, skipSelf: true });
|
|
135
142
|
this.providedDirection = injectDirection();
|
|
143
|
+
/** Ambient modality from an enclosing coordinator (e.g. Menubar). Overrides own `modal` for top-level menus. */
|
|
144
|
+
this.ambientModal = inject(RDX_MENU_AMBIENT_MODAL, { optional: true });
|
|
136
145
|
/**
|
|
137
146
|
* The shared per-popup floating context (ADR 0015 §1) — `open` mirrors this menu's open state, the
|
|
138
147
|
* trigger registry is bridged from {@link registerTrigger}, and the reference / floating elements are
|
|
@@ -146,7 +155,8 @@ class RdxMenuRoot {
|
|
|
146
155
|
this.transition = useTransitionStatus((open) => this.onOpenChangeComplete.emit(open));
|
|
147
156
|
this.hasAppliedDefaultOpen = false;
|
|
148
157
|
/** Whether the menu is currently open. */
|
|
149
|
-
this.open = model(false,
|
|
158
|
+
this.open = model(false, /* @ts-ignore */
|
|
159
|
+
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
150
160
|
/** Whether the menu is initially open. */
|
|
151
161
|
this.defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
152
162
|
/** Whether interactions with the menu are disabled. */
|
|
@@ -161,7 +171,8 @@ class RdxMenuRoot {
|
|
|
161
171
|
/** Whether moving the pointer over items should highlight them. */
|
|
162
172
|
this.highlightItemOnHover = input(true, { ...(ngDevMode ? { debugName: "highlightItemOnHover" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
163
173
|
/** The menu orientation. */
|
|
164
|
-
this.orientation = input('vertical',
|
|
174
|
+
this.orientation = input('vertical', /* @ts-ignore */
|
|
175
|
+
...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
165
176
|
/** Text direction for submenu arrow-key behavior. Inherited by nested submenu roots. */
|
|
166
177
|
this.dirInput = input(undefined, { ...(ngDevMode ? { debugName: "dirInput" } : /* istanbul ignore next */ {}), alias: 'dir' });
|
|
167
178
|
/** Whether pressing Escape inside a submenu closes the whole menu chain. */
|
|
@@ -170,18 +181,27 @@ class RdxMenuRoot {
|
|
|
170
181
|
this.onOpenChange = output();
|
|
171
182
|
/** Emits when the open/close CSS transition or animation finishes. */
|
|
172
183
|
this.onOpenChangeComplete = output();
|
|
173
|
-
this.trigger = signal(undefined,
|
|
174
|
-
|
|
175
|
-
this.
|
|
184
|
+
this.trigger = signal(undefined, /* @ts-ignore */
|
|
185
|
+
...(ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []));
|
|
186
|
+
this.popupElement = signal(undefined, /* @ts-ignore */
|
|
187
|
+
...(ngDevMode ? [{ debugName: "popupElement" }] : /* istanbul ignore next */ []));
|
|
188
|
+
this.beforeContentFocusGuard = signal(null, /* @ts-ignore */
|
|
189
|
+
...(ngDevMode ? [{ debugName: "beforeContentFocusGuard" }] : /* istanbul ignore next */ []));
|
|
176
190
|
this.transitionStatus = this.transition.status;
|
|
177
|
-
this.activeIndex = signal(null,
|
|
191
|
+
this.activeIndex = signal(null, /* @ts-ignore */
|
|
192
|
+
...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
|
|
178
193
|
/** Whether the popup grabs focus when it opens. Set false for menubar hover-switching. */
|
|
179
|
-
this.autoFocus = signal('first',
|
|
180
|
-
|
|
194
|
+
this.autoFocus = signal('first', /* @ts-ignore */
|
|
195
|
+
...(ngDevMode ? [{ debugName: "autoFocus" }] : /* istanbul ignore next */ []));
|
|
196
|
+
this.isSubmenu = signal(false, /* @ts-ignore */
|
|
197
|
+
...(ngDevMode ? [{ debugName: "isSubmenu" }] : /* istanbul ignore next */ []));
|
|
181
198
|
/** Set by `RdxContextMenuRoot` (it composes this root) — distinguishes a context menu from a dropdown. */
|
|
182
|
-
this.isContextMenu = signal(false,
|
|
183
|
-
|
|
184
|
-
this.
|
|
199
|
+
this.isContextMenu = signal(false, /* @ts-ignore */
|
|
200
|
+
...(ngDevMode ? [{ debugName: "isContextMenu" }] : /* istanbul ignore next */ []));
|
|
201
|
+
this.hasTriggerInteractionHandler = signal(false, /* @ts-ignore */
|
|
202
|
+
...(ngDevMode ? [{ debugName: "hasTriggerInteractionHandler" }] : /* istanbul ignore next */ []));
|
|
203
|
+
this.preventUnmountOnClose = signal(false, /* @ts-ignore */
|
|
204
|
+
...(ngDevMode ? [{ debugName: "preventUnmountOnClose" }] : /* istanbul ignore next */ []));
|
|
185
205
|
/**
|
|
186
206
|
* What kind of parent this menu has (Base UI `MenuParent.type`). A submenu wins over everything (its
|
|
187
207
|
* parent is a menu); otherwise a context-menu marker, then a menubar (detected by the trigger
|
|
@@ -198,22 +218,54 @@ class RdxMenuRoot {
|
|
|
198
218
|
return 'menubar';
|
|
199
219
|
}
|
|
200
220
|
return undefined;
|
|
201
|
-
},
|
|
221
|
+
}, /* @ts-ignore */
|
|
222
|
+
...(ngDevMode ? [{ debugName: "parentType" }] : /* istanbul ignore next */ []));
|
|
202
223
|
/** The reason for the most recent open-change (Base UI open-change `reason`), for the per-kind policy. */
|
|
203
|
-
this.lastOpenChangeReason = signal('none',
|
|
204
|
-
|
|
205
|
-
this.
|
|
224
|
+
this.lastOpenChangeReason = signal('none', /* @ts-ignore */
|
|
225
|
+
...(ngDevMode ? [{ debugName: "lastOpenChangeReason" }] : /* istanbul ignore next */ []));
|
|
226
|
+
this.localAllowMouseUpTrigger = signal(false, /* @ts-ignore */
|
|
227
|
+
...(ngDevMode ? [{ debugName: "localAllowMouseUpTrigger" }] : /* istanbul ignore next */ []));
|
|
228
|
+
this.allowMouseUpTrigger = computed(() => this.parentRoot?.allowMouseUpTrigger() ?? this.localAllowMouseUpTrigger(), /* @ts-ignore */
|
|
229
|
+
...(ngDevMode ? [{ debugName: "allowMouseUpTrigger" }] : /* istanbul ignore next */ []));
|
|
206
230
|
/** Whether the current open was initiated by **touch** (ADR 0016 §3 — gates the anchored scroll lock). */
|
|
207
|
-
this.openedByTouch = signal(false,
|
|
208
|
-
|
|
209
|
-
this.
|
|
210
|
-
|
|
231
|
+
this.openedByTouch = signal(false, /* @ts-ignore */
|
|
232
|
+
...(ngDevMode ? [{ debugName: "openedByTouch" }] : /* istanbul ignore next */ []));
|
|
233
|
+
this.openInteractionType = signal(null, /* @ts-ignore */
|
|
234
|
+
...(ngDevMode ? [{ debugName: "openInteractionType" }] : /* istanbul ignore next */ []));
|
|
235
|
+
this.closeInteractionType = signal(null, /* @ts-ignore */
|
|
236
|
+
...(ngDevMode ? [{ debugName: "closeInteractionType" }] : /* istanbul ignore next */ []));
|
|
237
|
+
this.effectiveDisabled = computed(() => this.disabled() || (this.parentRoot?.effectiveDisabled() ?? false), /* @ts-ignore */
|
|
238
|
+
...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
|
|
211
239
|
this.dir = computed(() => {
|
|
212
240
|
return this.dirInput() ?? this.parentRoot?.dir() ?? this.providedDirection();
|
|
213
|
-
},
|
|
214
|
-
|
|
215
|
-
this.
|
|
216
|
-
|
|
241
|
+
}, /* @ts-ignore */
|
|
242
|
+
...(ngDevMode ? [{ debugName: "dir" }] : /* istanbul ignore next */ []));
|
|
243
|
+
this.effectiveModal = computed(() => (this.ambientModal?.() ?? this.modal()) && !this.isSubmenu(), /* @ts-ignore */
|
|
244
|
+
...(ngDevMode ? [{ debugName: "effectiveModal" }] : /* istanbul ignore next */ []));
|
|
245
|
+
this.state = computed(() => (this.open() ? 'open' : 'closed'), /* @ts-ignore */
|
|
246
|
+
...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
247
|
+
this.present = computed(() => this.open() || this.preventUnmountOnClose(), /* @ts-ignore */
|
|
248
|
+
...(ngDevMode ? [{ debugName: "present" }] : /* istanbul ignore next */ []));
|
|
249
|
+
/** Base UI `data-instant`: the open/close reason classified into the instant-suppression bucket. */
|
|
250
|
+
this.instantType = computed(() => {
|
|
251
|
+
const reason = this.lastOpenChangeReason();
|
|
252
|
+
if (this.open()) {
|
|
253
|
+
if (reason === 'sibling-open')
|
|
254
|
+
return 'trigger-change';
|
|
255
|
+
if (reason === 'trigger-press' || reason === 'trigger-focus' || reason === 'list-navigation') {
|
|
256
|
+
return 'click';
|
|
257
|
+
}
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
260
|
+
if (reason === 'escape-key' ||
|
|
261
|
+
reason === 'outside-press' ||
|
|
262
|
+
reason === 'focus-out' ||
|
|
263
|
+
reason === 'cancel-open') {
|
|
264
|
+
return 'dismiss';
|
|
265
|
+
}
|
|
266
|
+
return undefined;
|
|
267
|
+
}, /* @ts-ignore */
|
|
268
|
+
...(ngDevMode ? [{ debugName: "instantType" }] : /* istanbul ignore next */ []));
|
|
217
269
|
effect(() => {
|
|
218
270
|
const defaultOpen = this.defaultOpen();
|
|
219
271
|
if (!this.hasAppliedDefaultOpen && defaultOpen) {
|
|
@@ -411,8 +463,8 @@ class RdxMenuRoot {
|
|
|
411
463
|
const item = autoFocus === 'last' ? items.at(-1) : items[0];
|
|
412
464
|
(item ?? popup).focus({ preventScroll: true });
|
|
413
465
|
}
|
|
414
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
415
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
466
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
467
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuRoot, isStandalone: true, selector: "[rdxMenuRoot],[rdxMenuSubmenuRoot]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, loopFocus: { classPropertyName: "loopFocus", publicName: "loopFocus", isSignal: true, isRequired: false, transformFunction: null }, highlightItemOnHover: { classPropertyName: "highlightItemOnHover", publicName: "highlightItemOnHover", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, dirInput: { classPropertyName: "dirInput", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, closeParentOnEsc: { classPropertyName: "closeParentOnEsc", publicName: "closeParentOnEsc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", onOpenChange: "onOpenChange", onOpenChangeComplete: "onOpenChangeComplete" }, providers: [
|
|
416
468
|
provideRdxMenuRootContext(contextFactory),
|
|
417
469
|
// New floating foundation (ADR 0015/0017). Inherit-or-create the tree so a submenu shares its
|
|
418
470
|
// parent menu's tree; the per-popup root context bridges open / triggers / reference.
|
|
@@ -420,7 +472,7 @@ class RdxMenuRoot {
|
|
|
420
472
|
provideFloatingRootContext(() => inject(RdxMenuRoot).floatingContext)
|
|
421
473
|
], exportAs: ["rdxMenuRoot"], hostDirectives: [{ directive: i1.RdxPopper }], ngImport: i0 }); }
|
|
422
474
|
}
|
|
423
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
475
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRoot, decorators: [{
|
|
424
476
|
type: Directive,
|
|
425
477
|
args: [{
|
|
426
478
|
selector: '[rdxMenuRoot],[rdxMenuSubmenuRoot]',
|
|
@@ -444,14 +496,17 @@ class RdxMenuArrow {
|
|
|
444
496
|
constructor() {
|
|
445
497
|
this.rootContext = injectRdxMenuRootContext();
|
|
446
498
|
this.wrapper = inject(RdxPopperContentWrapper, { optional: true });
|
|
447
|
-
this.side = computed(() => this.wrapper?.placedSide(),
|
|
448
|
-
|
|
449
|
-
this.
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
499
|
+
this.side = computed(() => this.wrapper?.placedSide(), /* @ts-ignore */
|
|
500
|
+
...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
501
|
+
this.align = computed(() => this.wrapper?.placedAlign(), /* @ts-ignore */
|
|
502
|
+
...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
503
|
+
this.uncentered = computed(() => this.wrapper?.arrowUncentered() ?? false, /* @ts-ignore */
|
|
504
|
+
...(ngDevMode ? [{ debugName: "uncentered" }] : /* istanbul ignore next */ []));
|
|
505
|
+
}
|
|
506
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuArrow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
507
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuArrow, isStandalone: true, selector: "[rdxMenuArrow]", host: { properties: { "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-side": "side()", "attr.data-align": "align()", "attr.data-uncentered": "uncentered() ? \"\" : undefined" } }, exportAs: ["rdxMenuArrow"], hostDirectives: [{ directive: i1.RdxPopperArrow }], ngImport: i0 }); }
|
|
453
508
|
}
|
|
454
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
509
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuArrow, decorators: [{
|
|
455
510
|
type: Directive,
|
|
456
511
|
args: [{
|
|
457
512
|
selector: '[rdxMenuArrow]',
|
|
@@ -476,10 +531,10 @@ class RdxMenuBackdrop {
|
|
|
476
531
|
constructor() {
|
|
477
532
|
this.rootContext = injectRdxMenuRootContext();
|
|
478
533
|
}
|
|
479
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
480
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
534
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuBackdrop, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
535
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuBackdrop, isStandalone: true, selector: "[rdxMenuBackdrop]", host: { properties: { "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-starting-style": "rootContext.transitionStatus() === \"starting\" ? \"\" : undefined", "attr.data-ending-style": "rootContext.transitionStatus() === \"ending\" ? \"\" : undefined" } }, exportAs: ["rdxMenuBackdrop"], ngImport: i0 }); }
|
|
481
536
|
}
|
|
482
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
537
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuBackdrop, decorators: [{
|
|
483
538
|
type: Directive,
|
|
484
539
|
args: [{
|
|
485
540
|
selector: '[rdxMenuBackdrop]',
|
|
@@ -487,7 +542,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
487
542
|
host: {
|
|
488
543
|
'[attr.data-open]': 'rootContext.isOpen() ? "" : undefined',
|
|
489
544
|
'[attr.data-closed]': 'rootContext.isOpen() ? undefined : ""',
|
|
490
|
-
'[attr.data-state]': 'rootContext.isOpen() ? "open" : "closed"',
|
|
491
545
|
'[attr.data-starting-style]': 'rootContext.transitionStatus() === "starting" ? "" : undefined',
|
|
492
546
|
'[attr.data-ending-style]': 'rootContext.transitionStatus() === "ending" ? "" : undefined'
|
|
493
547
|
}
|
|
@@ -516,22 +570,26 @@ class RdxMenuCheckboxItem {
|
|
|
516
570
|
this.rootContext = injectRdxMenuRootContext(true);
|
|
517
571
|
this.listItem = inject(RdxCompositeListItem, { self: true });
|
|
518
572
|
this.elementRef = inject(ElementRef);
|
|
519
|
-
this.isFocused = signal(false,
|
|
573
|
+
this.isFocused = signal(false, /* @ts-ignore */
|
|
574
|
+
...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
|
|
520
575
|
/** Whether this item is disabled. */
|
|
521
576
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
522
577
|
/** Whether toggling closes the menu. Defaults to false — checkbox items stay open. */
|
|
523
578
|
this.closeOnClick = input(false, { ...(ngDevMode ? { debugName: "closeOnClick" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
524
579
|
/** Explicit typeahead label. When set, overrides textContent for character search. */
|
|
525
|
-
this.label = input(undefined,
|
|
580
|
+
this.label = input(undefined, /* @ts-ignore */
|
|
581
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
526
582
|
/** The checked state of the item. */
|
|
527
|
-
this.checked = model(false,
|
|
528
|
-
|
|
583
|
+
this.checked = model(false, /* @ts-ignore */
|
|
584
|
+
...(ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []));
|
|
585
|
+
/** Emits before the checked state changes; call `eventDetails.cancel()` to veto it. */
|
|
529
586
|
this.onCheckedChange = output();
|
|
530
|
-
this.highlighted = computed(() => this.rootContext?.activeIndex() === this.listItem.index() || this.isFocused(),
|
|
531
|
-
|
|
587
|
+
this.highlighted = computed(() => this.rootContext?.activeIndex() === this.listItem.index() || this.isFocused(), /* @ts-ignore */
|
|
588
|
+
...(ngDevMode ? [{ debugName: "highlighted" }] : /* istanbul ignore next */ []));
|
|
589
|
+
this.effectiveDisabled = computed(() => this.disabled() || (this.rootContext?.disabled() ?? false), /* @ts-ignore */
|
|
590
|
+
...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
|
|
532
591
|
// Expose helpers for host bindings
|
|
533
592
|
this.isIndeterminate = isIndeterminate;
|
|
534
|
-
this.getCheckedState = getCheckedState;
|
|
535
593
|
effect(() => {
|
|
536
594
|
this.listItem.setMetadata({
|
|
537
595
|
type: 'checkbox-item',
|
|
@@ -575,9 +633,9 @@ class RdxMenuCheckboxItem {
|
|
|
575
633
|
onItemClick() {
|
|
576
634
|
if (this.effectiveDisabled())
|
|
577
635
|
return;
|
|
578
|
-
this.toggleChecked()
|
|
579
|
-
if (this.closeOnClick())
|
|
636
|
+
if (this.toggleChecked() && this.closeOnClick()) {
|
|
580
637
|
this.rootContext?.closeEntireMenu();
|
|
638
|
+
}
|
|
581
639
|
}
|
|
582
640
|
onMouseUp(event) {
|
|
583
641
|
if (this.effectiveDisabled() || event.button !== 0 || !this.rootContext?.allowMouseUpTrigger()) {
|
|
@@ -590,14 +648,20 @@ class RdxMenuCheckboxItem {
|
|
|
590
648
|
if (this.effectiveDisabled())
|
|
591
649
|
return;
|
|
592
650
|
event.preventDefault();
|
|
593
|
-
this.toggleChecked()
|
|
594
|
-
if (this.closeOnClick())
|
|
651
|
+
if (this.toggleChecked(event) && this.closeOnClick()) {
|
|
595
652
|
this.rootContext?.closeEntireMenu();
|
|
653
|
+
}
|
|
596
654
|
}
|
|
597
|
-
|
|
655
|
+
/** Emits the cancelable change, applies it unless vetoed, and reports whether it was applied. */
|
|
656
|
+
toggleChecked(event) {
|
|
598
657
|
const next = isIndeterminate(this.checked()) ? true : !this.checked();
|
|
658
|
+
const { eventDetails } = createCancelableChangeEventDetails('none', event ?? new Event('menu.checked-change'));
|
|
659
|
+
this.onCheckedChange.emit({ checked: next, eventDetails });
|
|
660
|
+
if (eventDetails.isCanceled()) {
|
|
661
|
+
return false;
|
|
662
|
+
}
|
|
599
663
|
this.checked.set(next);
|
|
600
|
-
|
|
664
|
+
return true;
|
|
601
665
|
}
|
|
602
666
|
setActiveIndex() {
|
|
603
667
|
if (!this.rootContext || this.rootContext.disabled()) {
|
|
@@ -613,10 +677,10 @@ class RdxMenuCheckboxItem {
|
|
|
613
677
|
this.rootContext.setActiveIndex(null);
|
|
614
678
|
}
|
|
615
679
|
}
|
|
616
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
617
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
680
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuCheckboxItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
681
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuCheckboxItem, isStandalone: true, selector: "[rdxMenuCheckboxItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnClick: { classPropertyName: "closeOnClick", publicName: "closeOnClick", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", onCheckedChange: "onCheckedChange" }, host: { attributes: { "role": "menuitemcheckbox" }, listeners: { "focus": "onFocus()", "blur": "onBlur()", "pointermove": "onPointerMove($event)", "pointerleave": "onPointerLeave($event)", "mouseup": "onMouseUp($event)", "click": "onItemClick()", "keydown.enter": "onActivate($event)", "keydown.space": "onActivate($event)" }, properties: { "attr.tabindex": "rootContext?.isOpen() && highlighted() ? 0 : -1", "attr.aria-checked": "isIndeterminate(checked()) ? \"mixed\" : checked()", "attr.data-checked": "checked() === true ? \"\" : undefined", "attr.data-unchecked": "checked() === false ? \"\" : undefined", "attr.data-indeterminate": "isIndeterminate(checked()) ? \"\" : undefined", "attr.data-disabled": "effectiveDisabled() ? \"\" : undefined", "attr.aria-disabled": "effectiveDisabled() ? true : undefined", "attr.data-highlighted": "highlighted() ? \"\" : undefined", "attr.data-label": "label() ?? undefined" } }, providers: [provideRdxMenuCheckboxItemContext(checkboxItemContextFactory)], exportAs: ["rdxMenuCheckboxItem"], hostDirectives: [{ directive: i1$1.RdxCompositeListItem }], ngImport: i0 }); }
|
|
618
682
|
}
|
|
619
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
683
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuCheckboxItem, decorators: [{
|
|
620
684
|
type: Directive,
|
|
621
685
|
args: [{
|
|
622
686
|
selector: '[rdxMenuCheckboxItem]',
|
|
@@ -627,7 +691,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
627
691
|
role: 'menuitemcheckbox',
|
|
628
692
|
'[attr.tabindex]': 'rootContext?.isOpen() && highlighted() ? 0 : -1',
|
|
629
693
|
'[attr.aria-checked]': 'isIndeterminate(checked()) ? "mixed" : checked()',
|
|
630
|
-
'[attr.data-
|
|
694
|
+
'[attr.data-checked]': 'checked() === true ? "" : undefined',
|
|
695
|
+
'[attr.data-unchecked]': 'checked() === false ? "" : undefined',
|
|
696
|
+
'[attr.data-indeterminate]': 'isIndeterminate(checked()) ? "" : undefined',
|
|
631
697
|
'[attr.data-disabled]': 'effectiveDisabled() ? "" : undefined',
|
|
632
698
|
'[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',
|
|
633
699
|
'[attr.data-highlighted]': 'highlighted() ? "" : undefined',
|
|
@@ -653,19 +719,23 @@ class RdxMenuCheckboxItemIndicator {
|
|
|
653
719
|
this.itemContext = injectRdxMenuCheckboxItemContext();
|
|
654
720
|
/** Keep the indicator in the DOM when unchecked so CSS exit animations can play. */
|
|
655
721
|
this.keepMounted = input(false, { ...(ngDevMode ? { debugName: "keepMounted" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
656
|
-
this.
|
|
657
|
-
this.
|
|
722
|
+
this.checked = this.itemContext.checked;
|
|
723
|
+
this.isIndeterminate = isIndeterminate;
|
|
724
|
+
this.isVisible = computed(() => isIndeterminate(this.itemContext.checked()) || this.itemContext.checked() === true, /* @ts-ignore */
|
|
725
|
+
...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
658
726
|
}
|
|
659
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
660
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
727
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuCheckboxItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
728
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuCheckboxItemIndicator, isStandalone: true, selector: "[rdxMenuCheckboxItemIndicator]", inputs: { keepMounted: { classPropertyName: "keepMounted", publicName: "keepMounted", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "checked() === true ? \"\" : undefined", "attr.data-unchecked": "checked() === false ? \"\" : undefined", "attr.data-indeterminate": "isIndeterminate(checked()) ? \"\" : undefined", "attr.data-starting-style": "isVisible() ? \"\" : undefined", "attr.data-ending-style": "!isVisible() ? \"\" : undefined", "style.display": "!keepMounted() && !isVisible() ? \"none\" : null" } }, exportAs: ["rdxMenuCheckboxItemIndicator"], ngImport: i0 }); }
|
|
661
729
|
}
|
|
662
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
730
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuCheckboxItemIndicator, decorators: [{
|
|
663
731
|
type: Directive,
|
|
664
732
|
args: [{
|
|
665
733
|
selector: '[rdxMenuCheckboxItemIndicator]',
|
|
666
734
|
exportAs: 'rdxMenuCheckboxItemIndicator',
|
|
667
735
|
host: {
|
|
668
|
-
'[attr.data-
|
|
736
|
+
'[attr.data-checked]': 'checked() === true ? "" : undefined',
|
|
737
|
+
'[attr.data-unchecked]': 'checked() === false ? "" : undefined',
|
|
738
|
+
'[attr.data-indeterminate]': 'isIndeterminate(checked()) ? "" : undefined',
|
|
669
739
|
'[attr.data-starting-style]': 'isVisible() ? "" : undefined',
|
|
670
740
|
'[attr.data-ending-style]': '!isVisible() ? "" : undefined',
|
|
671
741
|
'[style.display]': '!keepMounted() && !isVisible() ? "none" : null'
|
|
@@ -684,12 +754,13 @@ const groupContextFactory$1 = () => {
|
|
|
684
754
|
*/
|
|
685
755
|
class RdxMenuGroup {
|
|
686
756
|
constructor() {
|
|
687
|
-
this.labelId = signal(undefined,
|
|
757
|
+
this.labelId = signal(undefined, /* @ts-ignore */
|
|
758
|
+
...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
|
|
688
759
|
}
|
|
689
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
690
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
760
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
761
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuGroup, isStandalone: true, selector: "[rdxMenuGroup]", host: { attributes: { "role": "group" }, properties: { "attr.aria-labelledby": "labelId()" } }, providers: [provideRdxMenuGroupContext(groupContextFactory$1)], exportAs: ["rdxMenuGroup"], ngImport: i0 }); }
|
|
691
762
|
}
|
|
692
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
763
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuGroup, decorators: [{
|
|
693
764
|
type: Directive,
|
|
694
765
|
args: [{
|
|
695
766
|
selector: '[rdxMenuGroup]',
|
|
@@ -716,10 +787,10 @@ class RdxMenuGroupLabel {
|
|
|
716
787
|
}
|
|
717
788
|
});
|
|
718
789
|
}
|
|
719
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
720
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
790
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuGroupLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
791
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuGroupLabel, isStandalone: true, selector: "[rdxMenuGroupLabel]", host: { properties: { "attr.id": "id" } }, exportAs: ["rdxMenuGroupLabel"], ngImport: i0 }); }
|
|
721
792
|
}
|
|
722
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
793
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuGroupLabel, decorators: [{
|
|
723
794
|
type: Directive,
|
|
724
795
|
args: [{
|
|
725
796
|
selector: '[rdxMenuGroupLabel]',
|
|
@@ -738,17 +809,21 @@ class RdxMenuItem {
|
|
|
738
809
|
this.rootContext = injectRdxMenuRootContext(true);
|
|
739
810
|
this.listItem = inject(RdxCompositeListItem, { self: true });
|
|
740
811
|
this.elementRef = inject(ElementRef);
|
|
741
|
-
this.isFocused = signal(false,
|
|
812
|
+
this.isFocused = signal(false, /* @ts-ignore */
|
|
813
|
+
...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
|
|
742
814
|
/** Whether this item is disabled. */
|
|
743
815
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
744
816
|
/** Whether selecting this item closes the menu. */
|
|
745
817
|
this.closeOnClick = input(true, { ...(ngDevMode ? { debugName: "closeOnClick" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
746
818
|
/** Explicit typeahead label. When set, overrides textContent for character search. */
|
|
747
|
-
this.label = input(undefined,
|
|
819
|
+
this.label = input(undefined, /* @ts-ignore */
|
|
820
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
748
821
|
/** Emits when the item is selected. */
|
|
749
822
|
this.onSelect = output();
|
|
750
|
-
this.highlighted = computed(() => this.rootContext?.activeIndex() === this.listItem.index() || this.isFocused(),
|
|
751
|
-
|
|
823
|
+
this.highlighted = computed(() => this.rootContext?.activeIndex() === this.listItem.index() || this.isFocused(), /* @ts-ignore */
|
|
824
|
+
...(ngDevMode ? [{ debugName: "highlighted" }] : /* istanbul ignore next */ []));
|
|
825
|
+
this.effectiveDisabled = computed(() => this.disabled() || (this.rootContext?.disabled() ?? false), /* @ts-ignore */
|
|
826
|
+
...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
|
|
752
827
|
effect(() => {
|
|
753
828
|
this.listItem.setMetadata({
|
|
754
829
|
type: 'regular-item',
|
|
@@ -827,10 +902,10 @@ class RdxMenuItem {
|
|
|
827
902
|
this.rootContext.setActiveIndex(null);
|
|
828
903
|
}
|
|
829
904
|
}
|
|
830
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
831
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
905
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
906
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuItem, isStandalone: true, selector: "[rdxMenuItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnClick: { classPropertyName: "closeOnClick", publicName: "closeOnClick", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect" }, host: { attributes: { "role": "menuitem" }, listeners: { "focus": "onFocus()", "blur": "onBlur()", "pointermove": "onPointerMove($event)", "pointerleave": "onPointerLeave($event)", "mouseup": "onMouseUp($event)", "click": "onItemClick()", "keydown.enter": "onActivate($event)", "keydown.space": "onActivate($event)" }, properties: { "attr.tabindex": "rootContext?.isOpen() && highlighted() ? 0 : -1", "attr.data-disabled": "effectiveDisabled() ? \"\" : undefined", "attr.aria-disabled": "effectiveDisabled() ? true : undefined", "attr.data-highlighted": "highlighted() ? \"\" : undefined", "attr.data-label": "label() ?? undefined" } }, exportAs: ["rdxMenuItem"], hostDirectives: [{ directive: i1$1.RdxCompositeListItem }], ngImport: i0 }); }
|
|
832
907
|
}
|
|
833
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
908
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuItem, decorators: [{
|
|
834
909
|
type: Directive,
|
|
835
910
|
args: [{
|
|
836
911
|
selector: '[rdxMenuItem]',
|
|
@@ -863,17 +938,21 @@ class RdxMenuLinkItem {
|
|
|
863
938
|
this.rootContext = injectRdxMenuRootContext(true);
|
|
864
939
|
this.listItem = inject(RdxCompositeListItem, { self: true });
|
|
865
940
|
this.elementRef = inject(ElementRef);
|
|
866
|
-
this.isFocused = signal(false,
|
|
941
|
+
this.isFocused = signal(false, /* @ts-ignore */
|
|
942
|
+
...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
|
|
867
943
|
/** Whether this item is disabled. */
|
|
868
944
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
869
945
|
/** Whether selecting this item closes the menu. Defaults to false — links navigate by default. */
|
|
870
946
|
this.closeOnClick = input(false, { ...(ngDevMode ? { debugName: "closeOnClick" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
871
947
|
/** Explicit typeahead label. When set, overrides textContent for character search. */
|
|
872
|
-
this.label = input(undefined,
|
|
948
|
+
this.label = input(undefined, /* @ts-ignore */
|
|
949
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
873
950
|
/** Emits when the item is selected. */
|
|
874
951
|
this.onSelect = output();
|
|
875
|
-
this.highlighted = computed(() => this.rootContext?.activeIndex() === this.listItem.index() || this.isFocused(),
|
|
876
|
-
|
|
952
|
+
this.highlighted = computed(() => this.rootContext?.activeIndex() === this.listItem.index() || this.isFocused(), /* @ts-ignore */
|
|
953
|
+
...(ngDevMode ? [{ debugName: "highlighted" }] : /* istanbul ignore next */ []));
|
|
954
|
+
this.effectiveDisabled = computed(() => this.disabled() || (this.rootContext?.disabled() ?? false), /* @ts-ignore */
|
|
955
|
+
...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
|
|
877
956
|
effect(() => {
|
|
878
957
|
this.listItem.setMetadata({
|
|
879
958
|
type: 'link-item',
|
|
@@ -951,10 +1030,10 @@ class RdxMenuLinkItem {
|
|
|
951
1030
|
this.rootContext.setActiveIndex(null);
|
|
952
1031
|
}
|
|
953
1032
|
}
|
|
954
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
955
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
1033
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuLinkItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1034
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuLinkItem, isStandalone: true, selector: "a[rdxMenuLinkItem]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnClick: { classPropertyName: "closeOnClick", publicName: "closeOnClick", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect" }, host: { attributes: { "role": "menuitem" }, listeners: { "focus": "onFocus()", "blur": "onBlur()", "pointermove": "onPointerMove($event)", "pointerleave": "onPointerLeave($event)", "mouseup": "onMouseUp($event)", "click": "onItemClick($event)", "keydown.enter": "onActivate($event)", "keydown.space": "onActivate($event)" }, properties: { "attr.tabindex": "rootContext?.isOpen() && highlighted() ? 0 : -1", "attr.data-disabled": "effectiveDisabled() ? \"\" : undefined", "attr.aria-disabled": "effectiveDisabled() ? true : undefined", "attr.data-highlighted": "highlighted() ? \"\" : undefined", "attr.data-label": "label() ?? undefined" } }, exportAs: ["rdxMenuLinkItem"], hostDirectives: [{ directive: i1$1.RdxCompositeListItem }], ngImport: i0 }); }
|
|
956
1035
|
}
|
|
957
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1036
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuLinkItem, decorators: [{
|
|
958
1037
|
type: Directive,
|
|
959
1038
|
args: [{
|
|
960
1039
|
selector: 'a[rdxMenuLinkItem]',
|
|
@@ -993,8 +1072,10 @@ class RdxMenuPopup {
|
|
|
993
1072
|
this.wrapper = inject(RdxPopperContentWrapper, { optional: true });
|
|
994
1073
|
this.elementRef = inject(ElementRef);
|
|
995
1074
|
this.search = '';
|
|
996
|
-
this.align = computed(() => this.wrapper?.placedAlign(),
|
|
997
|
-
|
|
1075
|
+
this.align = computed(() => this.wrapper?.placedAlign(), /* @ts-ignore */
|
|
1076
|
+
...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
1077
|
+
this.side = computed(() => this.wrapper?.placedSide(), /* @ts-ignore */
|
|
1078
|
+
...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
998
1079
|
/**
|
|
999
1080
|
* Event handler called when the escape key is pressed. Can be prevented.
|
|
1000
1081
|
*/
|
|
@@ -1256,8 +1337,8 @@ class RdxMenuPopup {
|
|
|
1256
1337
|
this.rootContext.setActiveIndex(item.index);
|
|
1257
1338
|
item.element.focus({ preventScroll: true });
|
|
1258
1339
|
}
|
|
1259
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1260
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1340
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPopup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1341
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuPopup, isStandalone: true, selector: "[rdxMenuPopup]", outputs: { escapeKeyDown: "escapeKeyDown", pointerDownOutside: "pointerDownOutside", focusOutside: "focusOutside", interactOutside: "interactOutside", openAutoFocus: "openAutoFocus", closeAutoFocus: "closeAutoFocus" }, host: { attributes: { "role": "menu", "tabindex": "-1" }, listeners: { "keydown": "handleKeydown($event)", "rdx-menu-close-parent": "handleCloseParent($event)" }, properties: { "attr.aria-orientation": "rootContext.orientation()", "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-instant": "rootContext.instantType()", "attr.data-starting-style": "rootContext.transitionStatus() === \"starting\" ? \"\" : undefined", "attr.data-ending-style": "rootContext.transitionStatus() === \"ending\" ? \"\" : undefined", "attr.data-align": "align()", "attr.data-side": "side()" } }, providers: [
|
|
1261
1342
|
provideFloatingFocusManagerConfig(() => {
|
|
1262
1343
|
const rootContext = injectRdxMenuRootContext();
|
|
1263
1344
|
const popup = inject(ElementRef).nativeElement;
|
|
@@ -1308,7 +1389,7 @@ class RdxMenuPopup {
|
|
|
1308
1389
|
})
|
|
1309
1390
|
], exportAs: ["rdxMenuPopup"], hostDirectives: [{ directive: i1.RdxPopperContent }, { directive: i2.RdxFloatingNodeRegistration }, { directive: i3.RdxFloatingFocusManager }, { directive: i1$1.RdxCompositeList }], ngImport: i0 }); }
|
|
1310
1391
|
}
|
|
1311
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1392
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPopup, decorators: [{
|
|
1312
1393
|
type: Directive,
|
|
1313
1394
|
args: [{
|
|
1314
1395
|
selector: '[rdxMenuPopup]',
|
|
@@ -1370,7 +1451,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1370
1451
|
'[attr.aria-orientation]': 'rootContext.orientation()',
|
|
1371
1452
|
'[attr.data-closed]': 'rootContext.isOpen() ? undefined : ""',
|
|
1372
1453
|
'[attr.data-open]': 'rootContext.isOpen() ? "" : undefined',
|
|
1373
|
-
'[attr.data-
|
|
1454
|
+
'[attr.data-instant]': 'rootContext.instantType()',
|
|
1374
1455
|
'[attr.data-starting-style]': 'rootContext.transitionStatus() === "starting" ? "" : undefined',
|
|
1375
1456
|
'[attr.data-ending-style]': 'rootContext.transitionStatus() === "ending" ? "" : undefined',
|
|
1376
1457
|
'[attr.data-align]': 'align()',
|
|
@@ -1391,10 +1472,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1391
1472
|
* custom container, or a backdrop alongside the positioner (multi-root), use the explicit form.
|
|
1392
1473
|
*/
|
|
1393
1474
|
class RdxMenuPortal {
|
|
1394
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1395
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1475
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1476
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuPortal, isStandalone: true, selector: "ng-template[rdxMenuPortal]", providers: [provideRdxPresenceContext(() => ({ present: injectRdxMenuRootContext().present }))], exportAs: ["rdxMenuPortal"], hostDirectives: [{ directive: i1$2.RdxPortalPresence, inputs: ["container", "container"] }], ngImport: i0 }); }
|
|
1396
1477
|
}
|
|
1397
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1478
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPortal, decorators: [{
|
|
1398
1479
|
type: Directive,
|
|
1399
1480
|
args: [{
|
|
1400
1481
|
selector: 'ng-template[rdxMenuPortal]',
|
|
@@ -1414,10 +1495,10 @@ class RdxMenuPortalMisuseGuard {
|
|
|
1414
1495
|
'Use `*rdxMenuPortal` on the positioner element or `<ng-template rdxMenuPortal>`.', 'components/menu');
|
|
1415
1496
|
}
|
|
1416
1497
|
}
|
|
1417
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1418
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPortalMisuseGuard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1499
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuPortalMisuseGuard, isStandalone: true, selector: "[rdxMenuPortal]:not(ng-template)", ngImport: i0 }); }
|
|
1419
1500
|
}
|
|
1420
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPortalMisuseGuard, decorators: [{
|
|
1421
1502
|
type: Directive,
|
|
1422
1503
|
args: [{
|
|
1423
1504
|
selector: '[rdxMenuPortal]:not(ng-template)'
|
|
@@ -1481,13 +1562,13 @@ class RdxMenuPositioner extends RdxPopperContentWrapper {
|
|
|
1481
1562
|
// modal internal backdrop (finding #1) as a sibling before it.
|
|
1482
1563
|
afterNextRender(() => setupMenuInternalBackdrop(host, this.rootContext, injector));
|
|
1483
1564
|
}
|
|
1484
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1485
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1565
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPositioner, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1566
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuPositioner, isStandalone: true, selector: "[rdxMenuPositioner]", host: { properties: { "attr.data-open": "rootContext.isOpen() ? \"\" : undefined", "attr.data-closed": "rootContext.isOpen() ? undefined : \"\"", "style": "legacyVars" } }, providers: [
|
|
1486
1567
|
...provideRdxPopperContentWrapper(RdxMenuPositioner),
|
|
1487
1568
|
provideRdxPopperContentConfig({ arrowPadding: 5, collisionPadding: 5, updatePositionStrategy: 'always' })
|
|
1488
1569
|
], exportAs: ["rdxMenuPositioner"], usesInheritance: true, ngImport: i0 }); }
|
|
1489
1570
|
}
|
|
1490
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1571
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuPositioner, decorators: [{
|
|
1491
1572
|
type: Directive,
|
|
1492
1573
|
args: [{
|
|
1493
1574
|
selector: '[rdxMenuPositioner]',
|
|
@@ -1528,16 +1609,19 @@ class RdxMenuRadioGroup {
|
|
|
1528
1609
|
/**
|
|
1529
1610
|
* The currently selected value.
|
|
1530
1611
|
*/
|
|
1531
|
-
this.value = model(undefined,
|
|
1612
|
+
this.value = model(undefined, /* @ts-ignore */
|
|
1613
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
1532
1614
|
/** The initially selected value for uncontrolled usage. */
|
|
1533
|
-
this.defaultValue = input(undefined,
|
|
1615
|
+
this.defaultValue = input(undefined, /* @ts-ignore */
|
|
1616
|
+
...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
|
|
1534
1617
|
/** Whether all radio items in the group are disabled. */
|
|
1535
1618
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1536
1619
|
/**
|
|
1537
|
-
* Emits
|
|
1620
|
+
* Emits before the selected value changes; call `eventDetails.cancel()` to veto it.
|
|
1538
1621
|
*/
|
|
1539
1622
|
this.onValueChange = output();
|
|
1540
|
-
this.labelId = signal(undefined,
|
|
1623
|
+
this.labelId = signal(undefined, /* @ts-ignore */
|
|
1624
|
+
...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
|
|
1541
1625
|
effect(() => {
|
|
1542
1626
|
const defaultValue = this.defaultValue();
|
|
1543
1627
|
if (!this.hasAppliedDefaultValue && defaultValue !== undefined) {
|
|
@@ -1546,20 +1630,24 @@ class RdxMenuRadioGroup {
|
|
|
1546
1630
|
}
|
|
1547
1631
|
});
|
|
1548
1632
|
}
|
|
1549
|
-
selectValue(newValue) {
|
|
1633
|
+
selectValue(newValue, event) {
|
|
1550
1634
|
if (this.disabled()) {
|
|
1551
1635
|
return;
|
|
1552
1636
|
}
|
|
1637
|
+
const { eventDetails } = createCancelableChangeEventDetails('none', event ?? new Event('menu.value-change'));
|
|
1638
|
+
this.onValueChange.emit({ value: newValue, eventDetails });
|
|
1639
|
+
if (eventDetails.isCanceled()) {
|
|
1640
|
+
return;
|
|
1641
|
+
}
|
|
1553
1642
|
this.value.set(newValue);
|
|
1554
|
-
this.onValueChange.emit(newValue);
|
|
1555
1643
|
}
|
|
1556
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1557
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
1644
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1645
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuRadioGroup, isStandalone: true, selector: "[rdxMenuRadioGroup]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onValueChange: "onValueChange" }, host: { attributes: { "role": "group" }, properties: { "attr.aria-labelledby": "labelId()", "attr.data-disabled": "disabled() ? \"\" : undefined" } }, providers: [
|
|
1558
1646
|
provideRdxMenuRadioGroupContext(radioGroupContextFactory),
|
|
1559
1647
|
provideRdxMenuGroupContext(groupContextFactory)
|
|
1560
1648
|
], exportAs: ["rdxMenuRadioGroup"], ngImport: i0 }); }
|
|
1561
1649
|
}
|
|
1562
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1650
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRadioGroup, decorators: [{
|
|
1563
1651
|
type: Directive,
|
|
1564
1652
|
args: [{
|
|
1565
1653
|
selector: '[rdxMenuRadioGroup]',
|
|
@@ -1592,21 +1680,26 @@ class RdxMenuRadioItem {
|
|
|
1592
1680
|
this.radioGroupContext = injectRdxMenuRadioGroupContext();
|
|
1593
1681
|
this.listItem = inject(RdxCompositeListItem, { self: true });
|
|
1594
1682
|
this.elementRef = inject(ElementRef);
|
|
1595
|
-
this.isFocused = signal(false,
|
|
1683
|
+
this.isFocused = signal(false, /* @ts-ignore */
|
|
1684
|
+
...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
|
|
1596
1685
|
/** The value of this radio item. */
|
|
1597
|
-
this.value = input.required(
|
|
1686
|
+
this.value = input.required(/* @ts-ignore */
|
|
1687
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
1598
1688
|
/** Whether this item is disabled. */
|
|
1599
1689
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1600
1690
|
/** Whether selecting closes the menu. Defaults to false — radio items stay open. */
|
|
1601
1691
|
this.closeOnClick = input(false, { ...(ngDevMode ? { debugName: "closeOnClick" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1602
1692
|
/** Explicit typeahead label. When set, overrides textContent for character search. */
|
|
1603
|
-
this.label = input(undefined,
|
|
1693
|
+
this.label = input(undefined, /* @ts-ignore */
|
|
1694
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
1604
1695
|
/** Emits when this item is selected. */
|
|
1605
1696
|
this.onSelect = output();
|
|
1606
|
-
this.checked = computed(() => this.radioGroupContext.value() === this.value(),
|
|
1607
|
-
|
|
1608
|
-
this.
|
|
1609
|
-
|
|
1697
|
+
this.checked = computed(() => this.radioGroupContext.value() === this.value(), /* @ts-ignore */
|
|
1698
|
+
...(ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []));
|
|
1699
|
+
this.highlighted = computed(() => this.rootContext?.activeIndex() === this.listItem.index() || this.isFocused(), /* @ts-ignore */
|
|
1700
|
+
...(ngDevMode ? [{ debugName: "highlighted" }] : /* istanbul ignore next */ []));
|
|
1701
|
+
this.effectiveDisabled = computed(() => this.disabled() || this.radioGroupContext.disabled() || (this.rootContext?.disabled() ?? false), /* @ts-ignore */
|
|
1702
|
+
...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
|
|
1610
1703
|
effect(() => {
|
|
1611
1704
|
this.listItem.setMetadata({
|
|
1612
1705
|
type: 'radio-item',
|
|
@@ -1688,10 +1781,10 @@ class RdxMenuRadioItem {
|
|
|
1688
1781
|
this.rootContext.setActiveIndex(null);
|
|
1689
1782
|
}
|
|
1690
1783
|
}
|
|
1691
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1692
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
1784
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRadioItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1785
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuRadioItem, isStandalone: true, selector: "[rdxMenuRadioItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, closeOnClick: { classPropertyName: "closeOnClick", publicName: "closeOnClick", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect" }, host: { attributes: { "role": "menuitemradio" }, listeners: { "focus": "onFocus()", "blur": "onBlur()", "pointermove": "onPointerMove($event)", "pointerleave": "onPointerLeave($event)", "mouseup": "onMouseUp($event)", "click": "onItemClick()", "keydown.enter": "onActivate($event)", "keydown.space": "onActivate($event)" }, properties: { "attr.tabindex": "rootContext?.isOpen() && highlighted() ? 0 : -1", "attr.aria-checked": "checked()", "attr.data-checked": "checked() ? \"\" : undefined", "attr.data-unchecked": "checked() ? undefined : \"\"", "attr.data-disabled": "effectiveDisabled() ? \"\" : undefined", "attr.aria-disabled": "effectiveDisabled() ? true : undefined", "attr.data-highlighted": "highlighted() ? \"\" : undefined", "attr.data-label": "label() ?? undefined" } }, providers: [provideRdxMenuRadioItemContext(radioItemContextFactory)], exportAs: ["rdxMenuRadioItem"], hostDirectives: [{ directive: i1$1.RdxCompositeListItem }], ngImport: i0 }); }
|
|
1693
1786
|
}
|
|
1694
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1787
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRadioItem, decorators: [{
|
|
1695
1788
|
type: Directive,
|
|
1696
1789
|
args: [{
|
|
1697
1790
|
selector: '[rdxMenuRadioItem]',
|
|
@@ -1702,7 +1795,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1702
1795
|
role: 'menuitemradio',
|
|
1703
1796
|
'[attr.tabindex]': 'rootContext?.isOpen() && highlighted() ? 0 : -1',
|
|
1704
1797
|
'[attr.aria-checked]': 'checked()',
|
|
1705
|
-
'[attr.data-
|
|
1798
|
+
'[attr.data-checked]': 'checked() ? "" : undefined',
|
|
1799
|
+
'[attr.data-unchecked]': 'checked() ? undefined : ""',
|
|
1706
1800
|
'[attr.data-disabled]': 'effectiveDisabled() ? "" : undefined',
|
|
1707
1801
|
'[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',
|
|
1708
1802
|
'[attr.data-highlighted]': 'highlighted() ? "" : undefined',
|
|
@@ -1728,19 +1822,21 @@ class RdxMenuRadioItemIndicator {
|
|
|
1728
1822
|
this.itemContext = injectRdxMenuRadioItemContext();
|
|
1729
1823
|
/** Keep the indicator in the DOM when unselected so CSS exit animations can play. */
|
|
1730
1824
|
this.keepMounted = input(false, { ...(ngDevMode ? { debugName: "keepMounted" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1731
|
-
this.
|
|
1732
|
-
this.isVisible = computed(() => this.itemContext.checked() === true,
|
|
1825
|
+
this.checked = this.itemContext.checked;
|
|
1826
|
+
this.isVisible = computed(() => this.itemContext.checked() === true, /* @ts-ignore */
|
|
1827
|
+
...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
1733
1828
|
}
|
|
1734
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1735
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
1829
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRadioItemIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1830
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuRadioItemIndicator, isStandalone: true, selector: "[rdxMenuRadioItemIndicator]", inputs: { keepMounted: { classPropertyName: "keepMounted", publicName: "keepMounted", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-checked": "checked() ? \"\" : undefined", "attr.data-unchecked": "checked() ? undefined : \"\"", "attr.data-starting-style": "isVisible() ? \"\" : undefined", "attr.data-ending-style": "!isVisible() ? \"\" : undefined", "style.display": "!keepMounted() && !isVisible() ? \"none\" : null" } }, exportAs: ["rdxMenuRadioItemIndicator"], ngImport: i0 }); }
|
|
1736
1831
|
}
|
|
1737
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1832
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuRadioItemIndicator, decorators: [{
|
|
1738
1833
|
type: Directive,
|
|
1739
1834
|
args: [{
|
|
1740
1835
|
selector: '[rdxMenuRadioItemIndicator]',
|
|
1741
1836
|
exportAs: 'rdxMenuRadioItemIndicator',
|
|
1742
1837
|
host: {
|
|
1743
|
-
'[attr.data-
|
|
1838
|
+
'[attr.data-checked]': 'checked() ? "" : undefined',
|
|
1839
|
+
'[attr.data-unchecked]': 'checked() ? undefined : ""',
|
|
1744
1840
|
'[attr.data-starting-style]': 'isVisible() ? "" : undefined',
|
|
1745
1841
|
'[attr.data-ending-style]': '!isVisible() ? "" : undefined',
|
|
1746
1842
|
'[style.display]': '!keepMounted() && !isVisible() ? "none" : null'
|
|
@@ -1752,20 +1848,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1752
1848
|
* A visual separator between groups of menu items.
|
|
1753
1849
|
*/
|
|
1754
1850
|
class RdxMenuSeparator {
|
|
1755
|
-
|
|
1756
|
-
|
|
1851
|
+
constructor() {
|
|
1852
|
+
/** The orientation of the separator. Matches Base UI's `Separator.orientation`. */
|
|
1853
|
+
this.orientation = input('horizontal', /* @ts-ignore */
|
|
1854
|
+
...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
1855
|
+
}
|
|
1856
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1857
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuSeparator, isStandalone: true, selector: "[rdxMenuSeparator]", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "separator" }, properties: { "attr.aria-orientation": "orientation()", "attr.data-orientation": "orientation()" } }, exportAs: ["rdxMenuSeparator"], ngImport: i0 }); }
|
|
1757
1858
|
}
|
|
1758
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1859
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuSeparator, decorators: [{
|
|
1759
1860
|
type: Directive,
|
|
1760
1861
|
args: [{
|
|
1761
1862
|
selector: '[rdxMenuSeparator]',
|
|
1762
1863
|
exportAs: 'rdxMenuSeparator',
|
|
1763
1864
|
host: {
|
|
1764
1865
|
role: 'separator',
|
|
1765
|
-
'[attr.aria-orientation]': '
|
|
1866
|
+
'[attr.aria-orientation]': 'orientation()',
|
|
1867
|
+
'[attr.data-orientation]': 'orientation()'
|
|
1766
1868
|
}
|
|
1767
1869
|
}]
|
|
1768
|
-
}] });
|
|
1870
|
+
}], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }] } });
|
|
1769
1871
|
|
|
1770
1872
|
/**
|
|
1771
1873
|
* Submenu "safe polygon" — a faithful port of Floating UI's `safePolygon` algorithm
|
|
@@ -2116,7 +2218,8 @@ class RdxMenuSubTrigger {
|
|
|
2116
2218
|
this.elementRef = inject(ElementRef);
|
|
2117
2219
|
this.destroyRef = inject(DestroyRef);
|
|
2118
2220
|
this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
2119
|
-
this.isFocused = signal(false,
|
|
2221
|
+
this.isFocused = signal(false, /* @ts-ignore */
|
|
2222
|
+
...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
|
|
2120
2223
|
/** Cursor position from the last pointer move over the trigger (safe-polygon apex). */
|
|
2121
2224
|
this.lastPointer = null;
|
|
2122
2225
|
/** Whether the current open was initiated by hover (vs keyboard / click). */
|
|
@@ -2133,13 +2236,17 @@ class RdxMenuSubTrigger {
|
|
|
2133
2236
|
/** Delay before a pending hover close runs, in milliseconds. */
|
|
2134
2237
|
this.closeDelay = input(0, { ...(ngDevMode ? { debugName: "closeDelay" } : /* istanbul ignore next */ {}), transform: numberOrUndefined$1 });
|
|
2135
2238
|
/** Explicit typeahead label. When set, overrides textContent for character search. */
|
|
2136
|
-
this.label = input(undefined,
|
|
2239
|
+
this.label = input(undefined, /* @ts-ignore */
|
|
2240
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
2137
2241
|
/** Highlighted when active in the parent menu or while the submenu is open. */
|
|
2138
2242
|
this.highlighted = computed(() => this.parentMenuRoot?.activeIndex() === this.listItem.index() ||
|
|
2139
2243
|
this.isFocused() ||
|
|
2140
|
-
this.submenuContext.isOpen(),
|
|
2141
|
-
|
|
2142
|
-
this.
|
|
2244
|
+
this.submenuContext.isOpen(), /* @ts-ignore */
|
|
2245
|
+
...(ngDevMode ? [{ debugName: "highlighted" }] : /* istanbul ignore next */ []));
|
|
2246
|
+
this.effectiveDisabled = computed(() => this.disabled() || this.submenuContext.disabled(), /* @ts-ignore */
|
|
2247
|
+
...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
|
|
2248
|
+
this.nativeButtonState = computed(() => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON', /* @ts-ignore */
|
|
2249
|
+
...(ngDevMode ? [{ debugName: "nativeButtonState" }] : /* istanbul ignore next */ []));
|
|
2143
2250
|
this.submenuContext.markAsSubmenu();
|
|
2144
2251
|
effect((onCleanup) => {
|
|
2145
2252
|
const el = this.elementRef.nativeElement;
|
|
@@ -2401,10 +2508,10 @@ class RdxMenuSubTrigger {
|
|
|
2401
2508
|
this.parentMenuRoot.setActiveIndex(null);
|
|
2402
2509
|
}
|
|
2403
2510
|
}
|
|
2404
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2405
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
2511
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuSubTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2512
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuSubTrigger, isStandalone: true, selector: "[rdxMenuSubTrigger]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, nativeButton: { classPropertyName: "nativeButton", publicName: "nativeButton", isSignal: true, isRequired: false, transformFunction: null }, openOnHover: { classPropertyName: "openOnHover", publicName: "openOnHover", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "menuitem" }, listeners: { "focus": "onFocus()", "blur": "onBlur()", "click": "onClick($event)", "keydown.enter": "onEnter($event)", "keydown.space": "onEnter($event)", "keydown.arrowleft": "onArrowLeft($event)", "keydown.arrowright": "onArrowRight($event)", "pointermove": "onPointerMove($event)", "pointerleave": "onPointerLeave()", "rdx-menu-subtrigger-clear-highlight": "clearHighlight()" }, properties: { "attr.type": "nativeButtonState() ? \"button\" : undefined", "attr.tabindex": "parentMenuRoot?.open() && highlighted() ? 0 : -1", "attr.aria-haspopup": "\"menu\"", "attr.aria-expanded": "submenuContext.isOpen()", "attr.aria-disabled": "effectiveDisabled() ? true : undefined", "attr.data-popup-open": "submenuContext.isOpen() ? \"\" : undefined", "attr.data-highlighted": "highlighted() ? \"\" : undefined", "attr.data-disabled": "effectiveDisabled() ? \"\" : undefined", "attr.data-label": "label() ?? undefined" } }, exportAs: ["rdxMenuSubTrigger"], hostDirectives: [{ directive: i1.RdxPopperAnchor }, { directive: i1$1.RdxCompositeListItem }], ngImport: i0 }); }
|
|
2406
2513
|
}
|
|
2407
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2514
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuSubTrigger, decorators: [{
|
|
2408
2515
|
type: Directive,
|
|
2409
2516
|
args: [{
|
|
2410
2517
|
selector: '[rdxMenuSubTrigger]',
|
|
@@ -2417,7 +2524,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2417
2524
|
'[attr.aria-haspopup]': '"menu"',
|
|
2418
2525
|
'[attr.aria-expanded]': 'submenuContext.isOpen()',
|
|
2419
2526
|
'[attr.aria-disabled]': 'effectiveDisabled() ? true : undefined',
|
|
2420
|
-
'[attr.data-state]': 'submenuContext.isOpen() ? "open" : "closed"',
|
|
2421
2527
|
'[attr.data-popup-open]': 'submenuContext.isOpen() ? "" : undefined',
|
|
2422
2528
|
'[attr.data-highlighted]': 'highlighted() ? "" : undefined',
|
|
2423
2529
|
'[attr.data-disabled]': 'effectiveDisabled() ? "" : undefined',
|
|
@@ -2473,8 +2579,13 @@ class RdxMenuTrigger {
|
|
|
2473
2579
|
this.delay = input(100, { ...(ngDevMode ? { debugName: "delay" } : /* istanbul ignore next */ {}), transform: numberOrUndefined });
|
|
2474
2580
|
/** Delay before hover leave closes the menu, in milliseconds. */
|
|
2475
2581
|
this.closeDelay = input(undefined, { ...(ngDevMode ? { debugName: "closeDelay" } : /* istanbul ignore next */ {}), transform: numberOrUndefined });
|
|
2476
|
-
this.nativeButtonState = computed(() => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON',
|
|
2477
|
-
|
|
2582
|
+
this.nativeButtonState = computed(() => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON', /* @ts-ignore */
|
|
2583
|
+
...(ngDevMode ? [{ debugName: "nativeButtonState" }] : /* istanbul ignore next */ []));
|
|
2584
|
+
/** Whether the trigger is currently pressed (pointer down), for Base UI's `data-pressed`. */
|
|
2585
|
+
this.pressed = signal(false, /* @ts-ignore */
|
|
2586
|
+
...(ngDevMode ? [{ debugName: "pressed" }] : /* istanbul ignore next */ []));
|
|
2587
|
+
this.isDisabled = computed(() => this.rootContext.disabled() || this.disabled(), /* @ts-ignore */
|
|
2588
|
+
...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
2478
2589
|
this.triggerInteraction = createRdxTriggerInteraction({
|
|
2479
2590
|
trigger: () => this.elementRef.nativeElement,
|
|
2480
2591
|
activeTrigger: () => this.rootContext.trigger(),
|
|
@@ -2561,6 +2672,9 @@ class RdxMenuTrigger {
|
|
|
2561
2672
|
}
|
|
2562
2673
|
handlePointerDown(event) {
|
|
2563
2674
|
this.triggerInteraction.recordPointerDown(event);
|
|
2675
|
+
if (!this.isDisabled() && event.button === 0) {
|
|
2676
|
+
this.pressed.set(true);
|
|
2677
|
+
}
|
|
2564
2678
|
}
|
|
2565
2679
|
handleClick(event) {
|
|
2566
2680
|
if (this.isDisabled()) {
|
|
@@ -2667,6 +2781,7 @@ class RdxMenuTrigger {
|
|
|
2667
2781
|
}, delay);
|
|
2668
2782
|
}
|
|
2669
2783
|
handlePointerLeave(event) {
|
|
2784
|
+
this.pressed.set(false);
|
|
2670
2785
|
if (event.pointerType === 'touch' || !this.openOnHover()) {
|
|
2671
2786
|
return;
|
|
2672
2787
|
}
|
|
@@ -2739,10 +2854,10 @@ class RdxMenuTrigger {
|
|
|
2739
2854
|
setTimeout(run);
|
|
2740
2855
|
}
|
|
2741
2856
|
}
|
|
2742
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2743
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
2857
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2858
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: RdxMenuTrigger, isStandalone: true, selector: "[rdxMenuTrigger]", inputs: { nativeButton: { classPropertyName: "nativeButton", publicName: "nativeButton", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, openOnHover: { classPropertyName: "openOnHover", publicName: "openOnHover", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerdown": "handlePointerDown($event)", "pointerup": "pressed.set(false)", "pointercancel": "pressed.set(false)", "mousedown": "handleMouseDown($event)", "click": "handleClick($event)", "pointerenter": "handlePointerEnter($event)", "pointermove": "handlePointerMove($event)", "pointerleave": "handlePointerLeave($event)", "keydown.arrowdown": "handleArrowDown($event)", "keydown.arrowup": "handleArrowUp($event)", "keydown.arrowleft": "handleArrowLeft($event)", "keydown.arrowright": "handleArrowRight($event)", "keydown.home": "handleHome($event)", "keydown.end": "handleEnd($event)", "keydown.escape": "handleEscape($event)", "keydown.enter": "handleKeyboardToggle($event)", "keydown.space": "handleKeyboardToggle($event)" }, properties: { "attr.type": "nativeButtonState() ? \"button\" : undefined", "attr.role": "rootContext.hasTriggerInteractionHandler() ? \"menuitem\" : nativeButtonState() ? undefined : \"button\"", "attr.aria-haspopup": "\"menu\"", "attr.aria-expanded": "triggerInteraction.ariaExpanded()", "attr.aria-disabled": "isDisabled() ? true : undefined", "attr.disabled": "nativeButtonState() && isDisabled() ? \"\" : undefined", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.data-popup-open": "triggerInteraction.dataPopupOpen()", "attr.data-pressed": "pressed() ? \"\" : undefined", "style.pointer-events": "rootContext.isOpen() && rootContext.modal() ? \"auto\" : undefined" } }, exportAs: ["rdxMenuTrigger"], hostDirectives: [{ directive: i1.RdxPopperAnchor }], ngImport: i0 }); }
|
|
2744
2859
|
}
|
|
2745
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2860
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuTrigger, decorators: [{
|
|
2746
2861
|
type: Directive,
|
|
2747
2862
|
args: [{
|
|
2748
2863
|
selector: '[rdxMenuTrigger]',
|
|
@@ -2755,11 +2870,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2755
2870
|
'[attr.aria-expanded]': 'triggerInteraction.ariaExpanded()',
|
|
2756
2871
|
'[attr.aria-disabled]': 'isDisabled() ? true : undefined',
|
|
2757
2872
|
'[attr.disabled]': 'nativeButtonState() && isDisabled() ? "" : undefined',
|
|
2758
|
-
'[attr.data-state]': 'triggerInteraction.dataState()',
|
|
2759
2873
|
'[attr.data-disabled]': 'isDisabled() ? "" : undefined',
|
|
2760
2874
|
'[attr.data-popup-open]': 'triggerInteraction.dataPopupOpen()',
|
|
2875
|
+
'[attr.data-pressed]': 'pressed() ? "" : undefined',
|
|
2761
2876
|
'[style.pointer-events]': 'rootContext.isOpen() && rootContext.modal() ? "auto" : undefined',
|
|
2762
2877
|
'(pointerdown)': 'handlePointerDown($event)',
|
|
2878
|
+
'(pointerup)': 'pressed.set(false)',
|
|
2879
|
+
'(pointercancel)': 'pressed.set(false)',
|
|
2763
2880
|
'(mousedown)': 'handleMouseDown($event)',
|
|
2764
2881
|
'(click)': 'handleClick($event)',
|
|
2765
2882
|
'(pointerenter)': 'handlePointerEnter($event)',
|
|
@@ -2800,9 +2917,12 @@ class RdxMenuViewport {
|
|
|
2800
2917
|
constructor() {
|
|
2801
2918
|
this.elementRef = inject(ElementRef);
|
|
2802
2919
|
this.destroyRef = inject(DestroyRef);
|
|
2803
|
-
this.width = signal(undefined,
|
|
2804
|
-
|
|
2805
|
-
this.
|
|
2920
|
+
this.width = signal(undefined, /* @ts-ignore */
|
|
2921
|
+
...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
2922
|
+
this.height = signal(undefined, /* @ts-ignore */
|
|
2923
|
+
...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
2924
|
+
this.transitioning = signal(false, /* @ts-ignore */
|
|
2925
|
+
...(ngDevMode ? [{ debugName: "transitioning" }] : /* istanbul ignore next */ []));
|
|
2806
2926
|
afterNextRender(() => {
|
|
2807
2927
|
const el = this.elementRef.nativeElement;
|
|
2808
2928
|
// Seed the initial size without marking a transition.
|
|
@@ -2838,10 +2958,10 @@ class RdxMenuViewport {
|
|
|
2838
2958
|
const duration = getMaxTransitionDuration(this.elementRef.nativeElement);
|
|
2839
2959
|
this.transitionTimer = setTimeout(() => this.transitioning.set(false), duration > 0 ? duration + 50 : 0);
|
|
2840
2960
|
}
|
|
2841
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2842
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
2961
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuViewport, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2962
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: RdxMenuViewport, isStandalone: true, selector: "[rdxMenuViewport]", host: { properties: { "attr.data-transitioning": "transitioning() ? \"\" : undefined", "style.--popup-width.px": "width()", "style.--popup-height.px": "height()" } }, exportAs: ["rdxMenuViewport"], ngImport: i0 }); }
|
|
2843
2963
|
}
|
|
2844
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2964
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuViewport, decorators: [{
|
|
2845
2965
|
type: Directive,
|
|
2846
2966
|
args: [{
|
|
2847
2967
|
selector: '[rdxMenuViewport]',
|
|
@@ -2877,8 +2997,8 @@ const menuImports = [
|
|
|
2877
2997
|
RdxMenuRadioItemIndicator
|
|
2878
2998
|
];
|
|
2879
2999
|
class RdxMenuModule {
|
|
2880
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2881
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
3000
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3001
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuModule, imports: [RdxMenuRoot,
|
|
2882
3002
|
RdxMenuTrigger,
|
|
2883
3003
|
RdxMenuSubTrigger,
|
|
2884
3004
|
RdxMenuPortal,
|
|
@@ -2917,9 +3037,9 @@ class RdxMenuModule {
|
|
|
2917
3037
|
RdxMenuRadioGroup,
|
|
2918
3038
|
RdxMenuRadioItem,
|
|
2919
3039
|
RdxMenuRadioItemIndicator] }); }
|
|
2920
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
3040
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuModule }); }
|
|
2921
3041
|
}
|
|
2922
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3042
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: RdxMenuModule, decorators: [{
|
|
2923
3043
|
type: NgModule,
|
|
2924
3044
|
args: [{
|
|
2925
3045
|
imports: [...menuImports],
|
|
@@ -2931,5 +3051,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
2931
3051
|
* Generated bundle index. Do not edit.
|
|
2932
3052
|
*/
|
|
2933
3053
|
|
|
2934
|
-
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 };
|
|
3054
|
+
export { RDX_MENU_AMBIENT_MODAL, 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 };
|
|
2935
3055
|
//# sourceMappingURL=radix-ng-primitives-menu.mjs.map
|