@adsgency_npm/adsgency-ads-ui 0.1.0-alpha.17 → 0.1.0-alpha.18

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.cjs CHANGED
@@ -1862,6 +1862,7 @@ var import_jsx_runtime21 = require("react/jsx-runtime");
1862
1862
  var NestedDismissableLayerContext = React19.createContext(null);
1863
1863
  function useNestedDismissableLayerCoordinator() {
1864
1864
  const activeLayersRef = React19.useRef(/* @__PURE__ */ new Map());
1865
+ const pointerInteractionHadNestedLayerRef = React19.useRef(false);
1865
1866
  const registerNestedLayer = React19.useCallback(
1866
1867
  (id, dismiss) => {
1867
1868
  const activeLayers = activeLayersRef.current;
@@ -1879,17 +1880,50 @@ function useNestedDismissableLayerCoordinator() {
1879
1880
  () => activeLayersRef.current.size > 0,
1880
1881
  []
1881
1882
  );
1883
+ const hadActiveNestedLayerAtPointerDown = React19.useCallback(
1884
+ () => pointerInteractionHadNestedLayerRef.current,
1885
+ []
1886
+ );
1882
1887
  const dismissTopNestedLayer = React19.useCallback(() => {
1883
1888
  const activeLayers = [...activeLayersRef.current.values()];
1884
1889
  activeLayers.at(-1)?.();
1885
1890
  }, []);
1891
+ React19.useEffect(() => {
1892
+ const ownerDocument = globalThis.document;
1893
+ if (!ownerDocument) return;
1894
+ const handlePointerDown = () => {
1895
+ pointerInteractionHadNestedLayerRef.current = activeLayersRef.current.size > 0;
1896
+ };
1897
+ const handleClick = () => {
1898
+ queueMicrotask(() => {
1899
+ pointerInteractionHadNestedLayerRef.current = false;
1900
+ });
1901
+ };
1902
+ const handlePointerCancel = () => {
1903
+ pointerInteractionHadNestedLayerRef.current = false;
1904
+ };
1905
+ ownerDocument.addEventListener("pointerdown", handlePointerDown, true);
1906
+ ownerDocument.addEventListener("click", handleClick);
1907
+ ownerDocument.addEventListener("pointercancel", handlePointerCancel);
1908
+ return () => {
1909
+ ownerDocument.removeEventListener("pointerdown", handlePointerDown, true);
1910
+ ownerDocument.removeEventListener("click", handleClick);
1911
+ ownerDocument.removeEventListener("pointercancel", handlePointerCancel);
1912
+ };
1913
+ }, []);
1886
1914
  return React19.useMemo(
1887
1915
  () => ({
1888
1916
  dismissTopNestedLayer,
1889
1917
  hasActiveNestedLayer,
1918
+ hadActiveNestedLayerAtPointerDown,
1890
1919
  registerNestedLayer
1891
1920
  }),
1892
- [dismissTopNestedLayer, hasActiveNestedLayer, registerNestedLayer]
1921
+ [
1922
+ dismissTopNestedLayer,
1923
+ hadActiveNestedLayerAtPointerDown,
1924
+ hasActiveNestedLayer,
1925
+ registerNestedLayer
1926
+ ]
1893
1927
  );
1894
1928
  }
1895
1929
  function NestedDismissableLayerProvider({
@@ -1927,12 +1961,16 @@ var PopoverContentImpl = React20.forwardRef(
1927
1961
  (event) => {
1928
1962
  onPointerDownOutside?.(event);
1929
1963
  if (event.defaultPrevented) return;
1930
- if (!coordinator.hasActiveNestedLayer()) {
1964
+ const hasActiveNestedLayer = coordinator.hasActiveNestedLayer();
1965
+ const shouldShieldParent = hasActiveNestedLayer || coordinator.hadActiveNestedLayerAtPointerDown();
1966
+ if (!shouldShieldParent) {
1931
1967
  shieldNextFocusOutsideRef.current = false;
1932
1968
  return;
1933
1969
  }
1934
1970
  shieldNextFocusOutsideRef.current = true;
1935
- coordinator.dismissTopNestedLayer();
1971
+ if (hasActiveNestedLayer) {
1972
+ coordinator.dismissTopNestedLayer();
1973
+ }
1936
1974
  event.preventDefault();
1937
1975
  },
1938
1976
  [coordinator, onPointerDownOutside]
@@ -1947,8 +1985,12 @@ var PopoverContentImpl = React20.forwardRef(
1947
1985
  event.preventDefault();
1948
1986
  return;
1949
1987
  }
1950
- if (!coordinator.hasActiveNestedLayer()) return;
1951
- coordinator.dismissTopNestedLayer();
1988
+ const hasActiveNestedLayer = coordinator.hasActiveNestedLayer();
1989
+ const shouldShieldParent = hasActiveNestedLayer || coordinator.hadActiveNestedLayerAtPointerDown();
1990
+ if (!shouldShieldParent) return;
1991
+ if (hasActiveNestedLayer) {
1992
+ coordinator.dismissTopNestedLayer();
1993
+ }
1952
1994
  event.preventDefault();
1953
1995
  },
1954
1996
  [coordinator, onFocusOutside]