From 8ee3550e274a2a65412d56b3942bb51d751c8ba3 Mon Sep 17 00:00:00 2001 From: awu0403 <76416779+awu0403@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:50:11 +0800 Subject: [PATCH] optimize import page ui (#8307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * optimize import page ui * update * optimize * optimize --------- Co-authored-by: 孙永强 <11704063+s-yongqiang@user.noreply.gitee.com> Co-authored-by: Michael An <1822852997@qq.com> --- frontend/src/pages/wiki2/css/wiki-nav.css | 1 + .../wiki2/wiki-nav/pages/page-dropdownmenu.js | 44 ++++++++++++++++-- frontend/src/pages/wiki2/wiki-nav/wiki-nav.js | 45 ++++++++++++++++--- 3 files changed, 81 insertions(+), 9 deletions(-) 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} + > + +