diff --git a/services/web/frontend/js/features/file-tree/components/file-tree-context-menu.tsx b/services/web/frontend/js/features/file-tree/components/file-tree-context-menu.tsx index 83288031c8..5b38affd14 100644 --- a/services/web/frontend/js/features/file-tree/components/file-tree-context-menu.tsx +++ b/services/web/frontend/js/features/file-tree/components/file-tree-context-menu.tsx @@ -8,6 +8,7 @@ import { useFileTreeData } from '@/shared/context/file-tree-data-context' import { useFileTreeMainContext } from '../contexts/file-tree-main' import FileTreeItemMenuItems from './file-tree-item/file-tree-item-menu-items' +import classNames from 'classnames' function FileTreeContextMenu() { const { fileTreeReadOnly } = useFileTreeData() @@ -76,21 +77,27 @@ function FileTreeContextMenu() { if (!contextMenuCoords || fileTreeReadOnly) return null + const dropDirection = + document.body.offsetHeight / contextMenuCoords.top < 2 && + document.body.offsetHeight - contextMenuCoords.top < 250 + ? 'up' + : 'down' + return ReactDOM.createPortal(
diff --git a/services/web/frontend/stylesheets/pages/editor/file-tree.scss b/services/web/frontend/stylesheets/pages/editor/file-tree.scss index a2d57dfe20..cbdfb9f6c7 100644 --- a/services/web/frontend/stylesheets/pages/editor/file-tree.scss +++ b/services/web/frontend/stylesheets/pages/editor/file-tree.scss @@ -210,6 +210,11 @@ z-index: 100; } +.context-menu-upwards { + top: auto; + bottom: 100%; +} + .editor-sidebar { background-color: var(--file-tree-bg); display: flex;