react-tooltip 5.27.0 → 5.28.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/dist/react-tooltip.cjs +32 -42
- package/dist/react-tooltip.cjs.map +1 -1
- package/dist/react-tooltip.d.ts +1 -0
- package/dist/react-tooltip.min.cjs +2 -2
- package/dist/react-tooltip.min.cjs.map +1 -1
- package/dist/react-tooltip.min.mjs +2 -2
- package/dist/react-tooltip.min.mjs.map +1 -1
- package/dist/react-tooltip.mjs +32 -42
- package/dist/react-tooltip.mjs.map +1 -1
- package/dist/react-tooltip.umd.js +32 -42
- package/dist/react-tooltip.umd.js.map +1 -1
- package/dist/react-tooltip.umd.min.js +2 -2
- package/dist/react-tooltip.umd.min.js.map +1 -1
- package/package.json +1 -1
package/dist/react-tooltip.mjs
CHANGED
|
@@ -42,11 +42,7 @@ function injectStyle({ css, id = REACT_TOOLTIP_BASE_STYLES_ID, type = 'base', re
|
|
|
42
42
|
}
|
|
43
43
|
const { insertAt } = ref;
|
|
44
44
|
if (document.getElementById(id)) {
|
|
45
|
-
// this
|
|
46
|
-
{
|
|
47
|
-
// eslint-disable-next-line no-console
|
|
48
|
-
console.warn(`[react-tooltip] Element with id '${id}' already exists. Call \`removeStyle()\` first`);
|
|
49
|
-
}
|
|
45
|
+
// this could happen in cases the tooltip is imported by multiple js modules
|
|
50
46
|
return;
|
|
51
47
|
}
|
|
52
48
|
const head = document.head || document.getElementsByTagName('head')[0];
|
|
@@ -282,6 +278,14 @@ const getScrollParent = (node) => {
|
|
|
282
278
|
|
|
283
279
|
const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;
|
|
284
280
|
|
|
281
|
+
const clearTimeoutRef = (ref) => {
|
|
282
|
+
if (ref.current) {
|
|
283
|
+
clearTimeout(ref.current);
|
|
284
|
+
// eslint-disable-next-line no-param-reassign
|
|
285
|
+
ref.current = null;
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
|
|
285
289
|
const DEFAULT_TOOLTIP_ID = 'DEFAULT_TOOLTIP_ID';
|
|
286
290
|
const DEFAULT_CONTEXT_DATA = {
|
|
287
291
|
anchorRefs: new Set(),
|
|
@@ -386,7 +390,7 @@ var styles = {"tooltip":"styles-module_tooltip__mnnfp","arrow":"styles-module_ar
|
|
|
386
390
|
|
|
387
391
|
const Tooltip = ({
|
|
388
392
|
// props
|
|
389
|
-
forwardRef, id, className, classNameArrow, variant = 'dark', anchorId, anchorSelect, place = 'top', offset = 10, events = ['hover'], openOnClick = false, positionStrategy = 'absolute', middlewares, wrapper: WrapperElement, delayShow = 0, delayHide = 0, float = false, hidden = false, noArrow = false, clickable = false, closeOnEsc = false, closeOnScroll = false, closeOnResize = false, openEvents, closeEvents, globalCloseEvents, imperativeModeOnly, style: externalStyles, position, afterShow, afterHide,
|
|
393
|
+
forwardRef, id, className, classNameArrow, variant = 'dark', anchorId, anchorSelect, place = 'top', offset = 10, events = ['hover'], openOnClick = false, positionStrategy = 'absolute', middlewares, wrapper: WrapperElement, delayShow = 0, delayHide = 0, float = false, hidden = false, noArrow = false, clickable = false, closeOnEsc = false, closeOnScroll = false, closeOnResize = false, openEvents, closeEvents, globalCloseEvents, imperativeModeOnly, style: externalStyles, position, afterShow, afterHide, disableTooltip,
|
|
390
394
|
// props handled by controller
|
|
391
395
|
content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnchor, setActiveAnchor, border, opacity, arrowColor, role = 'tooltip', }) => {
|
|
392
396
|
var _a;
|
|
@@ -536,9 +540,7 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
536
540
|
if (show === wasShowing.current) {
|
|
537
541
|
return;
|
|
538
542
|
}
|
|
539
|
-
|
|
540
|
-
clearTimeout(missedTransitionTimerRef.current);
|
|
541
|
-
}
|
|
543
|
+
clearTimeoutRef(missedTransitionTimerRef);
|
|
542
544
|
wasShowing.current = show;
|
|
543
545
|
if (show) {
|
|
544
546
|
afterShow === null || afterShow === void 0 ? void 0 : afterShow();
|
|
@@ -567,9 +569,7 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
567
569
|
: newComputedPosition);
|
|
568
570
|
};
|
|
569
571
|
const handleShowTooltipDelayed = (delay = delayShow) => {
|
|
570
|
-
|
|
571
|
-
clearTimeout(tooltipShowDelayTimerRef.current);
|
|
572
|
-
}
|
|
572
|
+
clearTimeoutRef(tooltipShowDelayTimerRef);
|
|
573
573
|
if (rendered) {
|
|
574
574
|
// if the tooltip is already rendered, ignore delay
|
|
575
575
|
handleShow(true);
|
|
@@ -580,9 +580,7 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
580
580
|
}, delay);
|
|
581
581
|
};
|
|
582
582
|
const handleHideTooltipDelayed = (delay = delayHide) => {
|
|
583
|
-
|
|
584
|
-
clearTimeout(tooltipHideDelayTimerRef.current);
|
|
585
|
-
}
|
|
583
|
+
clearTimeoutRef(tooltipHideDelayTimerRef);
|
|
586
584
|
tooltipHideDelayTimerRef.current = setTimeout(() => {
|
|
587
585
|
if (hoveringTooltip.current) {
|
|
588
586
|
return;
|
|
@@ -613,9 +611,7 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
613
611
|
}
|
|
614
612
|
setActiveAnchor(target);
|
|
615
613
|
setProviderActiveAnchor({ current: target });
|
|
616
|
-
|
|
617
|
-
clearTimeout(tooltipHideDelayTimerRef.current);
|
|
618
|
-
}
|
|
614
|
+
clearTimeoutRef(tooltipHideDelayTimerRef);
|
|
619
615
|
};
|
|
620
616
|
const handleHideTooltip = () => {
|
|
621
617
|
if (clickable) {
|
|
@@ -628,9 +624,7 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
628
624
|
else {
|
|
629
625
|
handleShow(false);
|
|
630
626
|
}
|
|
631
|
-
|
|
632
|
-
clearTimeout(tooltipShowDelayTimerRef.current);
|
|
633
|
-
}
|
|
627
|
+
clearTimeoutRef(tooltipShowDelayTimerRef);
|
|
634
628
|
};
|
|
635
629
|
const handleTooltipPosition = ({ x, y }) => {
|
|
636
630
|
var _a;
|
|
@@ -691,9 +685,7 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
691
685
|
return;
|
|
692
686
|
}
|
|
693
687
|
handleShow(false);
|
|
694
|
-
|
|
695
|
-
clearTimeout(tooltipShowDelayTimerRef.current);
|
|
696
|
-
}
|
|
688
|
+
clearTimeoutRef(tooltipShowDelayTimerRef);
|
|
697
689
|
};
|
|
698
690
|
// debounce handler to prevent call twice when
|
|
699
691
|
// mouse enter and focus events being triggered toggether
|
|
@@ -770,10 +762,13 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
770
762
|
var _a, _b;
|
|
771
763
|
const elementRefs = new Set(anchorRefs);
|
|
772
764
|
anchorsBySelect.forEach((anchor) => {
|
|
765
|
+
if (disableTooltip === null || disableTooltip === void 0 ? void 0 : disableTooltip(anchor)) {
|
|
766
|
+
return;
|
|
767
|
+
}
|
|
773
768
|
elementRefs.add({ current: anchor });
|
|
774
769
|
});
|
|
775
770
|
const anchorById = document.querySelector(`[id='${anchorId}']`);
|
|
776
|
-
if (anchorById) {
|
|
771
|
+
if (anchorById && !(disableTooltip === null || disableTooltip === void 0 ? void 0 : disableTooltip(anchorById))) {
|
|
777
772
|
elementRefs.add({ current: anchorById });
|
|
778
773
|
}
|
|
779
774
|
const handleScrollResize = () => {
|
|
@@ -977,12 +972,8 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
977
972
|
setRendered(false);
|
|
978
973
|
handleShow(false);
|
|
979
974
|
setActiveAnchor(null);
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
}
|
|
983
|
-
if (tooltipHideDelayTimerRef.current) {
|
|
984
|
-
clearTimeout(tooltipHideDelayTimerRef.current);
|
|
985
|
-
}
|
|
975
|
+
clearTimeoutRef(tooltipShowDelayTimerRef);
|
|
976
|
+
clearTimeoutRef(tooltipHideDelayTimerRef);
|
|
986
977
|
return true;
|
|
987
978
|
}
|
|
988
979
|
return false;
|
|
@@ -1061,12 +1052,8 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
1061
1052
|
handleShow(true);
|
|
1062
1053
|
}
|
|
1063
1054
|
return () => {
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
}
|
|
1067
|
-
if (tooltipHideDelayTimerRef.current) {
|
|
1068
|
-
clearTimeout(tooltipHideDelayTimerRef.current);
|
|
1069
|
-
}
|
|
1055
|
+
clearTimeoutRef(tooltipShowDelayTimerRef);
|
|
1056
|
+
clearTimeoutRef(tooltipHideDelayTimerRef);
|
|
1070
1057
|
};
|
|
1071
1058
|
}, []);
|
|
1072
1059
|
useEffect(() => {
|
|
@@ -1089,7 +1076,11 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
1089
1076
|
}, [id, anchorSelect, imperativeOptions === null || imperativeOptions === void 0 ? void 0 : imperativeOptions.anchorSelect]);
|
|
1090
1077
|
useEffect(() => {
|
|
1091
1078
|
if (tooltipShowDelayTimerRef.current) {
|
|
1092
|
-
|
|
1079
|
+
/**
|
|
1080
|
+
* if the delay changes while the tooltip is waiting to show,
|
|
1081
|
+
* reset the timer with the new delay
|
|
1082
|
+
*/
|
|
1083
|
+
clearTimeoutRef(tooltipShowDelayTimerRef);
|
|
1093
1084
|
handleShowTooltipDelayed(delayShow);
|
|
1094
1085
|
}
|
|
1095
1086
|
}, [delayShow]);
|
|
@@ -1130,9 +1121,7 @@ content, contentWrapperRef, isOpen, defaultIsOpen = false, setIsOpen, activeAnch
|
|
|
1130
1121
|
isOpen: Boolean(rendered && !hidden && actualContent && canShow),
|
|
1131
1122
|
}));
|
|
1132
1123
|
return rendered && !hidden && actualContent ? (React.createElement(WrapperElement, { id: id, role: role, className: classNames('react-tooltip', coreStyles['tooltip'], styles['tooltip'], styles[variant], className, `react-tooltip__place-${computedPosition.place}`, coreStyles[canShow ? 'show' : 'closing'], canShow ? 'react-tooltip__show' : 'react-tooltip__closing', positionStrategy === 'fixed' && coreStyles['fixed'], clickable && coreStyles['clickable']), onTransitionEnd: (event) => {
|
|
1133
|
-
|
|
1134
|
-
clearTimeout(missedTransitionTimerRef.current);
|
|
1135
|
-
}
|
|
1124
|
+
clearTimeoutRef(missedTransitionTimerRef);
|
|
1136
1125
|
if (show || event.propertyName !== 'opacity') {
|
|
1137
1126
|
return;
|
|
1138
1127
|
}
|
|
@@ -1158,7 +1147,7 @@ const TooltipContent = ({ content }) => {
|
|
|
1158
1147
|
return React.createElement("span", { dangerouslySetInnerHTML: { __html: content } });
|
|
1159
1148
|
};
|
|
1160
1149
|
|
|
1161
|
-
const TooltipController = React.forwardRef(({ id, anchorId, anchorSelect, content, html, render, className, classNameArrow, variant = 'dark', place = 'top', offset = 10, wrapper = 'div', children = null, events = ['hover'], openOnClick = false, positionStrategy = 'absolute', middlewares, delayShow = 0, delayHide = 0, float = false, hidden = false, noArrow = false, clickable = false, closeOnEsc = false, closeOnScroll = false, closeOnResize = false, openEvents, closeEvents, globalCloseEvents, imperativeModeOnly = false, style, position, isOpen, defaultIsOpen = false, disableStyleInjection = false, border, opacity, arrowColor, setIsOpen, afterShow, afterHide, role = 'tooltip', }, ref) => {
|
|
1150
|
+
const TooltipController = React.forwardRef(({ id, anchorId, anchorSelect, content, html, render, className, classNameArrow, variant = 'dark', place = 'top', offset = 10, wrapper = 'div', children = null, events = ['hover'], openOnClick = false, positionStrategy = 'absolute', middlewares, delayShow = 0, delayHide = 0, float = false, hidden = false, noArrow = false, clickable = false, closeOnEsc = false, closeOnScroll = false, closeOnResize = false, openEvents, closeEvents, globalCloseEvents, imperativeModeOnly = false, style, position, isOpen, defaultIsOpen = false, disableStyleInjection = false, border, opacity, arrowColor, setIsOpen, afterShow, afterHide, disableTooltip, role = 'tooltip', }, ref) => {
|
|
1162
1151
|
const [tooltipContent, setTooltipContent] = useState(content);
|
|
1163
1152
|
const [tooltipHtml, setTooltipHtml] = useState(html);
|
|
1164
1153
|
const [tooltipPlace, setTooltipPlace] = useState(place);
|
|
@@ -1431,6 +1420,7 @@ const TooltipController = React.forwardRef(({ id, anchorId, anchorSelect, conten
|
|
|
1431
1420
|
setIsOpen,
|
|
1432
1421
|
afterShow,
|
|
1433
1422
|
afterHide,
|
|
1423
|
+
disableTooltip,
|
|
1434
1424
|
activeAnchor,
|
|
1435
1425
|
setActiveAnchor: (anchor) => setActiveAnchor(anchor),
|
|
1436
1426
|
role,
|