@underverse-ui/underverse 1.0.119 → 1.0.120
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 +6 -0
- package/api-reference.json +1 -1
- package/dist/index.cjs +36 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@underverse-ui/underverse` are documented in this file.
|
|
4
4
|
|
|
5
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- `Tooltip` now closes immediately when its trigger is pressed or when document-level pointer/Escape interactions indicate an overlay flow has taken over. This prevents portal tooltips from sticking on screen after opening dropdowns, popovers, or modals from a tooltip trigger, without overriding the normal hover close delay on pointer movement.
|
|
10
|
+
|
|
5
11
|
## [1.0.34] - 2026-02-24
|
|
6
12
|
|
|
7
13
|
### Changed
|
package/api-reference.json
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -3101,6 +3101,10 @@ var Tooltip = React10.forwardRef(({
|
|
|
3101
3101
|
setIsOpen(false);
|
|
3102
3102
|
}, delayClose);
|
|
3103
3103
|
};
|
|
3104
|
+
const closeNow = React10.useCallback(() => {
|
|
3105
|
+
clearTimeout(timeoutRef.current);
|
|
3106
|
+
setIsOpen(false);
|
|
3107
|
+
}, []);
|
|
3104
3108
|
const handleFocus = () => {
|
|
3105
3109
|
if (disabled) return;
|
|
3106
3110
|
setIsOpen(true);
|
|
@@ -3111,6 +3115,10 @@ var Tooltip = React10.forwardRef(({
|
|
|
3111
3115
|
React10.useEffect(() => {
|
|
3112
3116
|
return () => clearTimeout(timeoutRef.current);
|
|
3113
3117
|
}, []);
|
|
3118
|
+
React10.useEffect(() => {
|
|
3119
|
+
if (isOpen) return;
|
|
3120
|
+
clearTimeout(timeoutRef.current);
|
|
3121
|
+
}, [isOpen]);
|
|
3114
3122
|
React10.useLayoutEffect(() => {
|
|
3115
3123
|
if (!isOpen) {
|
|
3116
3124
|
lastAppliedRef.current = null;
|
|
@@ -3154,6 +3162,18 @@ var Tooltip = React10.forwardRef(({
|
|
|
3154
3162
|
if (panelRef.current) ro.observe(panelRef.current);
|
|
3155
3163
|
return () => ro.disconnect();
|
|
3156
3164
|
}, [isOpen, updatePosition]);
|
|
3165
|
+
React10.useEffect(() => {
|
|
3166
|
+
if (!isOpen) return;
|
|
3167
|
+
const handleDocumentKeyDown = (event) => {
|
|
3168
|
+
if (event.key === "Escape") closeNow();
|
|
3169
|
+
};
|
|
3170
|
+
document.addEventListener("pointerdown", closeNow, true);
|
|
3171
|
+
document.addEventListener("keydown", handleDocumentKeyDown);
|
|
3172
|
+
return () => {
|
|
3173
|
+
document.removeEventListener("pointerdown", closeNow, true);
|
|
3174
|
+
document.removeEventListener("keydown", handleDocumentKeyDown);
|
|
3175
|
+
};
|
|
3176
|
+
}, [closeNow, isOpen]);
|
|
3157
3177
|
const childProps = children.props;
|
|
3158
3178
|
const childRef = childProps.ref;
|
|
3159
3179
|
const passthroughRef = mergeRefs(forwardedRef, childRef, (node) => {
|
|
@@ -3186,6 +3206,22 @@ var Tooltip = React10.forwardRef(({
|
|
|
3186
3206
|
handleMouseLeave();
|
|
3187
3207
|
}
|
|
3188
3208
|
),
|
|
3209
|
+
onPointerDown: chainEventHandlers(
|
|
3210
|
+
triggerPassthroughProps.onPointerDown,
|
|
3211
|
+
childProps.onPointerDown,
|
|
3212
|
+
(e) => {
|
|
3213
|
+
triggerRef.current = e.currentTarget;
|
|
3214
|
+
closeNow();
|
|
3215
|
+
}
|
|
3216
|
+
),
|
|
3217
|
+
onClick: chainEventHandlers(
|
|
3218
|
+
triggerPassthroughProps.onClick,
|
|
3219
|
+
childProps.onClick,
|
|
3220
|
+
(e) => {
|
|
3221
|
+
triggerRef.current = e.currentTarget;
|
|
3222
|
+
closeNow();
|
|
3223
|
+
}
|
|
3224
|
+
),
|
|
3189
3225
|
onFocus: chainEventHandlers(
|
|
3190
3226
|
triggerPassthroughProps.onFocus,
|
|
3191
3227
|
childProps.onFocus,
|