diff --git a/frontend/src/pages/wiki2/css/wiki-nav.css b/frontend/src/pages/wiki2/css/wiki-nav.css index e0897913d1..5cafbac768 100644 --- a/frontend/src/pages/wiki2/css/wiki-nav.css +++ b/frontend/src/pages/wiki2/css/wiki-nav.css @@ -223,6 +223,7 @@ .wiki-nav .page-operation-dropdown .page-operation-dropdown-menu { margin-left: -15px; margin-top: 4px; + overflow-y: visible !important; } .page-operation-dropdown-menu .divider { diff --git a/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js b/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js index c01a0a52a3..3b87849610 100644 --- a/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js +++ b/frontend/src/pages/wiki2/wiki-nav/pages/page-dropdownmenu.js @@ -23,6 +23,9 @@ export default class PageDropdownMenu extends Component { constructor(props) { super(props); this.pageNameMap = this.calculateNameMap(); + this.state = { + isImportPageMenuShown: false, + }; } calculateNameMap = () => { @@ -33,6 +36,20 @@ export default class PageDropdownMenu extends Component { }, {}); }; + showImportPageMenu = (e) => { + if (e) e.stopPropagation(); + if (!this.state.isImportPageMenuShown) { + this.setState({ isImportPageMenuShown: true }); + } + }; + + hideImportPageMenu = (e) => { + if (e) e.stopPropagation(); + if (this.state.isImportPageMenuShown) { + this.setState({ isImportPageMenuShown: false }); + } + }; + onDropdownToggle = (evt) => { evt.stopPropagation(); this.props.toggle(); @@ -61,11 +78,11 @@ export default class PageDropdownMenu extends Component { this.props.duplicatePage({ from_page_id: page.id }, () => {}, this.duplicatePageFailure); }; - importPage = () => { + importPage = (suffix) => { const { page } = this.props; const fileInput = document.createElement('input'); fileInput.type = 'file'; - fileInput.accept = '.docx,.md'; + fileInput.accept = suffix; fileInput.style.display = 'none'; fileInput.addEventListener('change', (e) => { @@ -148,7 +165,28 @@ export default class PageDropdownMenu extends Component { {this.renderItem(this.addPageBelow, 'enlarge', gettext('Add page below'))} {this.renderItem(this.duplicatePage, 'copy1', gettext('Duplicate page'))} {canDeletePage && this.renderItem(this.onDeletePage, 'delete1', gettext('Delete page'))} - {this.renderItem(this.importPage, 'import-sdoc', gettext('Import page'))} + {}} + onMouseEnter={this.showImportPageMenu} + onMouseLeave={this.hideImportPageMenu} + > + +