bug fixes
This commit is contained in:
@@ -62,6 +62,22 @@ const Drawer: React.FC<DrawerProps> = ({
|
||||
useEffect(() => {
|
||||
if (!opened || !contentRef.current) return;
|
||||
|
||||
const updateDrawerHeight = () => {
|
||||
if (contentRef.current) {
|
||||
const drawerContent = contentRef.current;
|
||||
const visualViewport = window.visualViewport;
|
||||
|
||||
if (visualViewport) {
|
||||
const availableHeight = visualViewport.height;
|
||||
const maxDrawerHeight = Math.min(availableHeight * 0.75, window.innerHeight * 0.75);
|
||||
|
||||
drawerContent.style.maxHeight = `${maxDrawerHeight}px`;
|
||||
} else {
|
||||
drawerContent.style.maxHeight = '75vh';
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const resizeObserver = new ResizeObserver(() => {
|
||||
if (contentRef.current) {
|
||||
const drawerContent = contentRef.current.closest('[data-vaul-drawer-wrapper]');
|
||||
@@ -72,15 +88,24 @@ const Drawer: React.FC<DrawerProps> = ({
|
||||
}
|
||||
});
|
||||
|
||||
updateDrawerHeight();
|
||||
|
||||
if (window.visualViewport) {
|
||||
window.visualViewport.addEventListener('resize', updateDrawerHeight);
|
||||
}
|
||||
|
||||
resizeObserver.observe(contentRef.current);
|
||||
|
||||
return () => {
|
||||
resizeObserver.disconnect();
|
||||
if (window.visualViewport) {
|
||||
window.visualViewport.removeEventListener('resize', updateDrawerHeight);
|
||||
}
|
||||
};
|
||||
}, [opened, children]);
|
||||
|
||||
return (
|
||||
<VaulDrawer.Root open={opened} onOpenChange={onChange}>
|
||||
<VaulDrawer.Root repositionInputs={false} open={opened} onOpenChange={onChange}>
|
||||
<VaulDrawer.Portal>
|
||||
<VaulDrawer.Overlay className={styles.drawerOverlay} />
|
||||
<VaulDrawer.Content className={styles.drawerContent} aria-describedby="drawer" ref={contentRef}>
|
||||
|
||||
@@ -23,14 +23,14 @@ const Sheet: React.FC<SheetProps> = ({ title, children, opened, onChange }) => {
|
||||
onChange={onChange}
|
||||
onClose={handleClose}
|
||||
>
|
||||
<ScrollArea
|
||||
style={{ flex: 1 }}
|
||||
<ScrollArea.Autosize
|
||||
style={{ flex: 1, maxHeight: '75dvh' }}
|
||||
scrollbarSize={8}
|
||||
scrollbars="y"
|
||||
type="scroll"
|
||||
>
|
||||
{children}
|
||||
</ScrollArea>
|
||||
</ScrollArea.Autosize>
|
||||
</SheetComponent>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -13,11 +13,10 @@
|
||||
margin-top: 24px;
|
||||
height: auto !important;
|
||||
min-height: fit-content;
|
||||
max-height: 100dvh;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
outline: none;
|
||||
transition: height 0.2s ease-out;
|
||||
transition: height 0.2s ease-out, max-height 0.2s ease-out;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user