@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
49 lines (48 loc) • 1.38 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import * as React from 'react';
export const Drawer = (props) => {
const [isOpen, setIsOpen] = React.useState(() => {
return props.open;
});
const [show, setShow] = React.useState(props.open);
React.useEffect(() => {
if (!isOpen && props.open) {
setShow(true);
requestAnimationFrame(() => {
setIsOpen(true);
});
}
if (isOpen && !props.open) {
setIsOpen(false);
}
}, [props.open]);
const handleOnKeyDown = React.useCallback((event) => {
if (event.key === 'Escape') {
props.onOpenChange?.(false);
}
}, []);
const handletransitionEnd = () => {
if (!isOpen) {
setShow(false);
}
};
if (!show) {
return null;
}
const style = {
position: 'fixed',
top: 0,
right: 0,
zIndex: 1000,
transition: 'transform 0.3s ease-in-out, opacity 0.3s ease-in-out',
};
if (isOpen) {
style.transform = 'translateY(0)';
style.opacity = 1;
}
else {
style.transform = 'translateY(-120%)';
style.opacity = 0;
}
return (_jsx("div", { onKeyDown: handleOnKeyDown, style: style, onTransitionEnd: handletransitionEnd, children: props.children }));
};