diff --git a/frontend/src/components/dirent-list-view/dirent-list-item.js b/frontend/src/components/dirent-list-view/dirent-list-item.js index 0597a64b1a..dd6ecb8716 100644 --- a/frontend/src/components/dirent-list-view/dirent-list-item.js +++ b/frontend/src/components/dirent-list-view/dirent-list-item.js @@ -89,8 +89,8 @@ class DirentListItem extends React.Component { } onItemMenuShow = (e) => { - let left = e.clientX - 8*16; - let top = e.clientY + 15; + let left = e.clientX; + let top = e.clientY; let position = Object.assign({},this.state.menuPosition, {left: left, top: top}); this.setState({ menuPosition: position, diff --git a/frontend/src/components/dirent-list-view/dirent-menu.js b/frontend/src/components/dirent-list-view/dirent-menu.js index 8365ab8e22..918bab2097 100644 --- a/frontend/src/components/dirent-list-view/dirent-menu.js +++ b/frontend/src/components/dirent-list-view/dirent-menu.js @@ -24,7 +24,8 @@ class DirentMenu extends React.Component { let repo = this.props.currentRepo; let menuList = this.calculateMenuList(repo); this.setState({ - menuList: menuList + menuList: menuList, + menuHeight: menuList.length * 30, }); } @@ -98,9 +99,16 @@ class DirentMenu extends React.Component { } render() { - let position = this.props.menuPosition; - let style = {position: 'fixed', left: position.left, top: position.top, display: 'block'}; if (this.state.menuList.length) { + let position = this.props.menuPosition; + let left = position.left - (8 * 16); // 8rem width; + let top = position.top + (1 * 16); + let style = {position: 'fixed', left: left, top: top, display: 'block'}; + let screenH = window.innerHeight; + if (screenH - position.top < this.state.menuHeight) { + top = position.top - this.state.menuHeight; + style = {position: 'fixed', left: left, top: top, display: 'block'}; + } return (