@sanity/ui 1.8.3 → 1.9.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/index.js CHANGED
@@ -7040,19 +7040,21 @@ const Tooltip = react.forwardRef(function Tooltip2(props, ref) {
7040
7040
  const closeDelayProp = typeof delay === "number" ? delay : (delay == null ? void 0 : delay.close) || 0;
7041
7041
  const openDelay = isInsideGroup ? delayGroupContext.openDelay : openDelayProp;
7042
7042
  const closeDelay = isInsideGroup ? delayGroupContext.closeDelay : closeDelayProp;
7043
- const handleIsOpenChange = react.useCallback(open => {
7043
+ const handleIsOpenChange = react.useCallback((open, immediate) => {
7044
7044
  if (isInsideGroup) {
7045
7045
  if (open) {
7046
- delayGroupContext.setIsGroupActive(open, openDelay);
7047
- delayGroupContext.setOpenTooltipId(tooltipId, openDelay);
7046
+ const groupedOpenDelay = immediate ? 0 : openDelay;
7047
+ delayGroupContext.setIsGroupActive(open, groupedOpenDelay);
7048
+ delayGroupContext.setOpenTooltipId(tooltipId, groupedOpenDelay);
7048
7049
  } else {
7049
7050
  const minimumGroupDeactivateDelay = 200;
7050
7051
  const groupDeactivateDelay = closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay;
7051
7052
  delayGroupContext.setIsGroupActive(open, groupDeactivateDelay);
7052
- delayGroupContext.setOpenTooltipId(null, closeDelay);
7053
+ delayGroupContext.setOpenTooltipId(null, immediate ? 0 : closeDelay);
7053
7054
  }
7054
7055
  } else {
7055
- setIsOpen(open, open ? openDelay : closeDelay);
7056
+ const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay;
7057
+ setIsOpen(open, standaloneDelay);
7056
7058
  }
7057
7059
  }, [isInsideGroup, delayGroupContext, openDelay, tooltipId, closeDelay, setIsOpen]);
7058
7060
  const handleBlur = react.useCallback(() => handleIsOpenChange(false), [handleIsOpenChange]);
@@ -7081,6 +7083,18 @@ const Tooltip = react.forwardRef(function Tooltip2(props, ref) {
7081
7083
  if (!content) handleIsOpenChange(false);
7082
7084
  }, [content, handleIsOpenChange]);
7083
7085
  react.useEffect(() => refs.setReference(referenceElement), [referenceElement, refs]);
7086
+ react.useEffect(() => {
7087
+ if (!showTooltip) return;
7088
+ function handleWindowKeyDown(event) {
7089
+ if (event.key === "Escape") {
7090
+ handleIsOpenChange(false, true);
7091
+ }
7092
+ }
7093
+ window.addEventListener("keydown", handleWindowKeyDown);
7094
+ return () => {
7095
+ window.removeEventListener("keydown", handleWindowKeyDown);
7096
+ };
7097
+ }, [handleIsOpenChange, showTooltip]);
7084
7098
  const setArrow = react.useCallback(arrowEl => {
7085
7099
  arrowRef.current = arrowEl;
7086
7100
  update();