@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
|
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "MODAL_OVERLAY_Z_INDEX", {
|
|
|
9
9
|
return _constants.MODAL_OVERLAY_Z_INDEX;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "NOTIFICATION_OVERLAY_Z_INDEX", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _constants.NOTIFICATION_OVERLAY_Z_INDEX;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "OVERLAY_PLACEMENTS", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _getAnchoredOverlayPosition.OVERLAY_PLACEMENTS;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
12
24
|
Object.defineProperty(exports, "OverlayContainer", {
|
|
13
25
|
enumerable: true,
|
|
14
26
|
get: function () {
|
|
@@ -21,12 +33,30 @@ Object.defineProperty(exports, "OverlayInsetsProvider", {
|
|
|
21
33
|
return _useOverlayPosition.OverlayInsetsProvider;
|
|
22
34
|
}
|
|
23
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "OverlayStackProvider", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _OverlayStack.OverlayStackProvider;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "getAnchoredOverlayPosition", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _getAnchoredOverlayPosition.getAnchoredOverlayPosition;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
24
48
|
Object.defineProperty(exports, "useAnchorPosition", {
|
|
25
49
|
enumerable: true,
|
|
26
50
|
get: function () {
|
|
27
51
|
return _useAnchorPosition.useAnchorPosition;
|
|
28
52
|
}
|
|
29
53
|
});
|
|
54
|
+
Object.defineProperty(exports, "useAnchoredOverlay", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _useAnchoredOverlay.useAnchoredOverlay;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
30
60
|
Object.defineProperty(exports, "useDismissOverlay", {
|
|
31
61
|
enumerable: true,
|
|
32
62
|
get: function () {
|
|
@@ -45,10 +75,19 @@ Object.defineProperty(exports, "useOverlayPosition", {
|
|
|
45
75
|
return _useOverlayPosition.useOverlayPosition;
|
|
46
76
|
}
|
|
47
77
|
});
|
|
78
|
+
Object.defineProperty(exports, "useOverlayStackRegistration", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return _OverlayStack.useOverlayStackRegistration;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
48
84
|
var _constants = require("./constants");
|
|
49
85
|
var _OverlayContainer = require("./OverlayContainer");
|
|
86
|
+
var _OverlayStack = require("./OverlayStack");
|
|
50
87
|
var _useAnchorPosition = require("./useAnchorPosition");
|
|
51
88
|
var _useDismissOverlay = require("./useDismissOverlay");
|
|
52
89
|
var _useEscapeKey = require("./useEscapeKey");
|
|
90
|
+
var _getAnchoredOverlayPosition = require("./getAnchoredOverlayPosition");
|
|
91
|
+
var _useAnchoredOverlay = require("./useAnchoredOverlay");
|
|
53
92
|
var _useOverlayPosition = require("./useOverlayPosition");
|
|
54
93
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","_OverlayContainer","_useAnchorPosition","_useDismissOverlay","_useEscapeKey","_useOverlayPosition"],"sourceRoot":"../../../src","sources":["overlay/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_constants","require","_OverlayContainer","_OverlayStack","_useAnchorPosition","_useDismissOverlay","_useEscapeKey","_getAnchoredOverlayPosition","_useAnchoredOverlay","_useOverlayPosition"],"sourceRoot":"../../../src","sources":["overlay/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AASA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,2BAAA,GAAAN,OAAA;AAaA,IAAAO,mBAAA,GAAAP,OAAA;AAKA,IAAAQ,mBAAA,GAAAR,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useAnchoredOverlay = useAnchoredOverlay;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _getAnchoredOverlayPosition = require("./getAnchoredOverlayPosition");
|
|
10
|
+
var _useAnchorPosition = require("./useAnchorPosition");
|
|
11
|
+
var _useOverlayPosition = require("./useOverlayPosition");
|
|
12
|
+
const STAGING_STYLE = {
|
|
13
|
+
left: -10000,
|
|
14
|
+
opacity: 0,
|
|
15
|
+
pointerEvents: 'none',
|
|
16
|
+
position: 'absolute',
|
|
17
|
+
top: -10000
|
|
18
|
+
};
|
|
19
|
+
function setLayoutIfChanged(setLayout, next) {
|
|
20
|
+
setLayout(previous => {
|
|
21
|
+
if (previous?.width === next.width && previous.height === next.height) {
|
|
22
|
+
return previous;
|
|
23
|
+
}
|
|
24
|
+
return next;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function useAnchoredOverlay(anchorRef, open, options = {}) {
|
|
28
|
+
const {
|
|
29
|
+
remeasureKey: externalRemeasureKey,
|
|
30
|
+
trackWhileOpen,
|
|
31
|
+
...positionOptions
|
|
32
|
+
} = options;
|
|
33
|
+
const [revision, update] = (0, _react.useReducer)(value => value + 1, 0);
|
|
34
|
+
const remeasureKey = (0, _react.useMemo)(() => ({
|
|
35
|
+
externalRemeasureKey,
|
|
36
|
+
revision
|
|
37
|
+
}), [externalRemeasureKey, revision]);
|
|
38
|
+
const anchorLayout = (0, _useAnchorPosition.useAnchorPosition)(anchorRef, open, {
|
|
39
|
+
remeasureKey,
|
|
40
|
+
trackWhileOpen
|
|
41
|
+
});
|
|
42
|
+
const floatingRef = (0, _react.useRef)(null);
|
|
43
|
+
const [floatingLayout, setFloatingLayout] = (0, _react.useState)(null);
|
|
44
|
+
const viewport = (0, _reactNative.useWindowDimensions)();
|
|
45
|
+
const insets = (0, _react.useContext)(_useOverlayPosition.OverlayInsetsContext);
|
|
46
|
+
const measureFloating = (0, _react.useCallback)(() => {
|
|
47
|
+
const floating = floatingRef.current;
|
|
48
|
+
if (!floating) return;
|
|
49
|
+
if (_reactNative.Platform.OS === 'web' && typeof floating.getBoundingClientRect === 'function') {
|
|
50
|
+
const rect = floating.getBoundingClientRect();
|
|
51
|
+
setLayoutIfChanged(setFloatingLayout, {
|
|
52
|
+
width: rect.width,
|
|
53
|
+
height: rect.height
|
|
54
|
+
});
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (typeof floating.measure === 'function') {
|
|
58
|
+
floating.measure((_x, _y, width, height) => {
|
|
59
|
+
setLayoutIfChanged(setFloatingLayout, {
|
|
60
|
+
width,
|
|
61
|
+
height
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}, []);
|
|
66
|
+
const onFloatingLayout = (0, _react.useCallback)(event => {
|
|
67
|
+
const {
|
|
68
|
+
width,
|
|
69
|
+
height
|
|
70
|
+
} = event.nativeEvent.layout;
|
|
71
|
+
setLayoutIfChanged(setFloatingLayout, {
|
|
72
|
+
width,
|
|
73
|
+
height
|
|
74
|
+
});
|
|
75
|
+
}, []);
|
|
76
|
+
const requestUpdate = (0, _react.useCallback)(() => {
|
|
77
|
+
update();
|
|
78
|
+
measureFloating();
|
|
79
|
+
}, [measureFloating]);
|
|
80
|
+
(0, _react.useEffect)(() => {
|
|
81
|
+
if (!open) {
|
|
82
|
+
setFloatingLayout(null);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
measureFloating();
|
|
86
|
+
}, [measureFloating, open, revision]);
|
|
87
|
+
(0, _react.useEffect)(() => {
|
|
88
|
+
if (!open || _reactNative.Platform.OS !== 'web') return;
|
|
89
|
+
const floating = floatingRef.current;
|
|
90
|
+
const anchor = anchorRef.current;
|
|
91
|
+
const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => {
|
|
92
|
+
requestUpdate();
|
|
93
|
+
});
|
|
94
|
+
if (floating) resizeObserver?.observe(floating);
|
|
95
|
+
if (anchor) resizeObserver?.observe(anchor);
|
|
96
|
+
const visualViewport = window.visualViewport;
|
|
97
|
+
visualViewport?.addEventListener('resize', requestUpdate);
|
|
98
|
+
visualViewport?.addEventListener('scroll', requestUpdate);
|
|
99
|
+
return () => {
|
|
100
|
+
resizeObserver?.disconnect();
|
|
101
|
+
visualViewport?.removeEventListener('resize', requestUpdate);
|
|
102
|
+
visualViewport?.removeEventListener('scroll', requestUpdate);
|
|
103
|
+
};
|
|
104
|
+
}, [anchorRef, open, requestUpdate]);
|
|
105
|
+
const position = (0, _react.useMemo)(() => {
|
|
106
|
+
if (!anchorLayout || !floatingLayout) return null;
|
|
107
|
+
return (0, _getAnchoredOverlayPosition.getAnchoredOverlayPosition)(anchorLayout, floatingLayout, viewport, {
|
|
108
|
+
...positionOptions,
|
|
109
|
+
insets: positionOptions.insets ?? insets,
|
|
110
|
+
isRTL: positionOptions.isRTL ?? _reactNative.I18nManager.isRTL
|
|
111
|
+
});
|
|
112
|
+
}, [anchorLayout, floatingLayout, viewport, positionOptions, insets]);
|
|
113
|
+
const ready = position !== null;
|
|
114
|
+
const positionStyle = _reactNative.Platform.OS === 'web' ? 'fixed' : 'absolute';
|
|
115
|
+
return {
|
|
116
|
+
floatingRef,
|
|
117
|
+
onFloatingLayout,
|
|
118
|
+
style: ready ? {
|
|
119
|
+
position: positionStyle,
|
|
120
|
+
...position.style
|
|
121
|
+
} : STAGING_STYLE,
|
|
122
|
+
position,
|
|
123
|
+
ready,
|
|
124
|
+
update: requestUpdate
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=useAnchoredOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_getAnchoredOverlayPosition","_useAnchorPosition","_useOverlayPosition","STAGING_STYLE","left","opacity","pointerEvents","position","top","setLayoutIfChanged","setLayout","next","previous","width","height","useAnchoredOverlay","anchorRef","open","options","remeasureKey","externalRemeasureKey","trackWhileOpen","positionOptions","revision","update","useReducer","value","useMemo","anchorLayout","useAnchorPosition","floatingRef","useRef","floatingLayout","setFloatingLayout","useState","viewport","useWindowDimensions","insets","useContext","OverlayInsetsContext","measureFloating","useCallback","floating","current","Platform","OS","getBoundingClientRect","rect","measure","_x","_y","onFloatingLayout","event","nativeEvent","layout","requestUpdate","useEffect","anchor","resizeObserver","ResizeObserver","observe","visualViewport","window","addEventListener","disconnect","removeEventListener","getAnchoredOverlayPosition","isRTL","I18nManager","ready","positionStyle","style"],"sourceRoot":"../../../src","sources":["overlay/useAnchoredOverlay.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOA,IAAAE,2BAAA,GAAAF,OAAA;AAMA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAcA,MAAMK,aAAwB,GAAG;EAC/BC,IAAI,EAAE,CAAC,KAAK;EACZC,OAAO,EAAE,CAAC;EACVC,aAAa,EAAE,MAAM;EACrBC,QAAQ,EAAE,UAAU;EACpBC,GAAG,EAAE,CAAC;AACR,CAAC;AAED,SAASC,kBAAkBA,CACzBC,SAAsE,EACtEC,IAAoB,EACpB;EACAD,SAAS,CAAEE,QAAQ,IAAK;IACtB,IAAIA,QAAQ,EAAEC,KAAK,KAAKF,IAAI,CAACE,KAAK,IAAID,QAAQ,CAACE,MAAM,KAAKH,IAAI,CAACG,MAAM,EAAE;MACrE,OAAOF,QAAQ;IACjB;IACA,OAAOD,IAAI;EACb,CAAC,CAAC;AACJ;AAEO,SAASI,kBAAkBA,CAChCC,SAA+B,EAC/BC,IAAa,EACbC,OAAkC,GAAG,CAAC,CAAC,EACb;EAC1B,MAAM;IAAEC,YAAY,EAAEC,oBAAoB;IAAEC,cAAc;IAAE,GAAGC;EAAgB,CAAC,GAAGJ,OAAO;EAC1F,MAAM,CAACK,QAAQ,EAAEC,MAAM,CAAC,GAAG,IAAAC,iBAAU,EAAEC,KAAa,IAAKA,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;EACtE,MAAMP,YAAY,GAAG,IAAAQ,cAAO,EAC1B,OAAO;IAAEP,oBAAoB;IAAEG;EAAS,CAAC,CAAC,EAC1C,CAACH,oBAAoB,EAAEG,QAAQ,CACjC,CAAC;EACD,MAAMK,YAAY,GAAG,IAAAC,oCAAiB,EAACb,SAAS,EAAEC,IAAI,EAAE;IACtDE,YAAY;IACZE;EACF,CAAC,CAAC;EACF,MAAMS,WAAW,GAAG,IAAAC,aAAM,EAAM,IAAI,CAAC;EACrC,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAC,eAAQ,EAAwB,IAAI,CAAC;EACjF,MAAMC,QAAQ,GAAG,IAAAC,gCAAmB,EAAC,CAAC;EACtC,MAAMC,MAAM,GAAG,IAAAC,iBAAU,EAACC,wCAAoB,CAAC;EAE/C,MAAMC,eAAe,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACxC,MAAMC,QAAQ,GAAGZ,WAAW,CAACa,OAAO;IACpC,IAAI,CAACD,QAAQ,EAAE;IAEf,IAAIE,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOH,QAAQ,CAACI,qBAAqB,KAAK,UAAU,EAAE;MACjF,MAAMC,IAAI,GAAGL,QAAQ,CAACI,qBAAqB,CAAC,CAAC;MAC7CrC,kBAAkB,CAACwB,iBAAiB,EAAE;QAAEpB,KAAK,EAAEkC,IAAI,CAAClC,KAAK;QAAEC,MAAM,EAAEiC,IAAI,CAACjC;MAAO,CAAC,CAAC;MACjF;IACF;IAEA,IAAI,OAAO4B,QAAQ,CAACM,OAAO,KAAK,UAAU,EAAE;MAC1CN,QAAQ,CAACM,OAAO,CAAC,CAACC,EAAU,EAAEC,EAAU,EAAErC,KAAa,EAAEC,MAAc,KAAK;QAC1EL,kBAAkB,CAACwB,iBAAiB,EAAE;UAAEpB,KAAK;UAAEC;QAAO,CAAC,CAAC;MAC1D,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMqC,gBAAgB,GAAG,IAAAV,kBAAW,EAAEW,KAAwB,IAAK;IACjE,MAAM;MAAEvC,KAAK;MAAEC;IAAO,CAAC,GAAGsC,KAAK,CAACC,WAAW,CAACC,MAAM;IAClD7C,kBAAkB,CAACwB,iBAAiB,EAAE;MAAEpB,KAAK;MAAEC;IAAO,CAAC,CAAC;EAC1D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMyC,aAAa,GAAG,IAAAd,kBAAW,EAAC,MAAM;IACtCjB,MAAM,CAAC,CAAC;IACRgB,eAAe,CAAC,CAAC;EACnB,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;EAErB,IAAAgB,gBAAS,EAAC,MAAM;IACd,IAAI,CAACvC,IAAI,EAAE;MACTgB,iBAAiB,CAAC,IAAI,CAAC;MACvB;IACF;IAEAO,eAAe,CAAC,CAAC;EACnB,CAAC,EAAE,CAACA,eAAe,EAAEvB,IAAI,EAAEM,QAAQ,CAAC,CAAC;EAErC,IAAAiC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACvC,IAAI,IAAI2B,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IAEpC,MAAMH,QAAQ,GAAGZ,WAAW,CAACa,OAA6B;IAC1D,MAAMc,MAAM,GAAGzC,SAAS,CAAC2B,OAA6B;IACtD,MAAMe,cAAc,GAClB,OAAOC,cAAc,KAAK,WAAW,GACjC,IAAI,GACJ,IAAIA,cAAc,CAAC,MAAM;MACvBJ,aAAa,CAAC,CAAC;IACjB,CAAC,CAAC;IAER,IAAIb,QAAQ,EAAEgB,cAAc,EAAEE,OAAO,CAAClB,QAAQ,CAAC;IAC/C,IAAIe,MAAM,EAAEC,cAAc,EAAEE,OAAO,CAACH,MAAM,CAAC;IAE3C,MAAMI,cAAc,GAAGC,MAAM,CAACD,cAAc;IAC5CA,cAAc,EAAEE,gBAAgB,CAAC,QAAQ,EAAER,aAAa,CAAC;IACzDM,cAAc,EAAEE,gBAAgB,CAAC,QAAQ,EAAER,aAAa,CAAC;IAEzD,OAAO,MAAM;MACXG,cAAc,EAAEM,UAAU,CAAC,CAAC;MAC5BH,cAAc,EAAEI,mBAAmB,CAAC,QAAQ,EAAEV,aAAa,CAAC;MAC5DM,cAAc,EAAEI,mBAAmB,CAAC,QAAQ,EAAEV,aAAa,CAAC;IAC9D,CAAC;EACH,CAAC,EAAE,CAACvC,SAAS,EAAEC,IAAI,EAAEsC,aAAa,CAAC,CAAC;EAEpC,MAAMhD,QAAQ,GAAG,IAAAoB,cAAO,EAAC,MAAM;IAC7B,IAAI,CAACC,YAAY,IAAI,CAACI,cAAc,EAAE,OAAO,IAAI;IAEjD,OAAO,IAAAkC,sDAA0B,EAACtC,YAAY,EAAEI,cAAc,EAAEG,QAAQ,EAAE;MACxE,GAAGb,eAAe;MAClBe,MAAM,EAAEf,eAAe,CAACe,MAAM,IAAIA,MAAM;MACxC8B,KAAK,EAAE7C,eAAe,CAAC6C,KAAK,IAAIC,wBAAW,CAACD;IAC9C,CAAC,CAAC;EACJ,CAAC,EAAE,CAACvC,YAAY,EAAEI,cAAc,EAAEG,QAAQ,EAAEb,eAAe,EAAEe,MAAM,CAAC,CAAC;EAErE,MAAMgC,KAAK,GAAG9D,QAAQ,KAAK,IAAI;EAC/B,MAAM+D,aAAa,GAAI1B,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,OAAO,GAAG,UAAoC;EAE7F,OAAO;IACLf,WAAW;IACXqB,gBAAgB;IAChBoB,KAAK,EAAEF,KAAK,GAAG;MAAE9D,QAAQ,EAAE+D,aAAa;MAAE,GAAG/D,QAAQ,CAACgE;IAAM,CAAC,GAAGpE,aAAa;IAC7EI,QAAQ;IACR8D,KAAK;IACL7C,MAAM,EAAE+B;EACV,CAAC;AACH","ignoreList":[]}
|
|
@@ -4,9 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useDismissOverlay = useDismissOverlay;
|
|
7
|
+
var _OverlayStack = require("./OverlayStack");
|
|
7
8
|
/**
|
|
8
9
|
* No-op on native — overlay dismissal is handled by backdrop press
|
|
9
10
|
* or the system back gesture / hardware button via Modal.
|
|
10
11
|
*/
|
|
11
|
-
function useDismissOverlay(
|
|
12
|
+
function useDismissOverlay(open, _contentRef, _excludeRefs, _onDismiss, options = {}) {
|
|
13
|
+
(0, _OverlayStack.useOverlayStackRegistration)({
|
|
14
|
+
active: open,
|
|
15
|
+
capabilities: ['outside'],
|
|
16
|
+
...options
|
|
17
|
+
});
|
|
18
|
+
}
|
|
12
19
|
//# sourceMappingURL=useDismissOverlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDismissOverlay","
|
|
1
|
+
{"version":3,"names":["_OverlayStack","require","useDismissOverlay","open","_contentRef","_excludeRefs","_onDismiss","options","useOverlayStackRegistration","active","capabilities"],"sourceRoot":"../../../src","sources":["overlay/useDismissOverlay.ts"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAC/BC,IAAa,EACbC,WAA2B,EAC3BC,YAA8B,EAC9BC,UAAsB,EACtBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,IAAAC,yCAA2B,EAAC;IAC1BC,MAAM,EAAEN,IAAI;IACZO,YAAY,EAAE,CAAC,SAAS,CAAC;IACzB,GAAGH;EACL,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useDismissOverlay = useDismissOverlay;
|
|
7
7
|
var _react = require("react");
|
|
8
|
+
var _OverlayStack = require("./OverlayStack");
|
|
8
9
|
function refContainsNode(ref, target) {
|
|
9
10
|
const current = ref.current;
|
|
10
11
|
if (!current || typeof current.contains !== 'function') {
|
|
@@ -18,11 +19,18 @@ function refContainsNode(ref, target) {
|
|
|
18
19
|
* focus moves to an element outside the overlay via keyboard.
|
|
19
20
|
* Events targeting `contentRef` or any of `excludeRefs` are ignored.
|
|
20
21
|
*/
|
|
21
|
-
function useDismissOverlay(open, contentRef, excludeRefs, onDismiss) {
|
|
22
|
+
function useDismissOverlay(open, contentRef, excludeRefs, onDismiss, options = {}) {
|
|
22
23
|
const onDismissRef = (0, _react.useRef)(onDismiss);
|
|
23
24
|
onDismissRef.current = onDismiss;
|
|
24
25
|
const excludeRefsRef = (0, _react.useRef)(excludeRefs);
|
|
25
26
|
excludeRefsRef.current = excludeRefs;
|
|
27
|
+
const {
|
|
28
|
+
isTopmost
|
|
29
|
+
} = (0, _OverlayStack.useOverlayStackRegistration)({
|
|
30
|
+
active: open,
|
|
31
|
+
capabilities: ['outside'],
|
|
32
|
+
...options
|
|
33
|
+
});
|
|
26
34
|
(0, _react.useEffect)(() => {
|
|
27
35
|
if (!open) {
|
|
28
36
|
return;
|
|
@@ -39,7 +47,7 @@ function useDismissOverlay(open, contentRef, excludeRefs, onDismiss) {
|
|
|
39
47
|
return false;
|
|
40
48
|
};
|
|
41
49
|
const dismissIfOutside = e => {
|
|
42
|
-
if (!isInsideOverlay(e.target)) {
|
|
50
|
+
if (isTopmost('outside') && !isInsideOverlay(e.target)) {
|
|
43
51
|
onDismissRef.current();
|
|
44
52
|
}
|
|
45
53
|
};
|
|
@@ -49,6 +57,6 @@ function useDismissOverlay(open, contentRef, excludeRefs, onDismiss) {
|
|
|
49
57
|
document.removeEventListener('pointerdown', dismissIfOutside);
|
|
50
58
|
document.removeEventListener('focusin', dismissIfOutside);
|
|
51
59
|
};
|
|
52
|
-
}, [open, contentRef]);
|
|
60
|
+
}, [open, contentRef, isTopmost]);
|
|
53
61
|
}
|
|
54
62
|
//# sourceMappingURL=useDismissOverlay.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","refContainsNode","ref","target","current","contains","useDismissOverlay","open","contentRef","excludeRefs","onDismiss","onDismissRef","useRef","excludeRefsRef","useEffect","isInsideOverlay","dismissIfOutside","e","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useDismissOverlay.web.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,
|
|
1
|
+
{"version":3,"names":["_react","require","_OverlayStack","refContainsNode","ref","target","current","contains","useDismissOverlay","open","contentRef","excludeRefs","onDismiss","options","onDismissRef","useRef","excludeRefsRef","isTopmost","useOverlayStackRegistration","active","capabilities","useEffect","isInsideOverlay","dismissIfOutside","e","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useDismissOverlay.web.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA,SAASE,eAAeA,CAACC,GAAuB,EAAEC,MAAY,EAAW;EACvE,MAAMC,OAAO,GAAGF,GAAG,CAACE,OAAwD;EAC5E,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,CAACC,QAAQ,KAAK,UAAU,EAAE;IACtD,OAAO,KAAK;EACd;EACA,OAAOD,OAAO,CAACC,QAAQ,CAACF,MAAM,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASG,iBAAiBA,CAC/BC,IAAa,EACbC,UAA0B,EAC1BC,WAA6B,EAC7BC,SAAqB,EACrBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,MAAMC,YAAY,GAAG,IAAAC,aAAM,EAACH,SAAS,CAAC;EACtCE,YAAY,CAACR,OAAO,GAAGM,SAAS;EAEhC,MAAMI,cAAc,GAAG,IAAAD,aAAM,EAACJ,WAAW,CAAC;EAC1CK,cAAc,CAACV,OAAO,GAAGK,WAAW;EACpC,MAAM;IAAEM;EAAU,CAAC,GAAG,IAAAC,yCAA2B,EAAC;IAChDC,MAAM,EAAEV,IAAI;IACZW,YAAY,EAAE,CAAC,SAAS,CAAC;IACzB,GAAGP;EACL,CAAC,CAAC;EAEF,IAAAQ,gBAAS,EAAC,MAAM;IACd,IAAI,CAACZ,IAAI,EAAE;MACT;IACF;IAEA,MAAMa,eAAe,GAAIjB,MAAY,IAAK;MACxC,IAAIF,eAAe,CAACO,UAAU,EAAEL,MAAM,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;MACA,KAAK,MAAMD,GAAG,IAAIY,cAAc,CAACV,OAAO,EAAE;QACxC,IAAIH,eAAe,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAE;UAChC,OAAO,IAAI;QACb;MACF;MACA,OAAO,KAAK;IACd,CAAC;IAED,MAAMkB,gBAAgB,GAAIC,CAAQ,IAAK;MACrC,IAAIP,SAAS,CAAC,SAAS,CAAC,IAAI,CAACK,eAAe,CAACE,CAAC,CAACnB,MAAc,CAAC,EAAE;QAC9DS,YAAY,CAACR,OAAO,CAAC,CAAC;MACxB;IACF,CAAC;IAEDmB,QAAQ,CAACC,gBAAgB,CAAC,aAAa,EAAEH,gBAAgB,CAAC;IAC1DE,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEH,gBAAgB,CAAC;IACtD,OAAO,MAAM;MACXE,QAAQ,CAACE,mBAAmB,CAAC,aAAa,EAAEJ,gBAAgB,CAAC;MAC7DE,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEJ,gBAAgB,CAAC;IAC3D,CAAC;EACH,CAAC,EAAE,CAACd,IAAI,EAAEC,UAAU,EAAEO,SAAS,CAAC,CAAC;AACnC","ignoreList":[]}
|
|
@@ -4,9 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.useEscapeKey = useEscapeKey;
|
|
7
|
+
var _OverlayStack = require("./OverlayStack");
|
|
7
8
|
/**
|
|
8
9
|
* No-op on native — Escape key dismissal is not applicable.
|
|
9
10
|
* Native uses the system back gesture / hardware button via Modal.
|
|
10
11
|
*/
|
|
11
|
-
function useEscapeKey(
|
|
12
|
+
function useEscapeKey(open, _onEscape, options = {}) {
|
|
13
|
+
(0, _OverlayStack.useOverlayStackRegistration)({
|
|
14
|
+
active: open,
|
|
15
|
+
capabilities: ['escape'],
|
|
16
|
+
...options
|
|
17
|
+
});
|
|
18
|
+
}
|
|
12
19
|
//# sourceMappingURL=useEscapeKey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEscapeKey","
|
|
1
|
+
{"version":3,"names":["_OverlayStack","require","useEscapeKey","open","_onEscape","options","useOverlayStackRegistration","active","capabilities"],"sourceRoot":"../../../src","sources":["overlay/useEscapeKey.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAC1BC,IAAa,EACbC,SAAqB,EACrBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,IAAAC,yCAA2B,EAAC;IAC1BC,MAAM,EAAEJ,IAAI;IACZK,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,GAAGH;EACL,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -5,19 +5,27 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useEscapeKey = useEscapeKey;
|
|
7
7
|
var _react = require("react");
|
|
8
|
+
var _OverlayStack = require("./OverlayStack");
|
|
8
9
|
/**
|
|
9
10
|
* Closes an overlay when the user presses the Escape key.
|
|
10
11
|
* Web-only — native platforms use Modal's `onRequestClose` for back/dismiss.
|
|
11
12
|
*/
|
|
12
|
-
function useEscapeKey(open, onEscape) {
|
|
13
|
+
function useEscapeKey(open, onEscape, options = {}) {
|
|
13
14
|
const onEscapeRef = (0, _react.useRef)(onEscape);
|
|
14
15
|
onEscapeRef.current = onEscape;
|
|
16
|
+
const {
|
|
17
|
+
isTopmost
|
|
18
|
+
} = (0, _OverlayStack.useOverlayStackRegistration)({
|
|
19
|
+
active: open,
|
|
20
|
+
capabilities: ['escape'],
|
|
21
|
+
...options
|
|
22
|
+
});
|
|
15
23
|
(0, _react.useEffect)(() => {
|
|
16
24
|
if (!open) {
|
|
17
25
|
return;
|
|
18
26
|
}
|
|
19
27
|
const handleKeyDown = e => {
|
|
20
|
-
if (e.key === 'Escape') {
|
|
28
|
+
if (e.key === 'Escape' && isTopmost('escape')) {
|
|
21
29
|
onEscapeRef.current();
|
|
22
30
|
}
|
|
23
31
|
};
|
|
@@ -25,6 +33,6 @@ function useEscapeKey(open, onEscape) {
|
|
|
25
33
|
return () => {
|
|
26
34
|
document.removeEventListener('keydown', handleKeyDown);
|
|
27
35
|
};
|
|
28
|
-
}, [open]);
|
|
36
|
+
}, [isTopmost, open]);
|
|
29
37
|
}
|
|
30
38
|
//# sourceMappingURL=useEscapeKey.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","useEscapeKey","open","onEscape","onEscapeRef","useRef","current","useEffect","handleKeyDown","e","key","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useEscapeKey.web.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACO,
|
|
1
|
+
{"version":3,"names":["_react","require","_OverlayStack","useEscapeKey","open","onEscape","options","onEscapeRef","useRef","current","isTopmost","useOverlayStackRegistration","active","capabilities","useEffect","handleKeyDown","e","key","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useEscapeKey.web.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAC1BC,IAAa,EACbC,QAAoB,EACpBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,MAAMC,WAAW,GAAG,IAAAC,aAAM,EAACH,QAAQ,CAAC;EACpCE,WAAW,CAACE,OAAO,GAAGJ,QAAQ;EAC9B,MAAM;IAAEK;EAAU,CAAC,GAAG,IAAAC,yCAA2B,EAAC;IAChDC,MAAM,EAAER,IAAI;IACZS,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,GAAGP;EACL,CAAC,CAAC;EAEF,IAAAQ,gBAAS,EAAC,MAAM;IACd,IAAI,CAACV,IAAI,EAAE;MACT;IACF;IAEA,MAAMW,aAAa,GAAIC,CAAgB,IAAK;MAC1C,IAAIA,CAAC,CAACC,GAAG,KAAK,QAAQ,IAAIP,SAAS,CAAC,QAAQ,CAAC,EAAE;QAC7CH,WAAW,CAACE,OAAO,CAAC,CAAC;MACvB;IACF,CAAC;IAEDS,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEJ,aAAa,CAAC;IACnD,OAAO,MAAM;MACXG,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEL,aAAa,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACL,SAAS,EAAEN,IAAI,CAAC,CAAC;AACvB","ignoreList":[]}
|
|
@@ -53,27 +53,37 @@ const MIN_CONTENT_HEIGHT = 200;
|
|
|
53
53
|
*
|
|
54
54
|
* Respects safe-area insets provided via `OverlayInsetsProvider`.
|
|
55
55
|
*/
|
|
56
|
-
function useOverlayPosition(anchorLayout) {
|
|
56
|
+
function useOverlayPosition(anchorLayout, options) {
|
|
57
57
|
const {
|
|
58
|
+
width: viewportWidth,
|
|
58
59
|
height: viewportHeight
|
|
59
60
|
} = (0, _reactNative.useWindowDimensions)();
|
|
60
61
|
const {
|
|
61
62
|
top: insetTop,
|
|
62
|
-
bottom: insetBottom
|
|
63
|
+
bottom: insetBottom,
|
|
64
|
+
right: insetRight
|
|
63
65
|
} = (0, _react.useContext)(OverlayInsetsContext);
|
|
66
|
+
const matchAnchorWidth = options?.matchAnchorWidth ?? true;
|
|
64
67
|
return (0, _react.useMemo)(() => {
|
|
65
68
|
if (!anchorLayout) return null;
|
|
66
69
|
const anchorBottom = anchorLayout.y + anchorLayout.height;
|
|
67
70
|
const spaceBelow = viewportHeight - anchorBottom - insetBottom - SCREEN_EDGE_PADDING;
|
|
68
71
|
const spaceAbove = anchorLayout.y - insetTop - SCREEN_EDGE_PADDING;
|
|
69
72
|
const preferBelow = spaceBelow >= MIN_CONTENT_HEIGHT || spaceBelow >= spaceAbove;
|
|
73
|
+
const horizontalStyle = matchAnchorWidth ? {
|
|
74
|
+
left: anchorLayout.x,
|
|
75
|
+
width: anchorLayout.width
|
|
76
|
+
} : {
|
|
77
|
+
left: anchorLayout.x,
|
|
78
|
+
alignItems: 'flex-start',
|
|
79
|
+
maxWidth: Math.max(0, viewportWidth - anchorLayout.x - insetRight - SCREEN_EDGE_PADDING)
|
|
80
|
+
};
|
|
70
81
|
if (preferBelow) {
|
|
71
82
|
const maxHeight = Math.max(0, spaceBelow);
|
|
72
83
|
return {
|
|
73
84
|
style: {
|
|
85
|
+
...horizontalStyle,
|
|
74
86
|
top: anchorBottom + POPOVER_GAP,
|
|
75
|
-
left: anchorLayout.x,
|
|
76
|
-
width: anchorLayout.width,
|
|
77
87
|
maxHeight
|
|
78
88
|
},
|
|
79
89
|
maxHeight,
|
|
@@ -83,14 +93,13 @@ function useOverlayPosition(anchorLayout) {
|
|
|
83
93
|
const maxHeight = Math.max(0, spaceAbove);
|
|
84
94
|
return {
|
|
85
95
|
style: {
|
|
96
|
+
...horizontalStyle,
|
|
86
97
|
bottom: viewportHeight - anchorLayout.y + POPOVER_GAP,
|
|
87
|
-
left: anchorLayout.x,
|
|
88
|
-
width: anchorLayout.width,
|
|
89
98
|
maxHeight
|
|
90
99
|
},
|
|
91
100
|
maxHeight,
|
|
92
101
|
placement: 'top'
|
|
93
102
|
};
|
|
94
|
-
}, [anchorLayout, viewportHeight, insetTop, insetBottom]);
|
|
103
|
+
}, [anchorLayout, viewportWidth, viewportHeight, insetTop, insetBottom, insetRight, matchAnchorWidth]);
|
|
95
104
|
}
|
|
96
105
|
//# sourceMappingURL=useOverlayPosition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","DEFAULT_INSETS","top","right","bottom","left","OverlayInsetsContext","exports","createContext","OverlayInsetsProvider","Provider","SCREEN_EDGE_PADDING","POPOVER_GAP","MIN_CONTENT_HEIGHT","useOverlayPosition","anchorLayout","height","viewportHeight","useWindowDimensions","insetTop","insetBottom","useContext","useMemo","anchorBottom","y","spaceBelow","spaceAbove","preferBelow","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","DEFAULT_INSETS","top","right","bottom","left","OverlayInsetsContext","exports","createContext","OverlayInsetsProvider","Provider","SCREEN_EDGE_PADDING","POPOVER_GAP","MIN_CONTENT_HEIGHT","useOverlayPosition","anchorLayout","options","width","viewportWidth","height","viewportHeight","useWindowDimensions","insetTop","insetBottom","insetRight","useContext","matchAnchorWidth","useMemo","anchorBottom","y","spaceBelow","spaceAbove","preferBelow","horizontalStyle","x","alignItems","maxWidth","Math","max","maxHeight","style","placement"],"sourceRoot":"../../../src","sources":["overlay/useOverlayPosition.ts"],"mappings":"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","ignoreList":[]}
|