@tapizlabs/ui 0.2.25 → 0.2.26
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 +27 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2777,6 +2777,31 @@ function Drawer({ open, onClose, title, description, children, footer, side = "r
|
|
|
2777
2777
|
// src/components/overlays/SidePanel.tsx
|
|
2778
2778
|
import { useEffect as useEffect4, useId as useId4, useState as useState10 } from "react";
|
|
2779
2779
|
import { createPortal as createPortal5 } from "react-dom";
|
|
2780
|
+
|
|
2781
|
+
// src/components/overlays/scrollLock.ts
|
|
2782
|
+
var lockCount = 0;
|
|
2783
|
+
var originalHtmlOverflow = "";
|
|
2784
|
+
var originalBodyOverflow = "";
|
|
2785
|
+
function acquireBodyScrollLock() {
|
|
2786
|
+
if (lockCount === 0) {
|
|
2787
|
+
originalHtmlOverflow = document.documentElement.style.overflow;
|
|
2788
|
+
originalBodyOverflow = document.body.style.overflow;
|
|
2789
|
+
document.documentElement.style.overflow = "hidden";
|
|
2790
|
+
document.body.style.overflow = "hidden";
|
|
2791
|
+
}
|
|
2792
|
+
lockCount += 1;
|
|
2793
|
+
return () => {
|
|
2794
|
+
lockCount = Math.max(0, lockCount - 1);
|
|
2795
|
+
if (lockCount === 0) {
|
|
2796
|
+
document.documentElement.style.overflow = originalHtmlOverflow;
|
|
2797
|
+
document.body.style.overflow = originalBodyOverflow;
|
|
2798
|
+
originalHtmlOverflow = "";
|
|
2799
|
+
originalBodyOverflow = "";
|
|
2800
|
+
}
|
|
2801
|
+
};
|
|
2802
|
+
}
|
|
2803
|
+
|
|
2804
|
+
// src/components/overlays/SidePanel.tsx
|
|
2780
2805
|
import { jsx as jsx66, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
2781
2806
|
var widthRem = {
|
|
2782
2807
|
md: 28,
|
|
@@ -2835,17 +2860,13 @@ function SidePanel({
|
|
|
2835
2860
|
}, []);
|
|
2836
2861
|
useEffect4(() => {
|
|
2837
2862
|
if (!isOpen) return;
|
|
2838
|
-
const
|
|
2839
|
-
const body = document.body.style.overflow;
|
|
2840
|
-
document.documentElement.style.overflow = "hidden";
|
|
2841
|
-
document.body.style.overflow = "hidden";
|
|
2863
|
+
const releaseBodyScrollLock = acquireBodyScrollLock();
|
|
2842
2864
|
const onKeyDown = (e) => {
|
|
2843
2865
|
if (e.key === "Escape") onClose();
|
|
2844
2866
|
};
|
|
2845
2867
|
document.addEventListener("keydown", onKeyDown);
|
|
2846
2868
|
return () => {
|
|
2847
|
-
|
|
2848
|
-
document.body.style.overflow = body;
|
|
2869
|
+
releaseBodyScrollLock();
|
|
2849
2870
|
document.removeEventListener("keydown", onKeyDown);
|
|
2850
2871
|
};
|
|
2851
2872
|
}, [isOpen, onClose]);
|