@underverse-ui/underverse 1.0.121 → 1.0.122
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/CHANGELOG.md +1 -1
- package/api-reference.json +1 -1
- package/dist/index.cjs +19 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,7 +6,7 @@ All notable changes to `@underverse-ui/underverse` are documented in this file.
|
|
|
6
6
|
|
|
7
7
|
### Fixed
|
|
8
8
|
|
|
9
|
-
- `Tooltip` now closes immediately when its trigger is pressed or when document-level pointer
|
|
9
|
+
- `Tooltip` now closes immediately when its trigger is pressed, when `Escape` is pressed, or when document-level pointer interactions show the pointer is outside the trigger. This prevents portal tooltips from sticking on screen after opening dropdowns, popovers, modals, or when a modal/portal layout misses the trigger `mouseleave`.
|
|
10
10
|
|
|
11
11
|
## [1.0.34] - 2026-02-24
|
|
12
12
|
|
package/api-reference.json
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -3047,6 +3047,7 @@ var Tooltip = React10.forwardRef(({
|
|
|
3047
3047
|
const panelRef = React10.useRef(null);
|
|
3048
3048
|
const timeoutRef = React10.useRef(void 0);
|
|
3049
3049
|
const lastAppliedRef = React10.useRef(null);
|
|
3050
|
+
const openedByPointerRef = React10.useRef(false);
|
|
3050
3051
|
const triggerSelector = React10.useId();
|
|
3051
3052
|
const delayOpen = typeof delay === "object" ? delay.open || 700 : delay;
|
|
3052
3053
|
const delayClose = typeof delay === "object" ? delay.close || 300 : delay;
|
|
@@ -3090,6 +3091,7 @@ var Tooltip = React10.forwardRef(({
|
|
|
3090
3091
|
}, [placement]);
|
|
3091
3092
|
const handleMouseEnter = () => {
|
|
3092
3093
|
if (disabled) return;
|
|
3094
|
+
openedByPointerRef.current = true;
|
|
3093
3095
|
clearTimeout(timeoutRef.current);
|
|
3094
3096
|
timeoutRef.current = setTimeout(() => {
|
|
3095
3097
|
setIsOpen(true);
|
|
@@ -3103,13 +3105,16 @@ var Tooltip = React10.forwardRef(({
|
|
|
3103
3105
|
};
|
|
3104
3106
|
const closeNow = React10.useCallback(() => {
|
|
3105
3107
|
clearTimeout(timeoutRef.current);
|
|
3108
|
+
openedByPointerRef.current = false;
|
|
3106
3109
|
setIsOpen(false);
|
|
3107
3110
|
}, []);
|
|
3108
3111
|
const handleFocus = () => {
|
|
3109
3112
|
if (disabled) return;
|
|
3113
|
+
openedByPointerRef.current = false;
|
|
3110
3114
|
setIsOpen(true);
|
|
3111
3115
|
};
|
|
3112
3116
|
const handleBlur = () => {
|
|
3117
|
+
openedByPointerRef.current = false;
|
|
3113
3118
|
setIsOpen(false);
|
|
3114
3119
|
};
|
|
3115
3120
|
React10.useEffect(() => {
|
|
@@ -3167,11 +3172,25 @@ var Tooltip = React10.forwardRef(({
|
|
|
3167
3172
|
const handleDocumentKeyDown = (event) => {
|
|
3168
3173
|
if (event.key === "Escape") closeNow();
|
|
3169
3174
|
};
|
|
3175
|
+
const handleDocumentPointerMove = (event) => {
|
|
3176
|
+
if (!openedByPointerRef.current) return;
|
|
3177
|
+
const triggerEl = triggerRef.current;
|
|
3178
|
+
if (!triggerEl) {
|
|
3179
|
+
closeNow();
|
|
3180
|
+
return;
|
|
3181
|
+
}
|
|
3182
|
+
const rect = triggerEl.getBoundingClientRect();
|
|
3183
|
+
const tolerance = 2;
|
|
3184
|
+
const insideTrigger = event.clientX >= rect.left - tolerance && event.clientX <= rect.right + tolerance && event.clientY >= rect.top - tolerance && event.clientY <= rect.bottom + tolerance;
|
|
3185
|
+
if (!insideTrigger) closeNow();
|
|
3186
|
+
};
|
|
3170
3187
|
document.addEventListener("pointerdown", closeNow, true);
|
|
3171
3188
|
document.addEventListener("keydown", handleDocumentKeyDown);
|
|
3189
|
+
document.addEventListener("pointermove", handleDocumentPointerMove, true);
|
|
3172
3190
|
return () => {
|
|
3173
3191
|
document.removeEventListener("pointerdown", closeNow, true);
|
|
3174
3192
|
document.removeEventListener("keydown", handleDocumentKeyDown);
|
|
3193
|
+
document.removeEventListener("pointermove", handleDocumentPointerMove, true);
|
|
3175
3194
|
};
|
|
3176
3195
|
}, [closeNow, isOpen]);
|
|
3177
3196
|
const childProps = children.props;
|