@radix-ng/primitives 1.0.0-beta.4 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/composite/README.md +3 -0
- package/fesm2022/radix-ng-primitives-accordion.mjs +12 -36
- package/fesm2022/radix-ng-primitives-accordion.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-checkbox.mjs +33 -18
- package/fesm2022/radix-ng-primitives-checkbox.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-composite.mjs +515 -0
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-core.mjs +7 -0
- package/fesm2022/radix-ng-primitives-core.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-dialog.mjs +54 -12
- package/fesm2022/radix-ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-drawer.mjs +442 -2
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-editable.mjs +12 -7
- package/fesm2022/radix-ng-primitives-editable.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs +294 -8
- package/fesm2022/radix-ng-primitives-floating-focus-manager.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-focus-scope.mjs +9 -0
- package/fesm2022/radix-ng-primitives-focus-scope.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +71 -20
- package/fesm2022/radix-ng-primitives-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menubar.mjs +68 -36
- package/fesm2022/radix-ng-primitives-menubar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs +281 -88
- package/fesm2022/radix-ng-primitives-navigation-menu.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-number-field.mjs +7 -2
- package/fesm2022/radix-ng-primitives-number-field.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popover.mjs +117 -35
- package/fesm2022/radix-ng-primitives-popover.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-popper.mjs +73 -65
- package/fesm2022/radix-ng-primitives-popper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-radio.mjs +77 -36
- package/fesm2022/radix-ng-primitives-radio.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-roving-focus.mjs +40 -8
- package/fesm2022/radix-ng-primitives-roving-focus.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-scroll-area.mjs +56 -25
- package/fesm2022/radix-ng-primitives-scroll-area.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-select.mjs +62 -37
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-slider.mjs +259 -28
- package/fesm2022/radix-ng-primitives-slider.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-stepper.mjs +11 -7
- package/fesm2022/radix-ng-primitives-stepper.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-switch.mjs +10 -5
- package/fesm2022/radix-ng-primitives-switch.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +64 -30
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +69 -19
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +37 -13
- package/fesm2022/radix-ng-primitives-toggle.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toolbar.mjs +50 -24
- package/fesm2022/radix-ng-primitives-toolbar.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tooltip.mjs +180 -35
- package/fesm2022/radix-ng-primitives-tooltip.mjs.map +1 -1
- package/navigation-menu/README.md +5 -2
- package/package.json +5 -1
- package/types/radix-ng-primitives-accordion.d.ts +9 -13
- package/types/radix-ng-primitives-checkbox.d.ts +27 -15
- package/types/radix-ng-primitives-composite.d.ts +152 -0
- package/types/radix-ng-primitives-core.d.ts +2 -0
- package/types/radix-ng-primitives-dialog.d.ts +13 -2
- package/types/radix-ng-primitives-drawer.d.ts +40 -2
- package/types/radix-ng-primitives-editable.d.ts +11 -5
- package/types/radix-ng-primitives-floating-focus-manager.d.ts +113 -16
- package/types/radix-ng-primitives-menu.d.ts +13 -5
- package/types/radix-ng-primitives-menubar.d.ts +10 -5
- package/types/radix-ng-primitives-navigation-menu.d.ts +65 -33
- package/types/radix-ng-primitives-number-field.d.ts +8 -3
- package/types/radix-ng-primitives-popover.d.ts +26 -10
- package/types/radix-ng-primitives-popper.d.ts +1 -0
- package/types/radix-ng-primitives-radio.d.ts +22 -13
- package/types/radix-ng-primitives-roving-focus.d.ts +15 -1
- package/types/radix-ng-primitives-scroll-area.d.ts +4 -1
- package/types/radix-ng-primitives-select.d.ts +16 -20
- package/types/radix-ng-primitives-slider.d.ts +60 -9
- package/types/radix-ng-primitives-stepper.d.ts +11 -4
- package/types/radix-ng-primitives-switch.d.ts +10 -4
- package/types/radix-ng-primitives-tabs.d.ts +20 -11
- package/types/radix-ng-primitives-toggle-group.d.ts +34 -17
- package/types/radix-ng-primitives-toggle.d.ts +14 -7
- package/types/radix-ng-primitives-toolbar.d.ts +22 -14
- package/types/radix-ng-primitives-tooltip.d.ts +38 -14
|
@@ -6,7 +6,7 @@ import * as i2 from '@radix-ng/primitives/core';
|
|
|
6
6
|
import { createContext, createFloatingRootContext, useTransitionStatus, createCancelableChangeEventDetails, provideFloatingTree, provideFloatingRootContext, injectId, RDX_FLOATING_ROOT_CONTEXT, RDX_FLOATING_REGISTRATION, useAnchoredScrollLock, RdxFloatingNodeRegistration, rdxDevError, setupInternalBackdrop, getMaxTransitionDuration } from '@radix-ng/primitives/core';
|
|
7
7
|
import { injectDirection } from '@radix-ng/primitives/direction-provider';
|
|
8
8
|
import * as i3 from '@radix-ng/primitives/floating-focus-manager';
|
|
9
|
-
import { getInteractionTypeFromEvent, RdxFloatingFocusManager, provideFloatingFocusManagerConfig } from '@radix-ng/primitives/floating-focus-manager';
|
|
9
|
+
import { getInteractionTypeFromEvent, RdxFloatingFocusManager, provideFloatingFocusManagerConfig, createRdxTriggerInteraction, useTriggerFocusGuards } from '@radix-ng/primitives/floating-focus-manager';
|
|
10
10
|
import { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';
|
|
11
11
|
import { RdxDismiss } from '@radix-ng/primitives/dismissable-layer';
|
|
12
12
|
import { RdxFocusScope } from '@radix-ng/primitives/focus-scope';
|
|
@@ -14,6 +14,20 @@ import * as i1$1 from '@radix-ng/primitives/portal';
|
|
|
14
14
|
import { RdxPortalPresence } from '@radix-ng/primitives/portal';
|
|
15
15
|
import { provideRdxPresenceContext } from '@radix-ng/primitives/presence';
|
|
16
16
|
import { isPlatformBrowser } from '@angular/common';
|
|
17
|
+
import * as i2$1 from '@radix-ng/primitives/composite';
|
|
18
|
+
import { RdxCompositeItem } from '@radix-ng/primitives/composite';
|
|
19
|
+
|
|
20
|
+
/** Selector for focusable menu items within a popup. */
|
|
21
|
+
const RDX_MENU_ITEM_SELECTOR = [
|
|
22
|
+
'[rdxMenuItem]:not([data-disabled])',
|
|
23
|
+
'[rdxMenuCheckboxItem]:not([data-disabled])',
|
|
24
|
+
'[rdxMenuRadioItem]:not([data-disabled])',
|
|
25
|
+
'[rdxMenuLinkItem]:not([data-disabled])',
|
|
26
|
+
'[rdxMenuSubTrigger]:not([data-disabled])'
|
|
27
|
+
].join(',');
|
|
28
|
+
function getFocusableMenuItems(popup) {
|
|
29
|
+
return Array.from(popup.querySelectorAll(RDX_MENU_ITEM_SELECTOR)).filter((item) => item.closest('[rdxMenuPopup]') === popup);
|
|
30
|
+
}
|
|
17
31
|
|
|
18
32
|
const [injectRdxMenuRootContext, provideRdxMenuRootContext] = createContext('RdxMenuRootContext', 'components/menu');
|
|
19
33
|
function buildContext(instance) {
|
|
@@ -38,6 +52,7 @@ function buildContext(instance) {
|
|
|
38
52
|
hasTriggerInteractionHandler: instance.hasTriggerInteractionHandler.asReadonly(),
|
|
39
53
|
trigger: instance.trigger.asReadonly(),
|
|
40
54
|
popupElement: instance.popupElement.asReadonly(),
|
|
55
|
+
beforeContentFocusGuard: instance.beforeContentFocusGuard.asReadonly(),
|
|
41
56
|
transitionStatus: instance.transitionStatus,
|
|
42
57
|
close: (reason, event) => instance.close(reason, event),
|
|
43
58
|
closeEntireMenu: (reason, event) => instance.closeEntireMenu(reason, event),
|
|
@@ -46,6 +61,7 @@ function buildContext(instance) {
|
|
|
46
61
|
showWithoutAutoFocus: (reason, event) => instance.show(false, reason, event),
|
|
47
62
|
registerTrigger: (el) => instance.registerTrigger(el),
|
|
48
63
|
registerPopup: (el) => instance.registerPopup(el),
|
|
64
|
+
setBeforeContentFocusGuard: (element) => instance.setBeforeContentFocusGuard(element),
|
|
49
65
|
registerTransitionElement: (el) => instance.registerTransitionElement(el),
|
|
50
66
|
registerPopupArrowNavigationHandler: (handler) => instance.registerPopupArrowNavigationHandler(handler),
|
|
51
67
|
registerTriggerInteractionHandler: (handler) => instance.registerTriggerInteractionHandler(handler),
|
|
@@ -105,6 +121,7 @@ class RdxMenuRoot {
|
|
|
105
121
|
this.onOpenChangeComplete = output();
|
|
106
122
|
this.trigger = signal(undefined, ...(ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []));
|
|
107
123
|
this.popupElement = signal(undefined, ...(ngDevMode ? [{ debugName: "popupElement" }] : /* istanbul ignore next */ []));
|
|
124
|
+
this.beforeContentFocusGuard = signal(null, ...(ngDevMode ? [{ debugName: "beforeContentFocusGuard" }] : /* istanbul ignore next */ []));
|
|
108
125
|
this.transitionStatus = this.transition.status;
|
|
109
126
|
/** Whether the popup grabs focus when it opens. Set false for menubar hover-switching. */
|
|
110
127
|
this.autoFocus = signal('first', ...(ngDevMode ? [{ debugName: "autoFocus" }] : /* istanbul ignore next */ []));
|
|
@@ -174,7 +191,12 @@ class RdxMenuRoot {
|
|
|
174
191
|
if (this.effectiveDisabled()) {
|
|
175
192
|
return;
|
|
176
193
|
}
|
|
177
|
-
|
|
194
|
+
const nextAutoFocus = autoFocus === true ? 'first' : autoFocus;
|
|
195
|
+
this.autoFocus.set(nextAutoFocus);
|
|
196
|
+
if (this.open()) {
|
|
197
|
+
this.focusOpenPopup(nextAutoFocus);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
178
200
|
if (!this.open()) {
|
|
179
201
|
const change = this.createOpenChangeEvent(true, reason, event);
|
|
180
202
|
this.onOpenChange.emit(change.payload);
|
|
@@ -257,6 +279,9 @@ class RdxMenuRoot {
|
|
|
257
279
|
}
|
|
258
280
|
};
|
|
259
281
|
}
|
|
282
|
+
setBeforeContentFocusGuard(element) {
|
|
283
|
+
this.beforeContentFocusGuard.set(element);
|
|
284
|
+
}
|
|
260
285
|
registerTransitionElement(element) {
|
|
261
286
|
return this.transition.registerElement(element);
|
|
262
287
|
}
|
|
@@ -304,6 +329,22 @@ class RdxMenuRoot {
|
|
|
304
329
|
}
|
|
305
330
|
};
|
|
306
331
|
}
|
|
332
|
+
focusOpenPopup(autoFocus) {
|
|
333
|
+
if (autoFocus === false) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
const popup = this.popupElement();
|
|
337
|
+
if (!popup) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
if (autoFocus === 'popup') {
|
|
341
|
+
popup.focus({ preventScroll: true });
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
const items = getFocusableMenuItems(popup);
|
|
345
|
+
const item = autoFocus === 'last' ? items.at(-1) : items[0];
|
|
346
|
+
(item ?? popup).focus({ preventScroll: true });
|
|
347
|
+
}
|
|
307
348
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenuRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
308
349
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", 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: [
|
|
309
350
|
provideRdxMenuRootContext(contextFactory),
|
|
@@ -789,18 +830,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
789
830
|
}]
|
|
790
831
|
}], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], closeOnClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnClick", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], onSelect: [{ type: i0.Output, args: ["onSelect"] }] } });
|
|
791
832
|
|
|
792
|
-
/** Selector for focusable menu items within a popup. */
|
|
793
|
-
const RDX_MENU_ITEM_SELECTOR = [
|
|
794
|
-
'[rdxMenuItem]:not([data-disabled])',
|
|
795
|
-
'[rdxMenuCheckboxItem]:not([data-disabled])',
|
|
796
|
-
'[rdxMenuRadioItem]:not([data-disabled])',
|
|
797
|
-
'[rdxMenuLinkItem]:not([data-disabled])',
|
|
798
|
-
'[rdxMenuSubTrigger]:not([data-disabled])'
|
|
799
|
-
].join(',');
|
|
800
|
-
function getFocusableMenuItems(popup) {
|
|
801
|
-
return Array.from(popup.querySelectorAll(RDX_MENU_ITEM_SELECTOR)).filter((item) => item.closest('[rdxMenuPopup]') === popup);
|
|
802
|
-
}
|
|
803
|
-
|
|
804
833
|
/**
|
|
805
834
|
* A container for the menu contents.
|
|
806
835
|
*/
|
|
@@ -1072,6 +1101,9 @@ class RdxMenuPopup {
|
|
|
1072
1101
|
// disabled separately below; focus/marker policy should not disappear if a menu becomes
|
|
1073
1102
|
// disabled while open, or if `preventUnmountOnClose()` keeps it mounted after close.
|
|
1074
1103
|
enabled: () => rootContext.present(),
|
|
1104
|
+
restoreFocus: () => true,
|
|
1105
|
+
previousFocusableElement: () => rootContext.trigger() ?? null,
|
|
1106
|
+
beforeContentFocusGuardRef: () => (element) => rootContext.setBeforeContentFocusGuard(element),
|
|
1075
1107
|
// Base UI's submenu policy: a submenu mount does not steal focus from its trigger.
|
|
1076
1108
|
// Root menus still choose first / last item vs popup container from the menu's own
|
|
1077
1109
|
// open policy (`autoFocus`), but the decision now lives in the focus manager instead
|
|
@@ -1126,6 +1158,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
1126
1158
|
// disabled separately below; focus/marker policy should not disappear if a menu becomes
|
|
1127
1159
|
// disabled while open, or if `preventUnmountOnClose()` keeps it mounted after close.
|
|
1128
1160
|
enabled: () => rootContext.present(),
|
|
1161
|
+
restoreFocus: () => true,
|
|
1162
|
+
previousFocusableElement: () => rootContext.trigger() ?? null,
|
|
1163
|
+
beforeContentFocusGuardRef: () => (element) => rootContext.setBeforeContentFocusGuard(element),
|
|
1129
1164
|
// Base UI's submenu policy: a submenu mount does not steal focus from its trigger.
|
|
1130
1165
|
// Root menus still choose first / last item vs popup container from the menu's own
|
|
1131
1166
|
// open policy (`autoFocus`), but the decision now lives in the focus manager instead
|
|
@@ -2215,6 +2250,12 @@ class RdxMenuTrigger {
|
|
|
2215
2250
|
this.closeDelay = input(undefined, { ...(ngDevMode ? { debugName: "closeDelay" } : /* istanbul ignore next */ {}), transform: numberOrUndefined });
|
|
2216
2251
|
this.nativeButtonState = computed(() => this.nativeButton() || this.elementRef.nativeElement.tagName === 'BUTTON', ...(ngDevMode ? [{ debugName: "nativeButtonState" }] : /* istanbul ignore next */ []));
|
|
2217
2252
|
this.isDisabled = computed(() => this.rootContext.disabled() || this.disabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
2253
|
+
this.triggerInteraction = createRdxTriggerInteraction({
|
|
2254
|
+
trigger: () => this.elementRef.nativeElement,
|
|
2255
|
+
activeTrigger: () => this.rootContext.trigger(),
|
|
2256
|
+
open: () => this.rootContext.isOpen(),
|
|
2257
|
+
disabled: () => this.isDisabled()
|
|
2258
|
+
});
|
|
2218
2259
|
effect((onCleanup) => {
|
|
2219
2260
|
const el = this.elementRef.nativeElement;
|
|
2220
2261
|
const unregister = this.rootContext.registerTrigger(el);
|
|
@@ -2259,6 +2300,13 @@ class RdxMenuTrigger {
|
|
|
2259
2300
|
// (A press/focus on the trigger no longer needs a dismissable-layer branch to avoid
|
|
2260
2301
|
// self-dismissal: the trigger is registered in the menu's floating context, so the dismissal
|
|
2261
2302
|
// capability already treats it as "inside" — ADR 0015 trigger registry replaces the branch.)
|
|
2303
|
+
useTriggerFocusGuards({
|
|
2304
|
+
trigger: () => this.elementRef.nativeElement,
|
|
2305
|
+
close: (event) => this.rootContext.close('focus-out', event),
|
|
2306
|
+
beforeContentFocusGuard: () => this.rootContext.beforeContentFocusGuard(),
|
|
2307
|
+
enabled: () => this.triggerInteraction.isActive(),
|
|
2308
|
+
popupElement: () => this.rootContext.popupElement()
|
|
2309
|
+
});
|
|
2262
2310
|
this.destroyRef.onDestroy(() => {
|
|
2263
2311
|
this.clearOpenTimer();
|
|
2264
2312
|
this.clearCloseTimer();
|
|
@@ -2286,6 +2334,9 @@ class RdxMenuTrigger {
|
|
|
2286
2334
|
this.armMouseUpGuard(event.currentTarget);
|
|
2287
2335
|
}
|
|
2288
2336
|
}
|
|
2337
|
+
handlePointerDown(event) {
|
|
2338
|
+
this.triggerInteraction.recordPointerDown(event);
|
|
2339
|
+
}
|
|
2289
2340
|
handleClick(event) {
|
|
2290
2341
|
if (this.isDisabled()) {
|
|
2291
2342
|
return;
|
|
@@ -2464,26 +2515,26 @@ class RdxMenuTrigger {
|
|
|
2464
2515
|
}
|
|
2465
2516
|
}
|
|
2466
2517
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2467
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", 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: { "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.
|
|
2518
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", 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)", "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-state": "triggerInteraction.dataState()", "attr.data-disabled": "isDisabled() ? \"\" : undefined", "attr.data-popup-open": "triggerInteraction.dataPopupOpen()", "style.pointer-events": "rootContext.isOpen() && rootContext.modal() ? \"auto\" : undefined" } }, exportAs: ["rdxMenuTrigger"], hostDirectives: [{ directive: i1.RdxPopperAnchor }, { directive: i2$1.RdxCompositeItem }], ngImport: i0 }); }
|
|
2468
2519
|
}
|
|
2469
2520
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenuTrigger, decorators: [{
|
|
2470
2521
|
type: Directive,
|
|
2471
2522
|
args: [{
|
|
2472
2523
|
selector: '[rdxMenuTrigger]',
|
|
2473
2524
|
exportAs: 'rdxMenuTrigger',
|
|
2474
|
-
hostDirectives: [RdxPopperAnchor],
|
|
2525
|
+
hostDirectives: [RdxPopperAnchor, RdxCompositeItem],
|
|
2475
2526
|
host: {
|
|
2476
2527
|
'[attr.type]': 'nativeButtonState() ? "button" : undefined',
|
|
2477
2528
|
'[attr.role]': 'rootContext.hasTriggerInteractionHandler() ? "menuitem" : nativeButtonState() ? undefined : "button"',
|
|
2478
|
-
'[attr.tabindex]': 'rootContext.hasTriggerInteractionHandler() ? "-1" : undefined',
|
|
2479
2529
|
'[attr.aria-haspopup]': '"menu"',
|
|
2480
|
-
'[attr.aria-expanded]': '
|
|
2530
|
+
'[attr.aria-expanded]': 'triggerInteraction.ariaExpanded()',
|
|
2481
2531
|
'[attr.aria-disabled]': 'isDisabled() ? true : undefined',
|
|
2482
2532
|
'[attr.disabled]': 'nativeButtonState() && isDisabled() ? "" : undefined',
|
|
2483
|
-
'[attr.data-state]': '
|
|
2533
|
+
'[attr.data-state]': 'triggerInteraction.dataState()',
|
|
2484
2534
|
'[attr.data-disabled]': 'isDisabled() ? "" : undefined',
|
|
2485
|
-
'[attr.data-popup-open]': '
|
|
2535
|
+
'[attr.data-popup-open]': 'triggerInteraction.dataPopupOpen()',
|
|
2486
2536
|
'[style.pointer-events]': 'rootContext.isOpen() && rootContext.modal() ? "auto" : undefined',
|
|
2537
|
+
'(pointerdown)': 'handlePointerDown($event)',
|
|
2487
2538
|
'(mousedown)': 'handleMouseDown($event)',
|
|
2488
2539
|
'(click)': 'handleClick($event)',
|
|
2489
2540
|
'(pointerenter)': 'handlePointerEnter($event)',
|