@cdx-ui/primitives 0.0.1-beta.159 → 0.0.1-beta.160
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/lib/commonjs/dialog/DialogContent.js +17 -3
- package/lib/commonjs/dialog/DialogContent.js.map +1 -1
- package/lib/commonjs/dialog/DialogPopup.js +5 -1
- package/lib/commonjs/dialog/DialogPopup.js.map +1 -1
- package/lib/commonjs/index.js +54 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/menu/MenuCheckboxItem.js +42 -0
- package/lib/commonjs/menu/MenuCheckboxItem.js.map +1 -0
- package/lib/commonjs/menu/MenuItem.js +142 -0
- package/lib/commonjs/menu/MenuItem.js.map +1 -0
- package/lib/commonjs/menu/MenuOverlayRoot.js +80 -0
- package/lib/commonjs/menu/MenuOverlayRoot.js.map +1 -0
- package/lib/commonjs/menu/MenuPopup.js +78 -0
- package/lib/commonjs/menu/MenuPopup.js.map +1 -0
- package/lib/commonjs/menu/MenuRadioGroup.js +48 -0
- package/lib/commonjs/menu/MenuRadioGroup.js.map +1 -0
- package/lib/commonjs/menu/MenuRadioItem.js +32 -0
- package/lib/commonjs/menu/MenuRadioItem.js.map +1 -0
- package/lib/commonjs/menu/MenuRoot.js +139 -0
- package/lib/commonjs/menu/MenuRoot.js.map +1 -0
- package/lib/commonjs/menu/MenuTrigger.js +59 -0
- package/lib/commonjs/menu/MenuTrigger.js.map +1 -0
- package/lib/commonjs/menu/context.js +36 -0
- package/lib/commonjs/menu/context.js.map +1 -0
- package/lib/commonjs/menu/index.js +118 -0
- package/lib/commonjs/menu/index.js.map +1 -0
- package/lib/commonjs/menu/overlayContext.js +30 -0
- package/lib/commonjs/menu/overlayContext.js.map +1 -0
- package/lib/commonjs/menu/types.js +6 -0
- package/lib/commonjs/menu/types.js.map +1 -0
- package/lib/commonjs/menu/useMenuNavigation.js +87 -0
- package/lib/commonjs/menu/useMenuNavigation.js.map +1 -0
- package/lib/commonjs/menu/useMenuOverlayLifecycle.js +68 -0
- package/lib/commonjs/menu/useMenuOverlayLifecycle.js.map +1 -0
- package/lib/commonjs/menu/useMenuTrigger.js +115 -0
- package/lib/commonjs/menu/useMenuTrigger.js.map +1 -0
- package/lib/commonjs/overlay/OverlayContainer.js +2 -3
- package/lib/commonjs/overlay/OverlayContainer.js.map +1 -1
- package/lib/commonjs/overlay/OverlayStack.js +125 -0
- package/lib/commonjs/overlay/OverlayStack.js.map +1 -0
- package/lib/commonjs/overlay/constants.js +7 -1
- package/lib/commonjs/overlay/constants.js.map +1 -1
- package/lib/commonjs/overlay/getAnchoredOverlayPosition.js +188 -0
- package/lib/commonjs/overlay/getAnchoredOverlayPosition.js.map +1 -0
- package/lib/commonjs/overlay/index.js +39 -0
- package/lib/commonjs/overlay/index.js.map +1 -1
- package/lib/commonjs/overlay/useAnchoredOverlay.js +127 -0
- package/lib/commonjs/overlay/useAnchoredOverlay.js.map +1 -0
- package/lib/commonjs/overlay/useDismissOverlay.js +8 -1
- package/lib/commonjs/overlay/useDismissOverlay.js.map +1 -1
- package/lib/commonjs/overlay/useDismissOverlay.web.js +11 -3
- package/lib/commonjs/overlay/useDismissOverlay.web.js.map +1 -1
- package/lib/commonjs/overlay/useEscapeKey.js +8 -1
- package/lib/commonjs/overlay/useEscapeKey.js.map +1 -1
- package/lib/commonjs/overlay/useEscapeKey.web.js +11 -3
- package/lib/commonjs/overlay/useEscapeKey.web.js.map +1 -1
- package/lib/commonjs/overlay/useOverlayPosition.js +16 -7
- package/lib/commonjs/overlay/useOverlayPosition.js.map +1 -1
- package/lib/commonjs/portal/portal.js +86 -63
- package/lib/commonjs/portal/portal.js.map +1 -1
- package/lib/commonjs/select/SelectContent.js +23 -11
- package/lib/commonjs/select/SelectContent.js.map +1 -1
- package/lib/commonjs/select/useListboxNavigation.js +10 -11
- package/lib/commonjs/select/useListboxNavigation.js.map +1 -1
- package/lib/commonjs/tooltip/TooltipContent.js +25 -24
- package/lib/commonjs/tooltip/TooltipContent.js.map +1 -1
- package/lib/commonjs/tooltip/getTooltipPosition.js +37 -84
- package/lib/commonjs/tooltip/getTooltipPosition.js.map +1 -1
- package/lib/module/dialog/DialogContent.js +18 -4
- package/lib/module/dialog/DialogContent.js.map +1 -1
- package/lib/module/dialog/DialogPopup.js +5 -1
- package/lib/module/dialog/DialogPopup.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/menu/MenuCheckboxItem.js +38 -0
- package/lib/module/menu/MenuCheckboxItem.js.map +1 -0
- package/lib/module/menu/MenuItem.js +138 -0
- package/lib/module/menu/MenuItem.js.map +1 -0
- package/lib/module/menu/MenuOverlayRoot.js +76 -0
- package/lib/module/menu/MenuOverlayRoot.js.map +1 -0
- package/lib/module/menu/MenuPopup.js +74 -0
- package/lib/module/menu/MenuPopup.js.map +1 -0
- package/lib/module/menu/MenuRadioGroup.js +44 -0
- package/lib/module/menu/MenuRadioGroup.js.map +1 -0
- package/lib/module/menu/MenuRadioItem.js +28 -0
- package/lib/module/menu/MenuRadioItem.js.map +1 -0
- package/lib/module/menu/MenuRoot.js +135 -0
- package/lib/module/menu/MenuRoot.js.map +1 -0
- package/lib/module/menu/MenuTrigger.js +55 -0
- package/lib/module/menu/MenuTrigger.js.map +1 -0
- package/lib/module/menu/context.js +27 -0
- package/lib/module/menu/context.js.map +1 -0
- package/lib/module/menu/index.js +13 -0
- package/lib/module/menu/index.js.map +1 -0
- package/lib/module/menu/overlayContext.js +24 -0
- package/lib/module/menu/overlayContext.js.map +1 -0
- package/lib/module/menu/types.js +4 -0
- package/lib/module/menu/types.js.map +1 -0
- package/lib/module/menu/useMenuNavigation.js +84 -0
- package/lib/module/menu/useMenuNavigation.js.map +1 -0
- package/lib/module/menu/useMenuOverlayLifecycle.js +63 -0
- package/lib/module/menu/useMenuOverlayLifecycle.js.map +1 -0
- package/lib/module/menu/useMenuTrigger.js +111 -0
- package/lib/module/menu/useMenuTrigger.js.map +1 -0
- package/lib/module/overlay/OverlayContainer.js +2 -3
- package/lib/module/overlay/OverlayContainer.js.map +1 -1
- package/lib/module/overlay/OverlayStack.js +119 -0
- package/lib/module/overlay/OverlayStack.js.map +1 -0
- package/lib/module/overlay/constants.js +6 -0
- package/lib/module/overlay/constants.js.map +1 -1
- package/lib/module/overlay/getAnchoredOverlayPosition.js +183 -0
- package/lib/module/overlay/getAnchoredOverlayPosition.js.map +1 -0
- package/lib/module/overlay/index.js +4 -1
- package/lib/module/overlay/index.js.map +1 -1
- package/lib/module/overlay/useAnchoredOverlay.js +123 -0
- package/lib/module/overlay/useAnchoredOverlay.js.map +1 -0
- package/lib/module/overlay/useDismissOverlay.js +9 -1
- package/lib/module/overlay/useDismissOverlay.js.map +1 -1
- package/lib/module/overlay/useDismissOverlay.web.js +11 -3
- package/lib/module/overlay/useDismissOverlay.web.js.map +1 -1
- package/lib/module/overlay/useEscapeKey.js +9 -1
- package/lib/module/overlay/useEscapeKey.js.map +1 -1
- package/lib/module/overlay/useEscapeKey.web.js +11 -3
- package/lib/module/overlay/useEscapeKey.web.js.map +1 -1
- package/lib/module/overlay/useOverlayPosition.js +16 -7
- package/lib/module/overlay/useOverlayPosition.js.map +1 -1
- package/lib/module/portal/portal.js +86 -64
- package/lib/module/portal/portal.js.map +1 -1
- package/lib/module/select/SelectContent.js +25 -13
- package/lib/module/select/SelectContent.js.map +1 -1
- package/lib/module/select/useListboxNavigation.js +10 -11
- package/lib/module/select/useListboxNavigation.js.map +1 -1
- package/lib/module/tooltip/TooltipContent.js +30 -29
- package/lib/module/tooltip/TooltipContent.js.map +1 -1
- package/lib/module/tooltip/getTooltipPosition.js +37 -84
- package/lib/module/tooltip/getTooltipPosition.js.map +1 -1
- package/lib/typescript/dialog/DialogContent.d.ts.map +1 -1
- package/lib/typescript/dialog/DialogPopup.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/menu/MenuCheckboxItem.d.ts +6 -0
- package/lib/typescript/menu/MenuCheckboxItem.d.ts.map +1 -0
- package/lib/typescript/menu/MenuItem.d.ts +8 -0
- package/lib/typescript/menu/MenuItem.d.ts.map +1 -0
- package/lib/typescript/menu/MenuOverlayRoot.d.ts +8 -0
- package/lib/typescript/menu/MenuOverlayRoot.d.ts.map +1 -0
- package/lib/typescript/menu/MenuPopup.d.ts +8 -0
- package/lib/typescript/menu/MenuPopup.d.ts.map +1 -0
- package/lib/typescript/menu/MenuRadioGroup.d.ts +8 -0
- package/lib/typescript/menu/MenuRadioGroup.d.ts.map +1 -0
- package/lib/typescript/menu/MenuRadioItem.d.ts +6 -0
- package/lib/typescript/menu/MenuRadioItem.d.ts.map +1 -0
- package/lib/typescript/menu/MenuRoot.d.ts +8 -0
- package/lib/typescript/menu/MenuRoot.d.ts.map +1 -0
- package/lib/typescript/menu/MenuTrigger.d.ts +7 -0
- package/lib/typescript/menu/MenuTrigger.d.ts.map +1 -0
- package/lib/typescript/menu/context.d.ts +15 -0
- package/lib/typescript/menu/context.d.ts.map +1 -0
- package/lib/typescript/menu/index.d.ts +12 -0
- package/lib/typescript/menu/index.d.ts.map +1 -0
- package/lib/typescript/menu/overlayContext.d.ts +35 -0
- package/lib/typescript/menu/overlayContext.d.ts.map +1 -0
- package/lib/typescript/menu/types.d.ts +104 -0
- package/lib/typescript/menu/types.d.ts.map +1 -0
- package/lib/typescript/menu/useMenuNavigation.d.ts +16 -0
- package/lib/typescript/menu/useMenuNavigation.d.ts.map +1 -0
- package/lib/typescript/menu/useMenuOverlayLifecycle.d.ts +15 -0
- package/lib/typescript/menu/useMenuOverlayLifecycle.d.ts.map +1 -0
- package/lib/typescript/menu/useMenuTrigger.d.ts +35 -0
- package/lib/typescript/menu/useMenuTrigger.d.ts.map +1 -0
- package/lib/typescript/overlay/OverlayContainer.d.ts.map +1 -1
- package/lib/typescript/overlay/OverlayStack.d.ts +46 -0
- package/lib/typescript/overlay/OverlayStack.d.ts.map +1 -0
- package/lib/typescript/overlay/constants.d.ts +5 -0
- package/lib/typescript/overlay/constants.d.ts.map +1 -1
- package/lib/typescript/overlay/getAnchoredOverlayPosition.d.ts +45 -0
- package/lib/typescript/overlay/getAnchoredOverlayPosition.d.ts.map +1 -0
- package/lib/typescript/overlay/index.d.ts +5 -2
- package/lib/typescript/overlay/index.d.ts.map +1 -1
- package/lib/typescript/overlay/useAnchoredOverlay.d.ts +15 -0
- package/lib/typescript/overlay/useAnchoredOverlay.d.ts.map +1 -0
- package/lib/typescript/overlay/useDismissOverlay.d.ts +2 -1
- package/lib/typescript/overlay/useDismissOverlay.d.ts.map +1 -1
- package/lib/typescript/overlay/useDismissOverlay.web.d.ts +2 -1
- package/lib/typescript/overlay/useDismissOverlay.web.d.ts.map +1 -1
- package/lib/typescript/overlay/useEscapeKey.d.ts +2 -1
- package/lib/typescript/overlay/useEscapeKey.d.ts.map +1 -1
- package/lib/typescript/overlay/useEscapeKey.web.d.ts +2 -1
- package/lib/typescript/overlay/useEscapeKey.web.d.ts.map +1 -1
- package/lib/typescript/overlay/useOverlayPosition.d.ts +5 -1
- package/lib/typescript/overlay/useOverlayPosition.d.ts.map +1 -1
- package/lib/typescript/portal/portal.d.ts +3 -0
- package/lib/typescript/portal/portal.d.ts.map +1 -1
- package/lib/typescript/select/SelectContent.d.ts.map +1 -1
- package/lib/typescript/select/useListboxNavigation.d.ts.map +1 -1
- package/lib/typescript/tooltip/TooltipContent.d.ts.map +1 -1
- package/lib/typescript/tooltip/getTooltipPosition.d.ts +6 -8
- package/lib/typescript/tooltip/getTooltipPosition.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/dialog/DialogContent.tsx +16 -4
- package/src/dialog/DialogPopup.tsx +5 -1
- package/src/index.ts +23 -0
- package/src/menu/MenuCheckboxItem.tsx +51 -0
- package/src/menu/MenuItem.tsx +197 -0
- package/src/menu/MenuOverlayRoot.tsx +100 -0
- package/src/menu/MenuPopup.tsx +81 -0
- package/src/menu/MenuRadioGroup.tsx +48 -0
- package/src/menu/MenuRadioItem.tsx +32 -0
- package/src/menu/MenuRoot.tsx +190 -0
- package/src/menu/MenuTrigger.tsx +57 -0
- package/src/menu/context.tsx +38 -0
- package/src/menu/index.ts +36 -0
- package/src/menu/overlayContext.tsx +61 -0
- package/src/menu/types.ts +119 -0
- package/src/menu/useMenuNavigation.ts +102 -0
- package/src/menu/useMenuOverlayLifecycle.ts +77 -0
- package/src/menu/useMenuTrigger.ts +161 -0
- package/src/overlay/OverlayContainer.tsx +3 -1
- package/src/overlay/OverlayStack.tsx +202 -0
- package/src/overlay/constants.ts +6 -0
- package/src/overlay/getAnchoredOverlayPosition.ts +326 -0
- package/src/overlay/index.ts +29 -1
- package/src/overlay/useAnchoredOverlay.ts +153 -0
- package/src/overlay/useDismissOverlay.ts +10 -2
- package/src/overlay/useDismissOverlay.web.ts +9 -2
- package/src/overlay/useEscapeKey.ts +13 -1
- package/src/overlay/useEscapeKey.web.ts +13 -3
- package/src/overlay/useOverlayPosition.ts +35 -8
- package/src/portal/portal.tsx +109 -69
- package/src/select/SelectContent.tsx +29 -17
- package/src/select/useListboxNavigation.ts +12 -9
- package/src/tooltip/TooltipContent.tsx +32 -34
- package/src/tooltip/getTooltipPosition.ts +58 -125
|
@@ -6,75 +6,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.TOOLTIP_Z_INDEX = exports.TOOLTIP_PLACEMENTS = void 0;
|
|
7
7
|
exports.getTooltipAnchorStyle = getTooltipAnchorStyle;
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
|
-
|
|
9
|
+
var _getAnchoredOverlayPosition = require("../overlay/getAnchoredOverlayPosition");
|
|
10
|
+
const TOOLTIP_PLACEMENTS = exports.TOOLTIP_PLACEMENTS = _getAnchoredOverlayPosition.OVERLAY_PLACEMENTS;
|
|
10
11
|
const TOOLTIP_Z_INDEX = exports.TOOLTIP_Z_INDEX = 9999;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
const segments = placement.split('-');
|
|
17
|
-
const side = segments[0];
|
|
18
|
-
if (segments.length === 1) {
|
|
19
|
-
return {
|
|
20
|
-
side,
|
|
21
|
-
align: 'center'
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
side,
|
|
26
|
-
align: segments[1]
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
function resolveAutoPlacement(anchor, viewport, alignPreference) {
|
|
30
|
-
const spaceTop = anchor.y - SCREEN_PADDING;
|
|
31
|
-
const spaceBottom = viewport.height - anchor.y - anchor.height - SCREEN_PADDING;
|
|
32
|
-
const spaceLeft = anchor.x - SCREEN_PADDING;
|
|
33
|
-
const spaceRight = viewport.width - anchor.x - anchor.width - SCREEN_PADDING;
|
|
34
|
-
const spaces = [{
|
|
35
|
-
side: 'top',
|
|
36
|
-
value: spaceTop
|
|
37
|
-
}, {
|
|
38
|
-
side: 'bottom',
|
|
39
|
-
value: spaceBottom
|
|
40
|
-
}, {
|
|
41
|
-
side: 'left',
|
|
42
|
-
value: spaceLeft
|
|
43
|
-
}, {
|
|
44
|
-
side: 'right',
|
|
45
|
-
value: spaceRight
|
|
46
|
-
}];
|
|
47
|
-
const best = spaces.reduce((current, next) => next.value > current.value ? next : current);
|
|
48
|
-
return {
|
|
49
|
-
side: best.side,
|
|
50
|
-
align: alignPreference
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function getAlignOffset(anchor, align, axis) {
|
|
54
|
-
if (align === 'start') {
|
|
55
|
-
return axis === 'horizontal' ? anchor.x : anchor.y;
|
|
56
|
-
}
|
|
57
|
-
if (align === 'end') {
|
|
58
|
-
return axis === 'horizontal' ? anchor.x + anchor.width : anchor.y + anchor.height;
|
|
59
|
-
}
|
|
60
|
-
return axis === 'horizontal' ? anchor.x + anchor.width / 2 : anchor.y + anchor.height / 2;
|
|
61
|
-
}
|
|
62
|
-
function getTooltipAnchorStyle(anchor, placement, offset, viewport) {
|
|
63
|
-
const parsed = parsePlacement(placement);
|
|
64
|
-
const resolved = parsed === 'auto' ? resolveAutoPlacement(anchor, viewport, placement === 'auto-start' ? 'start' : placement === 'auto-end' ? 'end' : 'center') : parsed;
|
|
65
|
-
const position = _reactNative.Platform.OS === 'web' ? 'fixed' : 'absolute';
|
|
66
|
-
const style = {
|
|
67
|
-
position,
|
|
68
|
-
zIndex: TOOLTIP_Z_INDEX
|
|
69
|
-
};
|
|
70
|
-
const {
|
|
71
|
-
side,
|
|
72
|
-
align
|
|
73
|
-
} = resolved;
|
|
12
|
+
function getCompatibilityTransform({
|
|
13
|
+
side,
|
|
14
|
+
align
|
|
15
|
+
}) {
|
|
74
16
|
if (side === 'top') {
|
|
75
|
-
|
|
76
|
-
style.left = getAlignOffset(anchor, align, 'horizontal');
|
|
77
|
-
style.transform = align === 'center' ? [{
|
|
17
|
+
return align === 'center' ? [{
|
|
78
18
|
translateX: '-50%'
|
|
79
19
|
}, {
|
|
80
20
|
translateY: '-100%'
|
|
@@ -85,18 +25,16 @@ function getTooltipAnchorStyle(anchor, placement, offset, viewport) {
|
|
|
85
25
|
}] : [{
|
|
86
26
|
translateY: '-100%'
|
|
87
27
|
}];
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
style.transform = align === 'center' ? [{
|
|
28
|
+
}
|
|
29
|
+
if (side === 'bottom') {
|
|
30
|
+
return align === 'center' ? [{
|
|
92
31
|
translateX: '-50%'
|
|
93
32
|
}] : align === 'end' ? [{
|
|
94
33
|
translateX: '-100%'
|
|
95
34
|
}] : undefined;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
style.transform = align === 'center' ? [{
|
|
35
|
+
}
|
|
36
|
+
if (side === 'left') {
|
|
37
|
+
return align === 'center' ? [{
|
|
100
38
|
translateX: '-100%'
|
|
101
39
|
}, {
|
|
102
40
|
translateY: '-50%'
|
|
@@ -107,17 +45,32 @@ function getTooltipAnchorStyle(anchor, placement, offset, viewport) {
|
|
|
107
45
|
}] : [{
|
|
108
46
|
translateX: '-100%'
|
|
109
47
|
}];
|
|
110
|
-
} else {
|
|
111
|
-
style.left = anchor.x + anchor.width + offset;
|
|
112
|
-
style.top = getAlignOffset(anchor, align, 'vertical');
|
|
113
|
-
style.transform = align === 'center' ? [{
|
|
114
|
-
translateY: '-50%'
|
|
115
|
-
}] : align === 'end' ? [{
|
|
116
|
-
translateY: '-100%'
|
|
117
|
-
}] : undefined;
|
|
118
48
|
}
|
|
49
|
+
return align === 'center' ? [{
|
|
50
|
+
translateY: '-50%'
|
|
51
|
+
}] : align === 'end' ? [{
|
|
52
|
+
translateY: '-100%'
|
|
53
|
+
}] : undefined;
|
|
54
|
+
}
|
|
55
|
+
function getTooltipAnchorStyle(anchor, placement, offset, viewport) {
|
|
56
|
+
const result = (0, _getAnchoredOverlayPosition.getAnchoredOverlayPosition)(anchor, {
|
|
57
|
+
width: 0,
|
|
58
|
+
height: 0
|
|
59
|
+
}, viewport, {
|
|
60
|
+
placement,
|
|
61
|
+
offset,
|
|
62
|
+
collisionBehavior: 'none'
|
|
63
|
+
});
|
|
64
|
+
const resolved = result.resolvedPlacement;
|
|
65
|
+
const position = _reactNative.Platform.OS === 'web' ? 'fixed' : 'absolute';
|
|
119
66
|
return {
|
|
120
|
-
style
|
|
67
|
+
style: {
|
|
68
|
+
position,
|
|
69
|
+
left: result.style.left,
|
|
70
|
+
top: result.style.top,
|
|
71
|
+
zIndex: TOOLTIP_Z_INDEX,
|
|
72
|
+
transform: getCompatibilityTransform(resolved)
|
|
73
|
+
},
|
|
121
74
|
resolved
|
|
122
75
|
};
|
|
123
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_getAnchoredOverlayPosition","TOOLTIP_PLACEMENTS","exports","OVERLAY_PLACEMENTS","TOOLTIP_Z_INDEX","getCompatibilityTransform","side","align","translateX","translateY","undefined","getTooltipAnchorStyle","anchor","placement","offset","viewport","result","getAnchoredOverlayPosition","width","height","collisionBehavior","resolved","resolvedPlacement","position","Platform","OS","style","left","top","zIndex","transform"],"sourceRoot":"../../../src","sources":["tooltip/getTooltipPosition.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,2BAAA,GAAAD,OAAA;AASO,MAAME,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,8CAAkB;AAQ7C,MAAMC,eAAe,GAAAF,OAAA,CAAAE,eAAA,GAAG,IAAI;AAEnC,SAASC,yBAAyBA,CAAC;EACjCC,IAAI;EACJC;AACwB,CAAC,EAA0B;EACnD,IAAID,IAAI,KAAK,KAAK,EAAE;IAClB,OAAOC,KAAK,KAAK,QAAQ,GACpB,CAAC;MAAEC,UAAU,EAAE;IAAO,CAAC,EAAE;MAAEC,UAAU,EAAE;IAAQ,CAAC,CAAC,GAClDF,KAAK,KAAK,KAAK,GACZ,CAAC;MAAEC,UAAU,EAAE;IAAQ,CAAC,EAAE;MAAEC,UAAU,EAAE;IAAQ,CAAC,CAAC,GAClD,CAAC;MAAEA,UAAU,EAAE;IAAQ,CAAC,CAA4B;EAC7D;EAEA,IAAIH,IAAI,KAAK,QAAQ,EAAE;IACrB,OAAOC,KAAK,KAAK,QAAQ,GACpB,CAAC;MAAEC,UAAU,EAAE;IAAO,CAAC,CAAC,GACzBD,KAAK,KAAK,KAAK,GACZ,CAAC;MAAEC,UAAU,EAAE;IAAQ,CAAC,CAAC,GAC1BE,SAAS;EACjB;EAEA,IAAIJ,IAAI,KAAK,MAAM,EAAE;IACnB,OAAOC,KAAK,KAAK,QAAQ,GACpB,CAAC;MAAEC,UAAU,EAAE;IAAQ,CAAC,EAAE;MAAEC,UAAU,EAAE;IAAO,CAAC,CAAC,GAClDF,KAAK,KAAK,KAAK,GACZ,CAAC;MAAEC,UAAU,EAAE;IAAQ,CAAC,EAAE;MAAEC,UAAU,EAAE;IAAQ,CAAC,CAAC,GAClD,CAAC;MAAED,UAAU,EAAE;IAAQ,CAAC,CAA4B;EAC7D;EAEA,OAAOD,KAAK,KAAK,QAAQ,GACpB,CAAC;IAAEE,UAAU,EAAE;EAAO,CAAC,CAAC,GACzBF,KAAK,KAAK,KAAK,GACZ,CAAC;IAAEE,UAAU,EAAE;EAAQ,CAAC,CAAC,GAC1BC,SAAS;AACjB;AAEO,SAASC,qBAAqBA,CACnCC,MAAoB,EACpBC,SAA2B,EAC3BC,MAAc,EACdC,QAA2C,EACe;EAC1D,MAAMC,MAAM,GAAG,IAAAC,sDAA0B,EAACL,MAAM,EAAE;IAAEM,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE,CAAC,EAAEJ,QAAQ,EAAE;IACnFF,SAAS;IACTC,MAAM;IACNM,iBAAiB,EAAE;EACrB,CAAC,CAAC;EACF,MAAMC,QAAQ,GAAGL,MAAM,CAACM,iBAAiB;EACzC,MAAMC,QAAQ,GAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,OAAO,GAAG,UAAoC;EACxF,OAAO;IACLC,KAAK,EAAE;MACLH,QAAQ;MACRI,IAAI,EAAEX,MAAM,CAACU,KAAK,CAACC,IAAI;MACvBC,GAAG,EAAEZ,MAAM,CAACU,KAAK,CAACE,GAAG;MACrBC,MAAM,EAAEzB,eAAe;MACvB0B,SAAS,EAAEzB,yBAAyB,CAACgB,QAAQ;IAC/C,CAAC;IACDA;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import { forwardRef, useCallback, useEffect } from 'react';
|
|
|
4
4
|
import { BackHandler, Platform, View } from 'react-native';
|
|
5
5
|
import { FocusScope } from '@react-native-aria/focus';
|
|
6
6
|
import { Slot } from '../slot';
|
|
7
|
-
import { useEscapeKey } from '../overlay';
|
|
7
|
+
import { useEscapeKey, useOverlayStackRegistration } from '../overlay';
|
|
8
8
|
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
9
9
|
import { useDialog } from './context';
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -34,18 +34,32 @@ export const DialogContent = /*#__PURE__*/forwardRef(({
|
|
|
34
34
|
const handleClose = useCallback(() => {
|
|
35
35
|
onOpenChange(false);
|
|
36
36
|
}, [onOpenChange]);
|
|
37
|
-
useEscapeKey(open && closeOnEscKey, handleClose
|
|
37
|
+
useEscapeKey(open && closeOnEscKey, handleClose, {
|
|
38
|
+
id: nativeID,
|
|
39
|
+
groupId: nativeID,
|
|
40
|
+
layer: 'modal'
|
|
41
|
+
});
|
|
42
|
+
const {
|
|
43
|
+
isTopmost
|
|
44
|
+
} = useOverlayStackRegistration({
|
|
45
|
+
active: open && Platform.OS !== 'web',
|
|
46
|
+
capabilities: ['back'],
|
|
47
|
+
id: nativeID,
|
|
48
|
+
groupId: nativeID,
|
|
49
|
+
layer: 'modal'
|
|
50
|
+
});
|
|
38
51
|
useEffect(() => {
|
|
39
52
|
// BackHandler is native-only; react-native-web warns on every subscription.
|
|
40
53
|
if (!open || Platform.OS === 'web') return;
|
|
41
54
|
const backHandler = BackHandler.addEventListener('hardwareBackPress', () => {
|
|
42
|
-
|
|
55
|
+
if (!isTopmost('back')) return false;
|
|
56
|
+
handleClose();
|
|
43
57
|
return true;
|
|
44
58
|
});
|
|
45
59
|
return () => {
|
|
46
60
|
backHandler.remove();
|
|
47
61
|
};
|
|
48
|
-
}, [
|
|
62
|
+
}, [handleClose, isTopmost, open]);
|
|
49
63
|
if (!forceMount && !open) {
|
|
50
64
|
return null;
|
|
51
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","useCallback","useEffect","BackHandler","Platform","View","FocusScope","Slot","useEscapeKey","dataAttributes","mergeDataAttributes","useDialog","jsx","_jsx","DialogContent","asChild","forceMount","children","props","ref","open","onOpenChange","closeOnEscKey","nativeID","role","handleClose","OS","backHandler","addEventListener","remove","Comp","ariaProps","contain","restoreFocus","autoFocus","undefined","state","displayName"],"sourceRoot":"../../../src","sources":["dialog/DialogContent.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,WAAW,EAAEC,SAAS,QAA2B,OAAO;AAC7E,SAASC,WAAW,EAAEC,QAAQ,EAAEC,IAAI,QAAwB,cAAc;AAC1E,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,YAAY,QAAQ,YAAY;
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","BackHandler","Platform","View","FocusScope","Slot","useEscapeKey","useOverlayStackRegistration","dataAttributes","mergeDataAttributes","useDialog","jsx","_jsx","DialogContent","asChild","forceMount","children","props","ref","open","onOpenChange","closeOnEscKey","nativeID","role","handleClose","id","groupId","layer","isTopmost","active","OS","capabilities","backHandler","addEventListener","remove","Comp","ariaProps","contain","restoreFocus","autoFocus","undefined","state","displayName"],"sourceRoot":"../../../src","sources":["dialog/DialogContent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -30,7 +30,11 @@ export const DialogPopup = /*#__PURE__*/forwardRef(({
|
|
|
30
30
|
const handleClose = useCallback(() => {
|
|
31
31
|
onOpenChange(false);
|
|
32
32
|
}, [onOpenChange]);
|
|
33
|
-
useEscapeKey(open && closeOnEscKey, handleClose
|
|
33
|
+
useEscapeKey(open && closeOnEscKey, handleClose, {
|
|
34
|
+
id: nativeID,
|
|
35
|
+
groupId: nativeID,
|
|
36
|
+
layer: 'modal'
|
|
37
|
+
});
|
|
34
38
|
if (!(open || forceMount)) {
|
|
35
39
|
return null;
|
|
36
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","useCallback","KeyboardAvoidingView","Modal","Platform","Pressable","StyleSheet","View","FocusScope","Slot","MODAL_OVERLAY_Z_INDEX","useEscapeKey","createPortalFn","dataAttributes","mergeDataAttributes","useDialog","jsx","_jsx","jsxs","_jsxs","DialogPopup","asChild","children","forceMount","avoidKeyboard","keyboardVerticalOffset","zIndex","overlayClassName","props","ref","open","onOpenChange","closeOnBackdropPress","closeOnEscKey","nativeID","role","handleClose","overlayProps","onPress","accessible","importantForAccessibility","className","slot","ariaProps","popupAttrs","state","Comp","OS","contain","restoreFocus","autoFocus","style","position","inset","display","alignItems","justifyContent","document","body","keyboardBehavior","select","ios","default","undefined","visible","transparent","statusBarTranslucent","onRequestClose","styles","fill","center","pointerEvents","behavior","displayName","create","flex"],"sourceRoot":"../../../src","sources":["dialog/DialogPopup.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,WAAW,QAA2B,OAAO;AAClE,SACEC,oBAAoB,EACpBC,KAAK,EACLC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,IAAI,QAEC,cAAc;AACrB,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,qBAAqB,EAAEC,YAAY,QAAQ,YAAY;AAChE,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,SAAS,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AActC,OAAO,MAAMC,WAAW,gBAAGpB,UAAU,CACnC,CACE;EACEqB,OAAO;EACPC,QAAQ;EACRC,UAAU,GAAG,KAAK;EAClBC,aAAa,GAAG,IAAI;EACpBC,sBAAsB,GAAG,CAAC;EAC1BC,MAAM,GAAGhB,qBAAqB;EAC9BiB,gBAAgB;EAChB,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM;IAAEC,IAAI;IAAEC,YAAY;IAAEC,oBAAoB;IAAEC,aAAa;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAGpB,SAAS,CAAC,CAAC;EAE/F,MAAMqB,WAAW,GAAGnC,WAAW,CAAC,MAAM;IACpC8B,YAAY,CAAC,KAAK,CAAC;EACrB,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElBpB,YAAY,CAACmB,IAAI,IAAIG,aAAa,EAAEG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","KeyboardAvoidingView","Modal","Platform","Pressable","StyleSheet","View","FocusScope","Slot","MODAL_OVERLAY_Z_INDEX","useEscapeKey","createPortalFn","dataAttributes","mergeDataAttributes","useDialog","jsx","_jsx","jsxs","_jsxs","DialogPopup","asChild","children","forceMount","avoidKeyboard","keyboardVerticalOffset","zIndex","overlayClassName","props","ref","open","onOpenChange","closeOnBackdropPress","closeOnEscKey","nativeID","role","handleClose","id","groupId","layer","overlayProps","onPress","accessible","importantForAccessibility","className","slot","ariaProps","popupAttrs","state","Comp","OS","contain","restoreFocus","autoFocus","style","position","inset","display","alignItems","justifyContent","document","body","keyboardBehavior","select","ios","default","undefined","visible","transparent","statusBarTranslucent","onRequestClose","styles","fill","center","pointerEvents","behavior","displayName","create","flex"],"sourceRoot":"../../../src","sources":["dialog/DialogPopup.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -23,7 +23,8 @@ export * from './date-time-list';
|
|
|
23
23
|
export * from './date-time-picker';
|
|
24
24
|
export * from './link';
|
|
25
25
|
export * from './list-item';
|
|
26
|
-
export
|
|
26
|
+
export * from './menu';
|
|
27
|
+
export { MODAL_OVERLAY_Z_INDEX, NOTIFICATION_OVERLAY_Z_INDEX, OVERLAY_PLACEMENTS, getAnchoredOverlayPosition, OverlayContainer, OverlayInsetsProvider, OverlayStackProvider, useAnchorPosition, useAnchoredOverlay, useDismissOverlay, useEscapeKey, useOverlayStackRegistration, useOverlayPosition } from './overlay';
|
|
27
28
|
export * from './select';
|
|
28
29
|
export * from './switch';
|
|
29
30
|
export * from './tabs';
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MODAL_OVERLAY_Z_INDEX","OverlayContainer","OverlayInsetsProvider","useAnchorPosition","useDismissOverlay","useEscapeKey","useOverlayPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SACEA,qBAAqB,
|
|
1
|
+
{"version":3,"names":["MODAL_OVERLAY_Z_INDEX","NOTIFICATION_OVERLAY_Z_INDEX","OVERLAY_PLACEMENTS","getAnchoredOverlayPosition","OverlayContainer","OverlayInsetsProvider","OverlayStackProvider","useAnchorPosition","useAnchoredOverlay","useDismissOverlay","useEscapeKey","useOverlayStackRegistration","useOverlayPosition","FormControlContext","useFormControlContext","dataAttributes","mergeDataAttributes","domDataAttributes","mergeDomDataAttributes","assignRef","createPortalFn","Slot"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,uBAAuB;AACrC,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,SACEA,qBAAqB,EACrBC,4BAA4B,EAC5BC,kBAAkB,EAElBC,0BAA0B,EAC1BC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAoB,EACpBC,iBAAiB,EACjBC,kBAAkB,EAClBC,iBAAiB,EACjBC,YAAY,EACZC,2BAA2B,EAC3BC,kBAAkB,QAmBb,WAAW;AAClB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,UAAU;AAExB,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,wBAAwB;AAC5E,SACEC,iBAAiB,EACjBC,sBAAsB,QAEjB,2BAA2B;AAClC,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,IAAI,QAAQ,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { composeEventHandlers, useControllableState } from '@cdx-ui/utils';
|
|
5
|
+
import { MenuItem } from './MenuItem';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export const MenuCheckboxItem = /*#__PURE__*/forwardRef(({
|
|
8
|
+
asChild,
|
|
9
|
+
children,
|
|
10
|
+
isChecked: checkedProp,
|
|
11
|
+
defaultIsChecked = false,
|
|
12
|
+
onChange,
|
|
13
|
+
onPress,
|
|
14
|
+
closeOnSelect = false,
|
|
15
|
+
...props
|
|
16
|
+
}, ref) => {
|
|
17
|
+
const [checked = false, setCheckedState] = useControllableState({
|
|
18
|
+
prop: checkedProp,
|
|
19
|
+
defaultProp: defaultIsChecked
|
|
20
|
+
});
|
|
21
|
+
const toggleChecked = () => {
|
|
22
|
+
const nextChecked = !checked;
|
|
23
|
+
setCheckedState(nextChecked);
|
|
24
|
+
onChange?.(nextChecked);
|
|
25
|
+
};
|
|
26
|
+
return /*#__PURE__*/_jsx(MenuItem, {
|
|
27
|
+
ref: ref,
|
|
28
|
+
asChild: asChild,
|
|
29
|
+
itemRole: "menuitemcheckbox",
|
|
30
|
+
isChecked: checked,
|
|
31
|
+
closeOnSelect: closeOnSelect,
|
|
32
|
+
onPress: composeEventHandlers(onPress, toggleChecked),
|
|
33
|
+
...props,
|
|
34
|
+
children: children
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
MenuCheckboxItem.displayName = 'MenuCheckboxItem';
|
|
38
|
+
//# sourceMappingURL=MenuCheckboxItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","composeEventHandlers","useControllableState","MenuItem","jsx","_jsx","MenuCheckboxItem","asChild","children","isChecked","checkedProp","defaultIsChecked","onChange","onPress","closeOnSelect","props","ref","checked","setCheckedState","prop","defaultProp","toggleChecked","nextChecked","itemRole","displayName"],"sourceRoot":"../../../src","sources":["menu/MenuCheckboxItem.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAA2B,OAAO;AAErD,SAASC,oBAAoB,EAAEC,oBAAoB,QAAQ,eAAe;AAC1E,SAASC,QAAQ,QAAQ,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOtC,OAAO,MAAMC,gBAAgB,gBAAGN,UAAU,CACxC,CACE;EACEO,OAAO;EACPC,QAAQ;EACRC,SAAS,EAAEC,WAAW;EACtBC,gBAAgB,GAAG,KAAK;EACxBC,QAAQ;EACRC,OAAO;EACPC,aAAa,GAAG,KAAK;EACrB,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM,CAACC,OAAO,GAAG,KAAK,EAAEC,eAAe,CAAC,GAAGhB,oBAAoB,CAAU;IACvEiB,IAAI,EAAET,WAAW;IACjBU,WAAW,EAAET;EACf,CAAC,CAAC;EACF,MAAMU,aAAa,GAAGA,CAAA,KAAM;IAC1B,MAAMC,WAAW,GAAG,CAACL,OAAO;IAC5BC,eAAe,CAACI,WAAW,CAAC;IAC5BV,QAAQ,GAAGU,WAAW,CAAC;EACzB,CAAC;EAED,oBACEjB,IAAA,CAACF,QAAQ;IACPa,GAAG,EAAEA,GAAI;IACTT,OAAO,EAAEA,OAAQ;IACjBgB,QAAQ,EAAC,kBAAkB;IAC3Bd,SAAS,EAAEQ,OAAQ;IACnBH,aAAa,EAAEA,aAAc;IAC7BD,OAAO,EAAEZ,oBAAoB,CAACY,OAAO,EAAEQ,aAAa,CAAE;IAAA,GAClDN,KAAK;IAAAP,QAAA,EAERA;EAAQ,CACD,CAAC;AAEf,CACF,CAAC;AAEDF,gBAAgB,CAACkB,WAAW,GAAG,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useEffect, useId, useMemo, useRef } from 'react';
|
|
4
|
+
import { Platform, Pressable } from 'react-native';
|
|
5
|
+
import { composeEventHandlers, mergeRefs } from '@cdx-ui/utils';
|
|
6
|
+
import { useFocus, useFocusRing } from '@react-native-aria/focus';
|
|
7
|
+
import { useHover, usePress } from '@react-native-aria/interactions';
|
|
8
|
+
import { Slot } from '../slot';
|
|
9
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
10
|
+
import { MenuItemProvider, useMenuContext } from './context';
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
export const MenuItem = /*#__PURE__*/forwardRef(({
|
|
13
|
+
asChild,
|
|
14
|
+
children,
|
|
15
|
+
itemRole = 'menuitem',
|
|
16
|
+
isChecked = false,
|
|
17
|
+
disabled: disabledProp = false,
|
|
18
|
+
closeOnSelect: closeOnSelectProp,
|
|
19
|
+
isHovered: isHoveredProp,
|
|
20
|
+
isActive: isActiveProp,
|
|
21
|
+
isFocused: isFocusedProp,
|
|
22
|
+
isFocusVisible: isFocusVisibleProp,
|
|
23
|
+
isDisabled: isDisabledProp,
|
|
24
|
+
onPress,
|
|
25
|
+
...props
|
|
26
|
+
}, ref) => {
|
|
27
|
+
const {
|
|
28
|
+
menuId,
|
|
29
|
+
registerItem,
|
|
30
|
+
unregisterItem,
|
|
31
|
+
focusedItemId,
|
|
32
|
+
setFocusedItemId,
|
|
33
|
+
closeOnSelect: closeOverlayOnSelect,
|
|
34
|
+
dismissOverlay
|
|
35
|
+
} = useMenuContext();
|
|
36
|
+
const reactId = useId();
|
|
37
|
+
const itemId = `menu-item-${reactId}`;
|
|
38
|
+
const domId = props.id ?? `${menuId}-item-${reactId}`;
|
|
39
|
+
const disabled = !!disabledProp || !!isDisabledProp;
|
|
40
|
+
const highlighted = focusedItemId === itemId;
|
|
41
|
+
const isSelectable = itemRole === 'menuitemcheckbox' || itemRole === 'menuitemradio';
|
|
42
|
+
const closeOnSelect = closeOnSelectProp ?? closeOverlayOnSelect;
|
|
43
|
+
const resolvedRole = Platform.OS === 'web' ? itemRole : itemRole === 'menuitemcheckbox' ? 'checkbox' : itemRole === 'menuitemradio' ? 'radio' : 'menuitem';
|
|
44
|
+
const nodeRef = useRef(null);
|
|
45
|
+
const mergedRef = mergeRefs(ref, nodeRef);
|
|
46
|
+
const onPressRef = useRef(onPress);
|
|
47
|
+
onPressRef.current = onPress;
|
|
48
|
+
const invokePress = useCallback(event => {
|
|
49
|
+
if (!disabled) {
|
|
50
|
+
onPressRef.current?.(event);
|
|
51
|
+
if (closeOnSelect) {
|
|
52
|
+
dismissOverlay?.('select');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}, [disabled, closeOnSelect, dismissOverlay]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
registerItem(itemId, {
|
|
58
|
+
disabled,
|
|
59
|
+
node: nodeRef.current
|
|
60
|
+
});
|
|
61
|
+
return () => unregisterItem(itemId);
|
|
62
|
+
}, [itemId, disabled, registerItem, unregisterItem]);
|
|
63
|
+
const {
|
|
64
|
+
isFocusVisible,
|
|
65
|
+
focusProps: focusRingProps
|
|
66
|
+
} = useFocusRing();
|
|
67
|
+
const {
|
|
68
|
+
pressProps,
|
|
69
|
+
isPressed: isActive
|
|
70
|
+
} = usePress({
|
|
71
|
+
isDisabled: disabled
|
|
72
|
+
});
|
|
73
|
+
const {
|
|
74
|
+
isFocused,
|
|
75
|
+
focusProps
|
|
76
|
+
} = useFocus();
|
|
77
|
+
const {
|
|
78
|
+
isHovered,
|
|
79
|
+
hoverProps
|
|
80
|
+
} = useHover();
|
|
81
|
+
const interactionState = useMemo(() => ({
|
|
82
|
+
hover: !!(isHoveredProp || isHovered),
|
|
83
|
+
focus: !!(isFocusedProp || isFocused),
|
|
84
|
+
active: !!(isActiveProp || isActive),
|
|
85
|
+
disabled: !!disabled,
|
|
86
|
+
focusVisible: !!(isFocusVisibleProp || isFocusVisible),
|
|
87
|
+
highlighted,
|
|
88
|
+
checked: isChecked
|
|
89
|
+
}), [isHoveredProp, isHovered, isFocusedProp, isFocused, isActiveProp, isActive, disabled, isFocusVisibleProp, isFocusVisible, highlighted, isChecked]);
|
|
90
|
+
const isRovingTabStop = highlighted;
|
|
91
|
+
const webProps = Platform.OS === 'web' ? {
|
|
92
|
+
tabIndex: isRovingTabStop ? 0 : -1
|
|
93
|
+
} : {};
|
|
94
|
+
const handlePressWithFocus = useCallback(_ => {
|
|
95
|
+
if (!disabled) {
|
|
96
|
+
setFocusedItemId(itemId);
|
|
97
|
+
}
|
|
98
|
+
}, [disabled, itemId, setFocusedItemId]);
|
|
99
|
+
const Comp = asChild ? Slot : Pressable;
|
|
100
|
+
return /*#__PURE__*/_jsx(MenuItemProvider, {
|
|
101
|
+
value: interactionState,
|
|
102
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
103
|
+
ref: mergedRef,
|
|
104
|
+
role: resolvedRole,
|
|
105
|
+
id: domId,
|
|
106
|
+
"aria-checked": isSelectable ? isChecked : undefined,
|
|
107
|
+
"aria-disabled": disabled,
|
|
108
|
+
disabled: disabled,
|
|
109
|
+
accessibilityState: {
|
|
110
|
+
disabled,
|
|
111
|
+
...(isSelectable ? {
|
|
112
|
+
checked: isChecked
|
|
113
|
+
} : {})
|
|
114
|
+
},
|
|
115
|
+
...webProps,
|
|
116
|
+
...props,
|
|
117
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
118
|
+
hover: interactionState.hover,
|
|
119
|
+
focus: interactionState.focus,
|
|
120
|
+
active: interactionState.active,
|
|
121
|
+
disabled: interactionState.disabled,
|
|
122
|
+
focusVisible: interactionState.focusVisible,
|
|
123
|
+
highlighted: interactionState.highlighted,
|
|
124
|
+
state: isSelectable ? isChecked ? 'checked' : 'unchecked' : undefined
|
|
125
|
+
})),
|
|
126
|
+
onPress: composeEventHandlers(invokePress, handlePressWithFocus),
|
|
127
|
+
onPressIn: composeEventHandlers(props?.onPressIn, pressProps.onPressIn),
|
|
128
|
+
onPressOut: composeEventHandlers(props?.onPressOut, pressProps.onPressOut),
|
|
129
|
+
onHoverIn: composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn),
|
|
130
|
+
onHoverOut: composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut),
|
|
131
|
+
onFocus: composeEventHandlers(composeEventHandlers(props?.onFocus, focusProps.onFocus), focusRingProps.onFocus, () => setFocusedItemId(itemId)),
|
|
132
|
+
onBlur: composeEventHandlers(composeEventHandlers(props?.onBlur, focusProps.onBlur), focusRingProps.onBlur),
|
|
133
|
+
children: children
|
|
134
|
+
})
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
MenuItem.displayName = 'MenuItem';
|
|
138
|
+
//# sourceMappingURL=MenuItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","useId","useMemo","useRef","Platform","Pressable","composeEventHandlers","mergeRefs","useFocus","useFocusRing","useHover","usePress","Slot","dataAttributes","mergeDataAttributes","MenuItemProvider","useMenuContext","jsx","_jsx","MenuItem","asChild","children","itemRole","isChecked","disabled","disabledProp","closeOnSelect","closeOnSelectProp","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","onPress","props","ref","menuId","registerItem","unregisterItem","focusedItemId","setFocusedItemId","closeOverlayOnSelect","dismissOverlay","reactId","itemId","domId","id","highlighted","isSelectable","resolvedRole","OS","nodeRef","mergedRef","onPressRef","current","invokePress","event","node","focusProps","focusRingProps","pressProps","isPressed","hoverProps","interactionState","hover","focus","active","focusVisible","checked","isRovingTabStop","webProps","tabIndex","handlePressWithFocus","_","Comp","value","role","undefined","accessibilityState","state","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","displayName"],"sourceRoot":"../../../src","sources":["menu/MenuItem.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useId, useMemo, useRef } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { useControllableState } from '@cdx-ui/utils';
|
|
6
|
+
import { Slot } from '../slot';
|
|
7
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
8
|
+
import { MenuOverlayProvider } from './overlayContext';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
export const MenuOverlayRoot = /*#__PURE__*/forwardRef(({
|
|
11
|
+
asChild,
|
|
12
|
+
children,
|
|
13
|
+
isOpen: openProp,
|
|
14
|
+
defaultOpen = false,
|
|
15
|
+
onOpenChange,
|
|
16
|
+
disabled = false,
|
|
17
|
+
placement = 'bottom-start',
|
|
18
|
+
offset = 4,
|
|
19
|
+
crossOffset = 0,
|
|
20
|
+
...props
|
|
21
|
+
}, ref) => {
|
|
22
|
+
const [open, setOpenState] = useControllableState({
|
|
23
|
+
prop: openProp,
|
|
24
|
+
defaultProp: defaultOpen,
|
|
25
|
+
onChange: onOpenChange
|
|
26
|
+
});
|
|
27
|
+
const closeReasonRef = useRef('programmatic');
|
|
28
|
+
const setOpen = useCallback(nextOpen => {
|
|
29
|
+
if (disabled && nextOpen) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (nextOpen) {
|
|
33
|
+
closeReasonRef.current = 'programmatic';
|
|
34
|
+
}
|
|
35
|
+
setOpenState(nextOpen);
|
|
36
|
+
}, [disabled, setOpenState]);
|
|
37
|
+
const triggerRef = useRef(null);
|
|
38
|
+
const contentRef = useRef(null);
|
|
39
|
+
const focusOnOpenRef = useRef('menu');
|
|
40
|
+
const reactId = useId();
|
|
41
|
+
const triggerId = `menu-trigger-${reactId}`;
|
|
42
|
+
const menuId = `menu-content-${reactId}`;
|
|
43
|
+
const closeMenu = useCallback((reason = 'programmatic') => {
|
|
44
|
+
closeReasonRef.current = reason;
|
|
45
|
+
setOpen(false);
|
|
46
|
+
}, [setOpen]);
|
|
47
|
+
const contextValue = useMemo(() => ({
|
|
48
|
+
open: open ?? false,
|
|
49
|
+
setOpen,
|
|
50
|
+
closeMenu,
|
|
51
|
+
disabled,
|
|
52
|
+
placement,
|
|
53
|
+
offset,
|
|
54
|
+
crossOffset,
|
|
55
|
+
triggerRef,
|
|
56
|
+
triggerId,
|
|
57
|
+
menuId,
|
|
58
|
+
contentRef,
|
|
59
|
+
focusOnOpenRef,
|
|
60
|
+
closeReasonRef
|
|
61
|
+
}), [open, setOpen, closeMenu, disabled, placement, offset, crossOffset, triggerId, menuId]);
|
|
62
|
+
const Comp = asChild ? Slot : View;
|
|
63
|
+
return /*#__PURE__*/_jsx(MenuOverlayProvider, {
|
|
64
|
+
value: contextValue,
|
|
65
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
66
|
+
ref: ref,
|
|
67
|
+
...props,
|
|
68
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
69
|
+
slot: 'menu'
|
|
70
|
+
})),
|
|
71
|
+
children: children
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
MenuOverlayRoot.displayName = 'MenuOverlayRoot';
|
|
76
|
+
//# sourceMappingURL=MenuOverlayRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useId","useMemo","useRef","View","useControllableState","Slot","dataAttributes","mergeDataAttributes","MenuOverlayProvider","jsx","_jsx","MenuOverlayRoot","asChild","children","isOpen","openProp","defaultOpen","onOpenChange","disabled","placement","offset","crossOffset","props","ref","open","setOpenState","prop","defaultProp","onChange","closeReasonRef","setOpen","nextOpen","current","triggerRef","contentRef","focusOnOpenRef","reactId","triggerId","menuId","closeMenu","reason","contextValue","Comp","value","slot","displayName"],"sourceRoot":"../../../src","sources":["menu/MenuOverlayRoot.tsx"],"mappings":"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","ignoreList":[]}
|