From d309f8f1b021219ac708f99dbe09452c33a4356d Mon Sep 17 00:00:00 2001 From: llj Date: Thu, 26 Sep 2024 12:25:59 +0800 Subject: [PATCH] [wiki] redesigned it for mobile (#6850) --- frontend/src/pages/wiki2/index.js | 4 ++-- frontend/src/pages/wiki2/main-panel.js | 14 +++++++----- frontend/src/pages/wiki2/side-panel.css | 22 +++++++++++++------ frontend/src/pages/wiki2/side-panel.js | 12 ++++++---- frontend/src/pages/wiki2/top-nav/index.css | 12 ++++++---- frontend/src/pages/wiki2/top-nav/index.js | 8 +++---- .../pages/wiki2/wiki-nav/pages/page-item.js | 2 +- .../wiki2/wiki-right-header/page-cover.js | 6 +++-- .../wiki2/wiki-right-header/page-icon.js | 4 +++- .../wiki2/wiki-right-header/page-title.css | 8 ++++++- .../wiki2/wiki-right-header/page-title.js | 4 +++- frontend/src/pages/wiki2/wiki.css | 2 +- 12 files changed, 65 insertions(+), 33 deletions(-) diff --git a/frontend/src/pages/wiki2/index.js b/frontend/src/pages/wiki2/index.js index a8e43e3a80..7b6049ee76 100644 --- a/frontend/src/pages/wiki2/index.js +++ b/frontend/src/pages/wiki2/index.js @@ -253,7 +253,6 @@ class Wiki extends Component { - + ); diff --git a/frontend/src/pages/wiki2/main-panel.js b/frontend/src/pages/wiki2/main-panel.js index e37b6e3ad9..d24b92f545 100644 --- a/frontend/src/pages/wiki2/main-panel.js +++ b/frontend/src/pages/wiki2/main-panel.js @@ -22,6 +22,7 @@ const propTypes = { isUpdateBySide: PropTypes.bool, onUpdatePage: PropTypes.func, onAddWikiPage: PropTypes.func, + onCloseSide: PropTypes.func.isRequired }; class MainPanel extends Component { @@ -64,11 +65,14 @@ class MainPanel extends Component { return (
- +
+ + +
{username && wikiPermission !== 'public' && }
diff --git a/frontend/src/pages/wiki2/side-panel.css b/frontend/src/pages/wiki2/side-panel.css index bc53802b47..0d90cb47f6 100644 --- a/frontend/src/pages/wiki2/side-panel.css +++ b/frontend/src/pages/wiki2/side-panel.css @@ -1,3 +1,18 @@ +@media (max-width: 767px) { + .wiki2-side-panel { + position:fixed; + top: 0; + left: -300px; + z-index: 1031; + width: 300px; + max-width: calc(100% - 40px); + height:100%; + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + transition: all 0.3s ease; + } +} + .wiki2-side-panel { width: 300px; display: flex; @@ -21,7 +36,6 @@ } .wiki2-side-panel .wiki2-side-panel-top .add-new-page { - padding: 0 4px; cursor: pointer; border-radius: 4px; } @@ -53,9 +67,3 @@ margin-top: 14px; padding-left: 0; } - -@media (max-width: 767px) { - .wiki2-side-panel { - z-index: 1051; - } -} diff --git a/frontend/src/pages/wiki2/side-panel.js b/frontend/src/pages/wiki2/side-panel.js index 078f0f60af..15ed70b6a9 100644 --- a/frontend/src/pages/wiki2/side-panel.js +++ b/frontend/src/pages/wiki2/side-panel.js @@ -157,15 +157,19 @@ class SidePanel extends Component { render() { const { isLoading } = this.props; + const isDesktop = Utils.isDesktop(); return (

{repoName}

- {wikiPermission !== 'public' && + {isDesktop && wikiPermission !== 'public' &&
-
- -
+ + {gettext('New page')} diff --git a/frontend/src/pages/wiki2/top-nav/index.css b/frontend/src/pages/wiki2/top-nav/index.css index bfbcb2c24b..5176ad2b0d 100644 --- a/frontend/src/pages/wiki2/top-nav/index.css +++ b/frontend/src/pages/wiki2/top-nav/index.css @@ -1,11 +1,15 @@ .wiki2-top-nav .wiki2-top-nav-item { - align-items: center; padding: 2px 6px; - max-width: 300px; + max-width: 150px; +} +@media (min-width: 768px) { + .wiki2-top-nav .wiki2-top-nav-item { + max-width: 300px; + } } -.wiki2-top-nav>div:not(.wiki2-top-nav-item) { - margin: 2px 2px 0 2px; +.wiki2-top-nav .item-split { + margin: 0 2px; } .wiki2-top-nav .wiki2-top-nav-item:hover { diff --git a/frontend/src/pages/wiki2/top-nav/index.js b/frontend/src/pages/wiki2/top-nav/index.js index ed196c5174..62110c4f74 100644 --- a/frontend/src/pages/wiki2/top-nav/index.js +++ b/frontend/src/pages/wiki2/top-nav/index.js @@ -44,15 +44,15 @@ function WikiTopNav({ config, currentPageId }) { const paths = getPaths(navigation, currentPageId, pages); return ( -
+
{paths.map((item, index) => { return ( -
+
{item.icon ? : } - {item.name} + {item.name}
- {index !== paths.length - 1 &&
/
} + {index !== paths.length - 1 && /} ); })} diff --git a/frontend/src/pages/wiki2/wiki-nav/pages/page-item.js b/frontend/src/pages/wiki2/wiki-nav/pages/page-item.js index faa90da159..883d79190c 100644 --- a/frontend/src/pages/wiki2/wiki-nav/pages/page-item.js +++ b/frontend/src/pages/wiki2/wiki-nav/pages/page-item.js @@ -224,7 +224,7 @@ class PageItem extends Component { )}
-
+
{isEditMode && wikiPermission !== 'public' && <>
diff --git a/frontend/src/pages/wiki2/wiki-right-header/page-cover.js b/frontend/src/pages/wiki2/wiki-right-header/page-cover.js index 4caf260bd3..29f7b4a0d4 100644 --- a/frontend/src/pages/wiki2/wiki-right-header/page-cover.js +++ b/frontend/src/pages/wiki2/wiki-right-header/page-cover.js @@ -2,6 +2,7 @@ import React, { useCallback, useRef, useState } from 'react'; import { UncontrolledPopover } from 'reactstrap'; import classNames from 'classnames'; import PropTypes from 'prop-types'; +import { Utils } from '../../../utils/utils'; import { gettext, wikiPermission } from '../../../utils/constants'; import { WIKI_COVER_LIST } from '../constant'; @@ -11,6 +12,7 @@ function PageCover({ currentPageConfig, onUpdatePage }) { const [isShowCoverController, setIsShowCoverController] = useState(false); const popoverRef = useRef(null); + const isDesktop = Utils.isDesktop(); const onMouseEnter = useCallback(() => { setIsShowCoverController(true); @@ -51,13 +53,13 @@ function PageCover({ currentPageConfig, onUpdatePage }) { <>
{gettext('Cover')} -
+
{wikiPermission !== 'public' &&
{gettext('Change cover')}
}
- {wikiPermission !== 'public' && + {isDesktop && wikiPermission !== 'public' && { const popoverRef = useRef(null); + const isDesktop = Utils.isDesktop(); const handleSetIcon = useCallback((emoji) => { onUpdatePage(currentPageConfig.id, { name: currentPageConfig.name, icon: emoji }); @@ -27,7 +29,7 @@ const PageIcon = ({ currentPageConfig, onUpdatePage }) => { {currentPageConfig.icon}
- {wikiPermission !== 'public' && + {isDesktop && wikiPermission !== 'public' && { const [isShowController, setIsShowController] = useState(false); + const isDesktop = Utils.isDesktop(); const onMouseEnter = useCallback(() => { setIsShowController(true); @@ -55,7 +57,7 @@ const PageTitle = ({ isUpdateBySide, currentPageConfig, onUpdatePage }) => { {currentPageConfig.icon && ( )} -
+
{!currentPageConfig.icon && wikiPermission !== 'public' && (
diff --git a/frontend/src/pages/wiki2/wiki.css b/frontend/src/pages/wiki2/wiki.css index 380bc96897..f0022b6642 100644 --- a/frontend/src/pages/wiki2/wiki.css +++ b/frontend/src/pages/wiki2/wiki.css @@ -3,7 +3,7 @@ body { } .wiki2-main-panel { - width: calc(100% - 300px); + flex: calc(100% - 300px); display: flex; flex-direction: column; min-height: 0;