@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.esm.js CHANGED
@@ -7027,19 +7027,21 @@ const Tooltip = forwardRef(function Tooltip2(props, ref) {
7027
7027
  const closeDelayProp = typeof delay === "number" ? delay : (delay == null ? void 0 : delay.close) || 0;
7028
7028
  const openDelay = isInsideGroup ? delayGroupContext.openDelay : openDelayProp;
7029
7029
  const closeDelay = isInsideGroup ? delayGroupContext.closeDelay : closeDelayProp;
7030
- const handleIsOpenChange = useCallback(open => {
7030
+ const handleIsOpenChange = useCallback((open, immediate) => {
7031
7031
  if (isInsideGroup) {
7032
7032
  if (open) {
7033
- delayGroupContext.setIsGroupActive(open, openDelay);
7034
- delayGroupContext.setOpenTooltipId(tooltipId, openDelay);
7033
+ const groupedOpenDelay = immediate ? 0 : openDelay;
7034
+ delayGroupContext.setIsGroupActive(open, groupedOpenDelay);
7035
+ delayGroupContext.setOpenTooltipId(tooltipId, groupedOpenDelay);
7035
7036
  } else {
7036
7037
  const minimumGroupDeactivateDelay = 200;
7037
7038
  const groupDeactivateDelay = closeDelay > minimumGroupDeactivateDelay ? closeDelay : minimumGroupDeactivateDelay;
7038
7039
  delayGroupContext.setIsGroupActive(open, groupDeactivateDelay);
7039
- delayGroupContext.setOpenTooltipId(null, closeDelay);
7040
+ delayGroupContext.setOpenTooltipId(null, immediate ? 0 : closeDelay);
7040
7041
  }
7041
7042
  } else {
7042
- setIsOpen(open, open ? openDelay : closeDelay);
7043
+ const standaloneDelay = immediate ? 0 : open ? openDelay : closeDelay;
7044
+ setIsOpen(open, standaloneDelay);
7043
7045
  }
7044
7046
  }, [isInsideGroup, delayGroupContext, openDelay, tooltipId, closeDelay, setIsOpen]);
7045
7047
  const handleBlur = useCallback(() => handleIsOpenChange(false), [handleIsOpenChange]);
@@ -7068,6 +7070,18 @@ const Tooltip = forwardRef(function Tooltip2(props, ref) {
7068
7070
  if (!content) handleIsOpenChange(false);
7069
7071
  }, [content, handleIsOpenChange]);
7070
7072
  useEffect(() => refs.setReference(referenceElement), [referenceElement, refs]);
7073
+ useEffect(() => {
7074
+ if (!showTooltip) return;
7075
+ function handleWindowKeyDown(event) {
7076
+ if (event.key === "Escape") {
7077
+ handleIsOpenChange(false, true);
7078
+ }
7079
+ }
7080
+ window.addEventListener("keydown", handleWindowKeyDown);
7081
+ return () => {
7082
+ window.removeEventListener("keydown", handleWindowKeyDown);
7083
+ };
7084
+ }, [handleIsOpenChange, showTooltip]);
7071
7085
  const setArrow = useCallback(arrowEl => {
7072
7086
  arrowRef.current = arrowEl;
7073
7087
  update();