@react-native-aria/overlays 0.3.9-alpha.0 → 0.3.11-alpha.0
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/Portal.js +17 -37
- package/lib/commonjs/Portal.js.map +1 -1
- package/lib/commonjs/index.js +0 -10
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +0 -10
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/useOverlay.js +0 -1
- package/lib/commonjs/useOverlay.js.map +1 -1
- package/lib/commonjs/useOverlay.web.js +9 -11
- package/lib/commonjs/useOverlay.web.js.map +1 -1
- package/lib/commonjs/useOverlayPosition.js +54 -69
- package/lib/commonjs/useOverlayPosition.js.map +1 -1
- package/lib/commonjs/useOverlayPosition.web.js +0 -1
- package/lib/commonjs/useOverlayPosition.web.js.map +1 -1
- package/lib/commonjs/useOverlayTrigger.js +0 -1
- package/lib/commonjs/useOverlayTrigger.js.map +1 -1
- package/lib/commonjs/useOverlayTrigger.web.js +0 -1
- package/lib/commonjs/useOverlayTrigger.web.js.map +1 -1
- package/lib/commonjs/usePreventScroll.js +0 -2
- package/lib/commonjs/usePreventScroll.js.map +1 -1
- package/lib/commonjs/usePreventScroll.web.js +0 -1
- package/lib/commonjs/usePreventScroll.web.js.map +1 -1
- package/lib/commonjs/utils.js +8 -8
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/overlays/index.js +0 -2
- package/lib/commonjs/web/overlays/index.js.map +1 -1
- package/lib/commonjs/web/overlays/src/calculatePosition.js +35 -68
- package/lib/commonjs/web/overlays/src/calculatePosition.js.map +1 -1
- package/lib/commonjs/web/overlays/src/index.js +0 -2
- package/lib/commonjs/web/overlays/src/index.js.map +1 -1
- package/lib/commonjs/web/overlays/src/useCloseOnScroll.js +3 -12
- package/lib/commonjs/web/overlays/src/useCloseOnScroll.js.map +1 -1
- package/lib/commonjs/web/overlays/src/useOverlayPosition.js +19 -23
- package/lib/commonjs/web/overlays/src/useOverlayPosition.js.map +1 -1
- package/lib/module/Portal.js +13 -20
- package/lib/module/Portal.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/useOverlay.js.map +1 -1
- package/lib/module/useOverlay.web.js +9 -8
- package/lib/module/useOverlay.web.js.map +1 -1
- package/lib/module/useOverlayPosition.js +55 -60
- package/lib/module/useOverlayPosition.js.map +1 -1
- package/lib/module/useOverlayPosition.web.js.map +1 -1
- package/lib/module/useOverlayTrigger.js.map +1 -1
- package/lib/module/useOverlayTrigger.web.js.map +1 -1
- package/lib/module/usePreventScroll.js.map +1 -1
- package/lib/module/usePreventScroll.web.js.map +1 -1
- package/lib/module/utils.js +8 -4
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/overlays/index.js +1 -0
- package/lib/module/web/overlays/index.js.map +1 -1
- package/lib/module/web/overlays/src/calculatePosition.js +34 -57
- package/lib/module/web/overlays/src/calculatePosition.js.map +1 -1
- package/lib/module/web/overlays/src/index.js +1 -0
- package/lib/module/web/overlays/src/index.js.map +1 -1
- package/lib/module/web/overlays/src/useCloseOnScroll.js +4 -9
- package/lib/module/web/overlays/src/useCloseOnScroll.js.map +1 -1
- package/lib/module/web/overlays/src/useOverlayPosition.js +19 -18
- package/lib/module/web/overlays/src/useOverlayPosition.js.map +1 -1
- package/lib/typescript/Portal.d.ts +4 -2
- package/lib/typescript/Portal.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/index.web.d.ts +1 -0
- package/lib/typescript/index.web.d.ts.map +1 -0
- package/lib/typescript/useOverlay.d.ts +1 -0
- package/lib/typescript/useOverlay.d.ts.map +1 -0
- package/lib/typescript/useOverlay.web.d.ts +1 -0
- package/lib/typescript/useOverlay.web.d.ts.map +1 -0
- package/lib/typescript/useOverlayPosition.d.ts +1 -0
- package/lib/typescript/useOverlayPosition.d.ts.map +1 -0
- package/lib/typescript/useOverlayPosition.web.d.ts +1 -0
- package/lib/typescript/useOverlayPosition.web.d.ts.map +1 -0
- package/lib/typescript/useOverlayTrigger.d.ts +1 -0
- package/lib/typescript/useOverlayTrigger.d.ts.map +1 -0
- package/lib/typescript/useOverlayTrigger.web.d.ts +1 -0
- package/lib/typescript/useOverlayTrigger.web.d.ts.map +1 -0
- package/lib/typescript/usePreventScroll.d.ts +1 -0
- package/lib/typescript/usePreventScroll.d.ts.map +1 -0
- package/lib/typescript/usePreventScroll.web.d.ts +1 -0
- package/lib/typescript/usePreventScroll.web.d.ts.map +1 -0
- package/lib/typescript/utils.d.ts +1 -0
- package/lib/typescript/utils.d.ts.map +1 -0
- package/lib/typescript/web/overlays/index.d.ts +1 -0
- package/lib/typescript/web/overlays/index.d.ts.map +1 -0
- package/lib/typescript/web/overlays/src/calculatePosition.d.ts +1 -0
- package/lib/typescript/web/overlays/src/calculatePosition.d.ts.map +1 -0
- package/lib/typescript/web/overlays/src/index.d.ts +1 -0
- package/lib/typescript/web/overlays/src/index.d.ts.map +1 -0
- package/lib/typescript/web/overlays/src/useCloseOnScroll.d.ts +1 -0
- package/lib/typescript/web/overlays/src/useCloseOnScroll.d.ts.map +1 -0
- package/lib/typescript/web/overlays/src/useOverlayPosition.d.ts +1 -0
- package/lib/typescript/web/overlays/src/useOverlayPosition.d.ts.map +1 -0
- package/package.json +3 -2
- package/src/useOverlayPosition.ts +37 -17
- package/src/utils.ts +1 -0
@@ -1,5 +1,4 @@
|
|
1
1
|
//@ts-nocheck
|
2
|
-
|
3
2
|
/*
|
4
3
|
* Copyright 2020 Adobe. All rights reserved.
|
5
4
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
@@ -11,14 +10,15 @@
|
|
11
10
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
12
11
|
* governing permissions and limitations under the License.
|
13
12
|
*/
|
14
|
-
|
13
|
+
|
14
|
+
import { useEffect } from 'react';
|
15
|
+
|
16
|
+
// This behavior moved from useOverlayTrigger to useOverlayPosition.
|
15
17
|
// For backward compatibility, where useOverlayTrigger handled hiding the popover on close,
|
16
18
|
// it sets a close function here mapped from the trigger element. This way we can avoid
|
17
19
|
// forcing users to pass an onClose function to useOverlayPosition which could be considered
|
18
20
|
// a breaking change.
|
19
|
-
|
20
21
|
export const onCloseMap = new WeakMap();
|
21
|
-
|
22
22
|
/** @private */
|
23
23
|
export function useCloseOnScroll(opts) {
|
24
24
|
let {
|
@@ -30,22 +30,17 @@ export function useCloseOnScroll(opts) {
|
|
30
30
|
if (!isOpen) {
|
31
31
|
return;
|
32
32
|
}
|
33
|
-
|
34
33
|
let onScroll = e => {
|
35
34
|
// Ignore if scrolling an scrollable region outside the trigger's tree.
|
36
35
|
let target = e.target;
|
37
|
-
|
38
36
|
if (!triggerRef.current || !target.contains(triggerRef.current)) {
|
39
37
|
return;
|
40
38
|
}
|
41
|
-
|
42
39
|
let onCloseHandler = onClose || onCloseMap.get(triggerRef.current);
|
43
|
-
|
44
40
|
if (onCloseHandler) {
|
45
41
|
onCloseHandler();
|
46
42
|
}
|
47
43
|
};
|
48
|
-
|
49
44
|
window.addEventListener('scroll', onScroll, true);
|
50
45
|
return () => {
|
51
46
|
window.removeEventListener('scroll', onScroll, true);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"names":["useEffect","onCloseMap","WeakMap","useCloseOnScroll","opts","triggerRef","isOpen","onClose","onScroll","e","target","current","contains","onCloseHandler","get","window","addEventListener","removeEventListener"],"sourceRoot":"../../../../../src","sources":["web/overlays/src/useCloseOnScroll.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAoBA,SAAS,QAAQ,OAAO;;AAE5C;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAA4C,GAAG,IAAIC,OAAO,CAAC,CAAC;AAQzE;AACA,OAAO,SAASC,gBAAgBA,CAACC,IAA0B,EAAE;EAC3D,IAAI;IAAEC,UAAU;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGH,IAAI;EAE1CJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACM,MAAM,EAAE;MACX;IACF;IAEA,IAAIE,QAAQ,GAAIC,CAAa,IAAK;MAChC;MACA,IAAIC,MAAM,GAAGD,CAAC,CAACC,MAAqB;MACpC,IAAI,CAACL,UAAU,CAACM,OAAO,IAAI,CAACD,MAAM,CAACE,QAAQ,CAACP,UAAU,CAACM,OAAO,CAAC,EAAE;QAC/D;MACF;MAEA,IAAIE,cAAc,GAAGN,OAAO,IAAIN,UAAU,CAACa,GAAG,CAACT,UAAU,CAACM,OAAO,CAAC;MAClE,IAAIE,cAAc,EAAE;QAClBA,cAAc,CAAC,CAAC;MAClB;IACF,CAAC;IAEDE,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAER,QAAQ,EAAE,IAAI,CAAC;IACjD,OAAO,MAAM;MACXO,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAET,QAAQ,EAAE,IAAI,CAAC;IACtD,CAAC;EACH,CAAC,EAAE,CAACF,MAAM,EAAEC,OAAO,EAAEF,UAAU,CAAC,CAAC;AACnC"}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
//@ts-nocheck
|
2
|
-
|
3
2
|
/*
|
4
3
|
* Copyright 2020 Adobe. All rights reserved.
|
5
4
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
@@ -11,20 +10,20 @@
|
|
11
10
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
12
11
|
* governing permissions and limitations under the License.
|
13
12
|
*/
|
13
|
+
|
14
14
|
import { calculatePosition } from './calculatePosition';
|
15
15
|
import { useCallback, useRef, useState } from 'react';
|
16
16
|
import { useCloseOnScroll } from './useCloseOnScroll';
|
17
17
|
import { isRTL, useLayoutEffect } from '@react-native-aria/utils';
|
18
18
|
// @ts-ignore
|
19
19
|
let visualViewport = typeof window !== 'undefined' && window.visualViewport;
|
20
|
+
|
20
21
|
/**
|
21
22
|
* Handles positioning overlays like popovers and menus relative to a trigger
|
22
23
|
* element, and updating the position when the window resizes.
|
23
24
|
*/
|
24
|
-
|
25
25
|
export function useOverlayPosition(props) {
|
26
26
|
var _targetRef$current, _targetRef$current2;
|
27
|
-
|
28
27
|
const direction = isRTL() ? 'rtl' : undefined;
|
29
28
|
let {
|
30
29
|
targetRef,
|
@@ -53,7 +52,6 @@ export function useOverlayPosition(props) {
|
|
53
52
|
if (shouldUpdatePosition === false || !isOpen || !overlayRef.current || !targetRef.current || !scrollRef.current || !boundaryElement) {
|
54
53
|
return;
|
55
54
|
}
|
56
|
-
|
57
55
|
setPosition(calculatePosition({
|
58
56
|
placement: translateRTL(placement, direction),
|
59
57
|
overlayNode: overlayRef.current,
|
@@ -66,17 +64,19 @@ export function useOverlayPosition(props) {
|
|
66
64
|
crossOffset,
|
67
65
|
shouldOverlapWithTrigger
|
68
66
|
}));
|
69
|
-
}, deps);
|
67
|
+
}, deps);
|
70
68
|
|
71
|
-
|
69
|
+
// Update position when anything changes
|
70
|
+
useLayoutEffect(updatePosition, deps);
|
72
71
|
|
73
|
-
|
74
|
-
|
72
|
+
// Update position on window resize
|
73
|
+
useResize(updatePosition);
|
75
74
|
|
75
|
+
// Reposition the overlay and do not close on scroll while the visual viewport is resizing.
|
76
|
+
// This will ensure that overlays adjust their positioning when the iOS virtual keyboard appears.
|
76
77
|
let isResizing = useRef(false);
|
77
78
|
useLayoutEffect(() => {
|
78
79
|
let timeout;
|
79
|
-
|
80
80
|
let onResize = () => {
|
81
81
|
isResizing.current = true;
|
82
82
|
clearTimeout(timeout);
|
@@ -85,24 +85,26 @@ export function useOverlayPosition(props) {
|
|
85
85
|
}, 500);
|
86
86
|
updatePosition();
|
87
87
|
};
|
88
|
-
|
89
|
-
visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.addEventListener('resize', onResize);
|
88
|
+
visualViewport === null || visualViewport === void 0 || visualViewport.addEventListener('resize', onResize);
|
90
89
|
return () => {
|
91
|
-
visualViewport === null || visualViewport === void 0
|
90
|
+
visualViewport === null || visualViewport === void 0 || visualViewport.removeEventListener('resize', onResize);
|
92
91
|
};
|
93
92
|
}, [updatePosition]);
|
94
93
|
let close = useCallback(() => {
|
95
94
|
if (!isResizing.current) {
|
96
95
|
onClose();
|
97
96
|
}
|
98
|
-
}, [onClose, isResizing]);
|
99
|
-
// we hide the popover. Otherwise, its position would be incorrect.
|
97
|
+
}, [onClose, isResizing]);
|
100
98
|
|
99
|
+
// When scrolling a parent scrollable region of the trigger (other than the body),
|
100
|
+
// we hide the popover. Otherwise, its position would be incorrect.
|
101
101
|
useCloseOnScroll({
|
102
102
|
triggerRef: targetRef,
|
103
103
|
isOpen,
|
104
104
|
onClose: onClose ? close : undefined
|
105
|
-
});
|
105
|
+
});
|
106
|
+
|
107
|
+
// useLayoutEffect(() => {
|
106
108
|
// const mutationObserver = new MutationObserver((mutations) => {
|
107
109
|
// updatePosition();
|
108
110
|
// mutations.forEach((mutation) => {
|
@@ -119,7 +121,9 @@ export function useOverlayPosition(props) {
|
|
119
121
|
// // }
|
120
122
|
// });
|
121
123
|
// });
|
124
|
+
|
122
125
|
// mutationObserver.observe(overlayRef?.current, { attributes: true });
|
126
|
+
|
123
127
|
// return () => mutationObserver.disconnect();
|
124
128
|
// }, [overlayRef, updatePosition]);
|
125
129
|
|
@@ -144,7 +148,6 @@ export function useOverlayPosition(props) {
|
|
144
148
|
updatePosition
|
145
149
|
};
|
146
150
|
}
|
147
|
-
|
148
151
|
function useResize(onResize) {
|
149
152
|
useLayoutEffect(() => {
|
150
153
|
window.addEventListener('resize', onResize, false);
|
@@ -153,12 +156,10 @@ function useResize(onResize) {
|
|
153
156
|
};
|
154
157
|
}, [onResize]);
|
155
158
|
}
|
156
|
-
|
157
159
|
function translateRTL(position, direction) {
|
158
160
|
if (direction === 'rtl') {
|
159
161
|
return position.replace('start', 'right').replace('end', 'left');
|
160
162
|
}
|
161
|
-
|
162
163
|
return position.replace('start', 'left').replace('end', 'right');
|
163
164
|
}
|
164
165
|
//# sourceMappingURL=useOverlayPosition.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useOverlayPosition.ts"],"names":["calculatePosition","useCallback","useRef","useState","useCloseOnScroll","isRTL","useLayoutEffect","visualViewport","window","useOverlayPosition","props","direction","undefined","targetRef","overlayRef","scrollRef","placement","containerPadding","shouldFlip","boundaryElement","document","body","offset","crossOffset","shouldUpdatePosition","isOpen","shouldOverlapWithTrigger","onClose","position","setPosition","arrowOffsetLeft","arrowOffsetTop","maxHeight","deps","current","offsetLeft","offsetTop","updatePosition","translateRTL","overlayNode","targetNode","scrollNode","padding","useResize","isResizing","timeout","onResize","clearTimeout","setTimeout","addEventListener","removeEventListener","close","triggerRef","rendered","overlayProps","style","zIndex","arrowProps","left","top","replace"],"mappings":"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","sourcesContent":["//@ts-nocheck\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { calculatePosition, PositionResult } from './calculatePosition';\nimport {\n HTMLAttributes,\n RefObject,\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport { Placement, PlacementAxis, PositionProps } from '@react-types/overlays';\nimport { useCloseOnScroll } from './useCloseOnScroll';\nimport { isRTL, useLayoutEffect } from '@react-native-aria/utils';\n\ninterface AriaPositionProps extends PositionProps {\n /**\n * Element that that serves as the positioning boundary.\n * @default document.body\n */\n boundaryElement?: HTMLElement;\n /**\n * The ref for the element which the overlay positions itself with respect to.\n */\n targetRef: RefObject<HTMLElement>;\n /**\n * The ref for the overlay element.\n */\n overlayRef: RefObject<HTMLElement>;\n /**\n * A ref for the scrollable region within the overlay.\n * @default overlayRef\n */\n scrollRef?: RefObject<HTMLElement>;\n /**\n * Whether the overlay should update its position automatically.\n * @default true\n */\n shouldUpdatePosition?: boolean;\n /** Handler that is called when the overlay should close. */\n onClose?: () => void;\n /** Determines whether the overlay should overlap with the trigger */\n shouldOverlapWithTrigger?: boolean;\n}\n\ninterface PositionAria {\n /** Props for the overlay container element. */\n overlayProps: HTMLAttributes<Element>;\n /** Props for the overlay tip arrow if any. */\n arrowProps: HTMLAttributes<Element>;\n /** Placement of the overlay with respect to the overlay trigger. */\n placement: PlacementAxis;\n /** Updates the position of the overlay. */\n updatePosition(): void;\n}\n\n// @ts-ignore\nlet visualViewport = typeof window !== 'undefined' && window.visualViewport;\n\n/**\n * Handles positioning overlays like popovers and menus relative to a trigger\n * element, and updating the position when the window resizes.\n */\nexport function useOverlayPosition(props: AriaPositionProps): PositionAria {\n const direction = isRTL() ? 'rtl' : undefined;\n let {\n targetRef,\n overlayRef,\n scrollRef = overlayRef,\n placement = 'bottom' as Placement,\n containerPadding = 12,\n shouldFlip = true,\n boundaryElement = typeof document !== 'undefined' ? document.body : null,\n offset = 0,\n crossOffset = 0,\n shouldUpdatePosition = true,\n isOpen = true,\n shouldOverlapWithTrigger = false,\n onClose,\n } = props;\n let [position, setPosition] = useState<PositionResult>({\n position: {},\n arrowOffsetLeft: undefined,\n arrowOffsetTop: undefined,\n maxHeight: undefined,\n placement: undefined,\n });\n\n let deps = [\n shouldUpdatePosition,\n placement,\n overlayRef.current,\n targetRef.current?.offsetLeft,\n targetRef.current?.offsetTop,\n scrollRef.current,\n containerPadding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n isOpen,\n direction,\n shouldOverlapWithTrigger,\n ];\n\n let updatePosition = useCallback(() => {\n if (\n shouldUpdatePosition === false ||\n !isOpen ||\n !overlayRef.current ||\n !targetRef.current ||\n !scrollRef.current ||\n !boundaryElement\n ) {\n return;\n }\n\n setPosition(\n calculatePosition({\n placement: translateRTL(placement, direction),\n overlayNode: overlayRef.current,\n targetNode: targetRef.current,\n scrollNode: scrollRef.current,\n padding: containerPadding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n shouldOverlapWithTrigger,\n })\n );\n }, deps);\n\n // Update position when anything changes\n useLayoutEffect(updatePosition, deps);\n\n // Update position on window resize\n useResize(updatePosition);\n\n // Reposition the overlay and do not close on scroll while the visual viewport is resizing.\n // This will ensure that overlays adjust their positioning when the iOS virtual keyboard appears.\n let isResizing = useRef(false);\n useLayoutEffect(() => {\n let timeout: NodeJS.Timeout;\n let onResize = () => {\n isResizing.current = true;\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n isResizing.current = false;\n }, 500);\n\n updatePosition();\n };\n\n visualViewport?.addEventListener('resize', onResize);\n\n return () => {\n visualViewport?.removeEventListener('resize', onResize);\n };\n }, [updatePosition]);\n\n let close = useCallback(() => {\n if (!isResizing.current) {\n onClose();\n }\n }, [onClose, isResizing]);\n\n // When scrolling a parent scrollable region of the trigger (other than the body),\n // we hide the popover. Otherwise, its position would be incorrect.\n useCloseOnScroll({\n triggerRef: targetRef,\n isOpen,\n onClose: onClose ? close : undefined,\n });\n\n // useLayoutEffect(() => {\n // const mutationObserver = new MutationObserver((mutations) => {\n // updatePosition();\n // mutations.forEach((mutation) => {\n // // if (mutation.attributeName === 'style') {\n // // const transform = mutation.target.style.transform;\n // // if (transform) {\n // // const match = transform.match(/scale\\((.+)\\)/);\n // // if (match) {\n // // const scale = parseFloat(match[1]);\n // // console.log(`Scale: ${scale}`);\n // // // updatePosition();\n // // }\n // // }\n // // }\n // });\n // });\n\n // mutationObserver.observe(overlayRef?.current, { attributes: true });\n\n // return () => mutationObserver.disconnect();\n // }, [overlayRef, updatePosition]);\n\n return {\n rendered: true,\n overlayProps: {\n style: {\n position: 'absolute',\n zIndex: 100000, // should match the z-index in ModalTrigger\n ...position.position,\n maxHeight: position.maxHeight,\n },\n },\n placement: position.placement,\n arrowProps: {\n style: {\n left: position.arrowOffsetLeft,\n top: position.arrowOffsetTop,\n },\n },\n updatePosition,\n };\n}\n\nfunction useResize(onResize) {\n useLayoutEffect(() => {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }, [onResize]);\n}\n\nfunction translateRTL(position, direction) {\n if (direction === 'rtl') {\n return position.replace('start', 'right').replace('end', 'left');\n }\n return position.replace('start', 'left').replace('end', 'right');\n}\n"]}
|
1
|
+
{"version":3,"names":["calculatePosition","useCallback","useRef","useState","useCloseOnScroll","isRTL","useLayoutEffect","visualViewport","window","useOverlayPosition","props","_targetRef$current","_targetRef$current2","direction","undefined","targetRef","overlayRef","scrollRef","placement","containerPadding","shouldFlip","boundaryElement","document","body","offset","crossOffset","shouldUpdatePosition","isOpen","shouldOverlapWithTrigger","onClose","position","setPosition","arrowOffsetLeft","arrowOffsetTop","maxHeight","deps","current","offsetLeft","offsetTop","updatePosition","translateRTL","overlayNode","targetNode","scrollNode","padding","useResize","isResizing","timeout","onResize","clearTimeout","setTimeout","addEventListener","removeEventListener","close","triggerRef","rendered","overlayProps","style","zIndex","arrowProps","left","top","replace"],"sourceRoot":"../../../../../src","sources":["web/overlays/src/useOverlayPosition.ts"],"mappings":"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"}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import React from 'react';
|
1
2
|
import type { ReactNode } from 'react';
|
2
3
|
import { ViewProps } from 'react-native';
|
3
4
|
interface ModalProviderProps extends ViewProps {
|
@@ -7,7 +8,8 @@ interface ModalProviderProps extends ViewProps {
|
|
7
8
|
export declare function PortalProvider(props: {
|
8
9
|
children: ReactNode;
|
9
10
|
isSSR?: boolean;
|
10
|
-
}): JSX.Element;
|
11
|
+
}): React.JSX.Element;
|
11
12
|
export declare const OverlayProvider: typeof PortalProvider;
|
12
|
-
export declare function OverlayContainer(props: ModalProviderProps): JSX.Element;
|
13
|
+
export declare function OverlayContainer(props: ModalProviderProps): React.JSX.Element;
|
13
14
|
export {};
|
15
|
+
//# sourceMappingURL=Portal.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Portal.d.ts","sourceRoot":"","sources":["../../src/Portal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAe3D,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,qBAmDA;AAaD,eAAO,MAAM,eAAe,uBAAiB,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,qBAoCzD"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useOverlay.d.ts","sourceRoot":"","sources":["../../src/useOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,UAAU,YAAY;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;;;OAKG;IACH,4BAA4B,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;CAClE;AAED,UAAU,WAAW;IACnB,uDAAuD;IACvD,YAAY,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,GAC3B,WAAW,CAIb"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useOverlay.web.d.ts","sourceRoot":"","sources":["../../src/useOverlay.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAG7D,UAAU,YAAY;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;;;OAKG;IACH,4BAA4B,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;CAClE;AAED,UAAU,WAAW;IACnB,uDAAuD;IACvD,YAAY,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CAC3C;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,SAAS,CAAC,WAAW,CAAC,GAC1B,WAAW,CAoDb"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useOverlayPosition.d.ts","sourceRoot":"","sources":["../../src/useOverlayPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMzC,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAwBtE,UAAU,iBAAkB,SAAQ,aAAa;IAC/C;;;OAGG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B;;OAEG;IACH,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAmCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;EA8G1D;AASD,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiBD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,aAAa,GAAG,SAAS,CAAC;CACtC;AA0TD,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useOverlayPosition.web.d.ts","sourceRoot":"","sources":["../../src/useOverlayPosition.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useOverlayTrigger.d.ts","sourceRoot":"","sources":["../../src/useOverlayTrigger.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,UAAU,mBAAmB;IAC3B,qDAAqD;IACrD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;CACvD;AAED,UAAU,kBAAkB;IAC1B,qCAAqC;IACrC,YAAY,EAAE,GAAG,CAAC;IAElB,+CAA+C;IAC/C,YAAY,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,GAC3B,kBAAkB,CAOpB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useOverlayTrigger.web.d.ts","sourceRoot":"","sources":["../../src/useOverlayTrigger.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"usePreventScroll.d.ts","sourceRoot":"","sources":["../../src/usePreventScroll.ts"],"names":[],"mappings":"AAAA,UAAU,oBAAoB;IAC5B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAGD,eAAO,MAAM,gBAAgB,cAAc,oBAAoB,SAAY,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"usePreventScroll.web.d.ts","sourceRoot":"","sources":["../../src/usePreventScroll.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,uBAAuB,QAWlC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/overlays/index.ts"],"names":[],"mappings":"AAYA,cAAc,OAAO,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"calculatePosition.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/calculatePosition.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,SAAS,EACT,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAS/B,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;CAClB;AAWD,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,YAAY;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,WAAW,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAmQD,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,SAAS,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,kBAAkB,EAAE,UAAU,EAC9B,2BAA2B,EAAE,MAAM,EACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,OAAO,EAC9B,wBAAwB,EAAE,OAAO,GAChC,cAAc,CAsHhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAiFpE"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/index.ts"],"names":[],"mappings":"AAYA,cAAc,sBAAsB,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useCloseOnScroll.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/useCloseOnScroll.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAO7C,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAiB,CAAC;AAE1E,UAAU,oBAAoB;IAC5B,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAe;AACf,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,QA0B1D"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useOverlayPosition.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/useOverlayPosition.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,cAAc,EACd,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAa,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAIhF,UAAU,iBAAkB,SAAQ,aAAa;IAC/C;;;OAGG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,UAAU,YAAY;IACpB,+CAA+C;IAC/C,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,8CAA8C;IAC9C,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,oEAAoE;IACpE,SAAS,EAAE,aAAa,CAAC;IACzB,2CAA2C;IAC3C,cAAc,IAAI,IAAI,CAAC;CACxB;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CA2JzE"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@react-native-aria/overlays",
|
3
|
-
"version": "0.3.
|
3
|
+
"version": "0.3.11-alpha.0",
|
4
4
|
"description": "Overlay utilities. Part of react-native-aria",
|
5
5
|
"main": "lib/commonjs/index",
|
6
6
|
"module": "lib/module/index",
|
@@ -25,6 +25,7 @@
|
|
25
25
|
"test": "jest",
|
26
26
|
"typescript": "tsc --noEmit",
|
27
27
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
28
|
+
"build": "bob build",
|
28
29
|
"prepare": "bob build",
|
29
30
|
"release": "release-it",
|
30
31
|
"example": "yarn --cwd example",
|
@@ -34,7 +35,7 @@
|
|
34
35
|
"dependencies": {
|
35
36
|
"@react-aria/interactions": "^3.3.2",
|
36
37
|
"@react-aria/overlays": "^3.7.0",
|
37
|
-
"@react-native-aria/utils": "^0.2.
|
38
|
+
"@react-native-aria/utils": "^0.2.10",
|
38
39
|
"@react-stately/overlays": "^3.1.1",
|
39
40
|
"@react-types/overlays": "^3.4.0",
|
40
41
|
"dom-helpers": "^5.0.0"
|
@@ -66,6 +66,32 @@ type IMeasureResult = {
|
|
66
66
|
width: number;
|
67
67
|
};
|
68
68
|
|
69
|
+
const getArrowPropsWithStatusBarHeight = ({
|
70
|
+
top,
|
71
|
+
left,
|
72
|
+
}: {
|
73
|
+
top: number;
|
74
|
+
left: number;
|
75
|
+
}) => {
|
76
|
+
let topWithStatusBarHeight = top;
|
77
|
+
|
78
|
+
if (
|
79
|
+
typeof top !== 'undefined' &&
|
80
|
+
typeof APPROX_STATUSBAR_HEIGHT !== 'undefined'
|
81
|
+
) {
|
82
|
+
topWithStatusBarHeight = top + APPROX_STATUSBAR_HEIGHT;
|
83
|
+
} else {
|
84
|
+
topWithStatusBarHeight = undefined;
|
85
|
+
}
|
86
|
+
|
87
|
+
return {
|
88
|
+
style: {
|
89
|
+
left: left,
|
90
|
+
top: topWithStatusBarHeight,
|
91
|
+
},
|
92
|
+
};
|
93
|
+
};
|
94
|
+
|
69
95
|
export function useOverlayPosition(props: AriaPositionProps) {
|
70
96
|
let {
|
71
97
|
targetRef,
|
@@ -106,9 +132,8 @@ export function useOverlayPosition(props: AriaPositionProps) {
|
|
106
132
|
return;
|
107
133
|
}
|
108
134
|
|
109
|
-
const { height: windowHeight, width: windowWidth } =
|
110
|
-
'window'
|
111
|
-
);
|
135
|
+
const { height: windowHeight, width: windowWidth } =
|
136
|
+
Dimensions.get('window');
|
112
137
|
|
113
138
|
const positions = calculatePosition({
|
114
139
|
placement: translateRTL(placement),
|
@@ -138,6 +163,7 @@ export function useOverlayPosition(props: AriaPositionProps) {
|
|
138
163
|
|
139
164
|
React.useLayoutEffect(() => {
|
140
165
|
updatePosition();
|
166
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
141
167
|
}, [
|
142
168
|
placement,
|
143
169
|
isOpen,
|
@@ -155,18 +181,18 @@ export function useOverlayPosition(props: AriaPositionProps) {
|
|
155
181
|
style.top = (position?.position?.top || 0) + (APPROX_STATUSBAR_HEIGHT || 0);
|
156
182
|
}
|
157
183
|
|
184
|
+
const arrowPropsWithStatusBarHeight = getArrowPropsWithStatusBarHeight({
|
185
|
+
left: position?.arrowOffsetLeft,
|
186
|
+
top: position?.arrowOffsetTop,
|
187
|
+
});
|
188
|
+
|
158
189
|
const returnProps = {
|
159
190
|
rendered,
|
160
191
|
overlayProps: {
|
161
192
|
style,
|
162
193
|
},
|
163
194
|
placement: position.placement,
|
164
|
-
arrowProps:
|
165
|
-
style: {
|
166
|
-
left: position.arrowOffsetLeft,
|
167
|
-
top: (position?.arrowOffsetTop || 0) + (APPROX_STATUSBAR_HEIGHT || 0),
|
168
|
-
},
|
169
|
-
},
|
195
|
+
arrowProps: arrowPropsWithStatusBarHeight,
|
170
196
|
updatePosition,
|
171
197
|
};
|
172
198
|
|
@@ -438,14 +464,8 @@ function computePosition(
|
|
438
464
|
_containerOffsetWithBoundary: Offset,
|
439
465
|
_isContainerPositioned: boolean
|
440
466
|
) {
|
441
|
-
let {
|
442
|
-
|
443
|
-
crossPlacement,
|
444
|
-
axis,
|
445
|
-
crossAxis,
|
446
|
-
size,
|
447
|
-
crossSize,
|
448
|
-
} = placementInfo;
|
467
|
+
let { placement, crossPlacement, axis, crossAxis, size, crossSize } =
|
468
|
+
placementInfo;
|
449
469
|
let position: any = {};
|
450
470
|
//@ts-ignore
|
451
471
|
position[crossAxis] = childOffset[crossAxis];
|
package/src/utils.ts
CHANGED