react-tooltip 5.10.0-beta.0 → 5.10.0-beta.1

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.
@@ -115,9 +115,16 @@ var debounce = (func, wait, immediate) => {
115
115
  };
116
116
  var debounce_default = debounce;
117
117
 
118
+ // src/components/TooltipContent/TooltipContent.tsx
119
+ var import_jsx_runtime = require("react/jsx-runtime");
120
+ var TooltipContent = ({ content }) => {
121
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { dangerouslySetInnerHTML: { __html: content } });
122
+ };
123
+ var TooltipContent_default = TooltipContent;
124
+
118
125
  // src/components/TooltipProvider/TooltipProvider.tsx
119
126
  var import_react = require("react");
120
- var import_jsx_runtime = require("react/jsx-runtime");
127
+ var import_jsx_runtime2 = require("react/jsx-runtime");
121
128
  var DEFAULT_TOOLTIP_ID = "DEFAULT_TOOLTIP_ID";
122
129
  var DEFAULT_CONTEXT_DATA = {
123
130
  anchorRefs: /* @__PURE__ */ new Set(),
@@ -185,7 +192,7 @@ var TooltipProvider = ({ children }) => {
185
192
  getTooltipData
186
193
  };
187
194
  }, [getTooltipData]);
188
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipContext.Provider, { value: context, children });
195
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(TooltipContext.Provider, { value: context, children });
189
196
  };
190
197
  function useTooltip(tooltipId = DEFAULT_TOOLTIP_ID) {
191
198
  return (0, import_react.useContext)(TooltipContext).getTooltipData(tooltipId);
@@ -195,7 +202,7 @@ var TooltipProvider_default = TooltipProvider;
195
202
  // src/components/TooltipProvider/TooltipWrapper.tsx
196
203
  var import_react2 = require("react");
197
204
  var import_classnames = __toESM(require_classnames());
198
- var import_jsx_runtime2 = require("react/jsx-runtime");
205
+ var import_jsx_runtime3 = require("react/jsx-runtime");
199
206
  var TooltipWrapper = ({
200
207
  tooltipId,
201
208
  children,
@@ -219,7 +226,7 @@ var TooltipWrapper = ({
219
226
  detach(anchorRef);
220
227
  };
221
228
  }, []);
222
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
229
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
223
230
  "span",
224
231
  {
225
232
  ref: anchorRef,
@@ -711,7 +718,7 @@ var computeTooltipPosition = async ({
711
718
  var styles_module_default = { "arrow": "react-tooltip__arrow_KtSkBq", "clickable": "react-tooltip__clickable_KtSkBq", "dark": "react-tooltip__dark_KtSkBq", "error": "react-tooltip__error_KtSkBq", "fixed": "react-tooltip__fixed_KtSkBq", "info": "react-tooltip__info_KtSkBq", "light": "react-tooltip__light_KtSkBq", "noArrow": "react-tooltip__no-arrow_KtSkBq", "show": "react-tooltip__show_KtSkBq", "success": "react-tooltip__success_KtSkBq", "tooltip": "react-tooltip__tooltip_KtSkBq", "warning": "react-tooltip__warning_KtSkBq" };
712
719
 
713
720
  // src/components/Tooltip/Tooltip.tsx
714
- var import_jsx_runtime3 = require("react/jsx-runtime");
721
+ var import_jsx_runtime4 = require("react/jsx-runtime");
715
722
  var Tooltip = ({
716
723
  // props
717
724
  id,
@@ -723,9 +730,11 @@ var Tooltip = ({
723
730
  place = "top",
724
731
  offset = 10,
725
732
  events = ["hover"],
733
+ openOnClick = false,
726
734
  positionStrategy = "absolute",
727
735
  middlewares,
728
736
  wrapper: WrapperElement,
737
+ children = null,
729
738
  delayShow = 0,
730
739
  delayHide = 0,
731
740
  float = false,
@@ -738,6 +747,7 @@ var Tooltip = ({
738
747
  afterHide,
739
748
  // props handled by controller
740
749
  content,
750
+ html,
741
751
  isOpen,
742
752
  setIsOpen,
743
753
  activeAnchor,
@@ -758,6 +768,7 @@ var Tooltip = ({
758
768
  const hoveringTooltip = (0, import_react4.useRef)(false);
759
769
  const [anchorsBySelect, setAnchorsBySelect] = (0, import_react4.useState)([]);
760
770
  const mounted = (0, import_react4.useRef)(false);
771
+ const shouldOpenOnClick = openOnClick || events.includes("click");
761
772
  use_isomorphic_layout_effect_default(() => {
762
773
  mounted.current = true;
763
774
  return () => {
@@ -917,11 +928,13 @@ var Tooltip = ({
917
928
  }
918
929
  };
919
930
  const handleClickOutsideAnchors = (event) => {
931
+ var _a;
920
932
  const anchorById = document.querySelector(`[id='${anchorId}']`);
921
- if (anchorById == null ? void 0 : anchorById.contains(event.target)) {
933
+ const anchors = [anchorById, ...anchorsBySelect];
934
+ if (anchors.some((anchor) => anchor == null ? void 0 : anchor.contains(event.target))) {
922
935
  return;
923
936
  }
924
- if (anchorsBySelect.some((anchor) => anchor.contains(event.target))) {
937
+ if ((_a = tooltipRef.current) == null ? void 0 : _a.contains(event.target)) {
925
938
  return;
926
939
  }
927
940
  handleShow(false);
@@ -948,11 +961,10 @@ var Tooltip = ({
948
961
  window.addEventListener("keydown", handleEsc);
949
962
  }
950
963
  const enabledEvents = [];
951
- if (events.find((event) => event === "click")) {
964
+ if (shouldOpenOnClick) {
952
965
  window.addEventListener("click", handleClickOutsideAnchors);
953
966
  enabledEvents.push({ event: "click", listener: handleClickTooltipAnchor });
954
- }
955
- if (events.find((event) => event === "hover")) {
967
+ } else {
956
968
  enabledEvents.push(
957
969
  { event: "mouseenter", listener: debouncedHandleShowTooltip },
958
970
  { event: "mouseleave", listener: debouncedHandleHideTooltip },
@@ -973,7 +985,7 @@ var Tooltip = ({
973
985
  hoveringTooltip.current = false;
974
986
  handleHideTooltip();
975
987
  };
976
- if (clickable) {
988
+ if (clickable && !shouldOpenOnClick) {
977
989
  (_a = tooltipRef.current) == null ? void 0 : _a.addEventListener("mouseenter", handleMouseEnterTooltip);
978
990
  (_b = tooltipRef.current) == null ? void 0 : _b.addEventListener("mouseleave", handleMouseLeaveTooltip);
979
991
  }
@@ -985,13 +997,13 @@ var Tooltip = ({
985
997
  });
986
998
  return () => {
987
999
  var _a2, _b2;
988
- if (events.find((event) => event === "click")) {
1000
+ if (shouldOpenOnClick) {
989
1001
  window.removeEventListener("click", handleClickOutsideAnchors);
990
1002
  }
991
1003
  if (closeOnEsc) {
992
1004
  window.removeEventListener("keydown", handleEsc);
993
1005
  }
994
- if (clickable) {
1006
+ if (clickable && !shouldOpenOnClick) {
995
1007
  (_a2 = tooltipRef.current) == null ? void 0 : _a2.removeEventListener("mouseenter", handleMouseEnterTooltip);
996
1008
  (_b2 = tooltipRef.current) == null ? void 0 : _b2.removeEventListener("mouseleave", handleMouseLeaveTooltip);
997
1009
  }
@@ -1096,7 +1108,7 @@ var Tooltip = ({
1096
1108
  }
1097
1109
  setActualPlacement(computedStylesData.place);
1098
1110
  });
1099
- }, [show, activeAnchor, content, place, offset, positionStrategy, position]);
1111
+ }, [show, activeAnchor, content, html, place, offset, positionStrategy, position]);
1100
1112
  (0, import_react4.useEffect)(() => {
1101
1113
  var _a;
1102
1114
  const anchorById = document.querySelector(`[id='${anchorId}']`);
@@ -1130,8 +1142,9 @@ var Tooltip = ({
1130
1142
  setAnchorsBySelect([]);
1131
1143
  }
1132
1144
  }, [id, anchorSelect]);
1133
- const canShow = content && show && Object.keys(inlineStyles).length > 0;
1134
- return rendered ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1145
+ const hasContentOrChildren = Boolean(html || content || children);
1146
+ const canShow = hasContentOrChildren && show && Object.keys(inlineStyles).length > 0;
1147
+ return rendered ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
1135
1148
  WrapperElement,
1136
1149
  {
1137
1150
  id,
@@ -1151,8 +1164,8 @@ var Tooltip = ({
1151
1164
  style: { ...externalStyles, ...inlineStyles },
1152
1165
  ref: tooltipRef,
1153
1166
  children: [
1154
- content,
1155
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1167
+ html && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(TooltipContent_default, { content: html }) || content || children,
1168
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1156
1169
  WrapperElement,
1157
1170
  {
1158
1171
  className: (0, import_classnames2.default)("react-tooltip-arrow", styles_module_default["arrow"], classNameArrow, {
@@ -1172,13 +1185,6 @@ var Tooltip = ({
1172
1185
  };
1173
1186
  var Tooltip_default = Tooltip;
1174
1187
 
1175
- // src/components/TooltipContent/TooltipContent.tsx
1176
- var import_jsx_runtime4 = require("react/jsx-runtime");
1177
- var TooltipContent = ({ content }) => {
1178
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { dangerouslySetInnerHTML: { __html: content } });
1179
- };
1180
- var TooltipContent_default = TooltipContent;
1181
-
1182
1188
  // src/components/TooltipController/TooltipController.tsx
1183
1189
  var import_jsx_runtime5 = require("react/jsx-runtime");
1184
1190
  var TooltipController = ({
@@ -1187,7 +1193,6 @@ var TooltipController = ({
1187
1193
  anchorSelect,
1188
1194
  content,
1189
1195
  html,
1190
- render,
1191
1196
  className,
1192
1197
  classNameArrow,
1193
1198
  variant = "dark",
@@ -1196,6 +1201,7 @@ var TooltipController = ({
1196
1201
  wrapper = "div",
1197
1202
  children = null,
1198
1203
  events = ["hover"],
1204
+ openOnClick = false,
1199
1205
  positionStrategy = "absolute",
1200
1206
  middlewares,
1201
1207
  delayShow = 0,
@@ -1335,27 +1341,20 @@ var TooltipController = ({
1335
1341
  observer.disconnect();
1336
1342
  };
1337
1343
  }, [anchorRefs, providerActiveAnchor, activeAnchor, anchorId, anchorSelect]);
1338
- let renderedContent = children;
1339
- if (render) {
1340
- renderedContent = render({ content: tooltipContent != null ? tooltipContent : null, activeAnchor });
1341
- } else if (tooltipContent) {
1342
- renderedContent = tooltipContent;
1343
- }
1344
- if (tooltipHtml) {
1345
- renderedContent = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipContent_default, { content: tooltipHtml });
1346
- }
1347
1344
  const props = {
1348
1345
  id,
1349
1346
  anchorId,
1350
1347
  anchorSelect,
1351
1348
  className,
1352
1349
  classNameArrow,
1353
- content: renderedContent,
1350
+ content: tooltipContent,
1351
+ html: tooltipHtml,
1354
1352
  place: tooltipPlace,
1355
1353
  variant: tooltipVariant,
1356
1354
  offset: tooltipOffset,
1357
1355
  wrapper: tooltipWrapper,
1358
1356
  events: tooltipEvents,
1357
+ openOnClick,
1359
1358
  positionStrategy: tooltipPositionStrategy,
1360
1359
  middlewares,
1361
1360
  delayShow: tooltipDelayShow,
@@ -1373,7 +1372,7 @@ var TooltipController = ({
1373
1372
  activeAnchor,
1374
1373
  setActiveAnchor: (anchor) => setActiveAnchor(anchor)
1375
1374
  };
1376
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Tooltip_default, { ...props });
1375
+ return children ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Tooltip_default, { ...props, children }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Tooltip_default, { ...props });
1377
1376
  };
1378
1377
  var TooltipController_default = TooltipController;
1379
1378
  /*! Bundled license information: