@radix-ng/primitives 1.0.0-beta.5 → 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-composite.mjs +515 -0
- package/fesm2022/radix-ng-primitives-composite.mjs.map +1 -0
- package/fesm2022/radix-ng-primitives-drawer.mjs +442 -2
- package/fesm2022/radix-ng-primitives-drawer.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-menu.mjs +38 -16
- 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-popover.mjs +40 -15
- 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 +63 -27
- 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 +3 -0
- package/fesm2022/radix-ng-primitives-select.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-tabs.mjs +50 -21
- package/fesm2022/radix-ng-primitives-tabs.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle-group.mjs +66 -21
- package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +1 -1
- package/fesm2022/radix-ng-primitives-toggle.mjs +29 -11
- 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/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-composite.d.ts +152 -0
- package/types/radix-ng-primitives-drawer.d.ts +40 -2
- package/types/radix-ng-primitives-menu.d.ts +5 -3
- 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-popover.d.ts +9 -5
- package/types/radix-ng-primitives-popper.d.ts +1 -0
- package/types/radix-ng-primitives-radio.d.ts +11 -9
- 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-tabs.d.ts +8 -5
- package/types/radix-ng-primitives-toggle-group.d.ts +27 -16
- package/types/radix-ng-primitives-toggle.d.ts +5 -5
- package/types/radix-ng-primitives-toolbar.d.ts +22 -14
|
@@ -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) {
|
|
@@ -177,7 +191,12 @@ class RdxMenuRoot {
|
|
|
177
191
|
if (this.effectiveDisabled()) {
|
|
178
192
|
return;
|
|
179
193
|
}
|
|
180
|
-
|
|
194
|
+
const nextAutoFocus = autoFocus === true ? 'first' : autoFocus;
|
|
195
|
+
this.autoFocus.set(nextAutoFocus);
|
|
196
|
+
if (this.open()) {
|
|
197
|
+
this.focusOpenPopup(nextAutoFocus);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
181
200
|
if (!this.open()) {
|
|
182
201
|
const change = this.createOpenChangeEvent(true, reason, event);
|
|
183
202
|
this.onOpenChange.emit(change.payload);
|
|
@@ -310,6 +329,22 @@ class RdxMenuRoot {
|
|
|
310
329
|
}
|
|
311
330
|
};
|
|
312
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
|
+
}
|
|
313
348
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenuRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
314
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: [
|
|
315
350
|
provideRdxMenuRootContext(contextFactory),
|
|
@@ -795,18 +830,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
795
830
|
}]
|
|
796
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"] }] } });
|
|
797
832
|
|
|
798
|
-
/** Selector for focusable menu items within a popup. */
|
|
799
|
-
const RDX_MENU_ITEM_SELECTOR = [
|
|
800
|
-
'[rdxMenuItem]:not([data-disabled])',
|
|
801
|
-
'[rdxMenuCheckboxItem]:not([data-disabled])',
|
|
802
|
-
'[rdxMenuRadioItem]:not([data-disabled])',
|
|
803
|
-
'[rdxMenuLinkItem]:not([data-disabled])',
|
|
804
|
-
'[rdxMenuSubTrigger]:not([data-disabled])'
|
|
805
|
-
].join(',');
|
|
806
|
-
function getFocusableMenuItems(popup) {
|
|
807
|
-
return Array.from(popup.querySelectorAll(RDX_MENU_ITEM_SELECTOR)).filter((item) => item.closest('[rdxMenuPopup]') === popup);
|
|
808
|
-
}
|
|
809
|
-
|
|
810
833
|
/**
|
|
811
834
|
* A container for the menu contents.
|
|
812
835
|
*/
|
|
@@ -2492,18 +2515,17 @@ class RdxMenuTrigger {
|
|
|
2492
2515
|
}
|
|
2493
2516
|
}
|
|
2494
2517
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenuTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2495
|
-
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.
|
|
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 }); }
|
|
2496
2519
|
}
|
|
2497
2520
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RdxMenuTrigger, decorators: [{
|
|
2498
2521
|
type: Directive,
|
|
2499
2522
|
args: [{
|
|
2500
2523
|
selector: '[rdxMenuTrigger]',
|
|
2501
2524
|
exportAs: 'rdxMenuTrigger',
|
|
2502
|
-
hostDirectives: [RdxPopperAnchor],
|
|
2525
|
+
hostDirectives: [RdxPopperAnchor, RdxCompositeItem],
|
|
2503
2526
|
host: {
|
|
2504
2527
|
'[attr.type]': 'nativeButtonState() ? "button" : undefined',
|
|
2505
2528
|
'[attr.role]': 'rootContext.hasTriggerInteractionHandler() ? "menuitem" : nativeButtonState() ? undefined : "button"',
|
|
2506
|
-
'[attr.tabindex]': 'rootContext.hasTriggerInteractionHandler() ? "-1" : undefined',
|
|
2507
2529
|
'[attr.aria-haspopup]': '"menu"',
|
|
2508
2530
|
'[attr.aria-expanded]': 'triggerInteraction.ariaExpanded()',
|
|
2509
2531
|
'[attr.aria-disabled]': 'isDisabled() ? true : undefined',
|