diff --git a/frontend/src/css/shared-dir-view.css b/frontend/src/css/shared-dir-view.css index 4847c67ed9..df86123dc1 100644 --- a/frontend/src/css/shared-dir-view.css +++ b/frontend/src/css/shared-dir-view.css @@ -42,6 +42,7 @@ body { .sf-view-mode-btn.current-mode { background-color: #ccc; color: #fff; + box-shadow: none; } .shared-dir-op-btn { diff --git a/frontend/src/shared-dir-view.js b/frontend/src/shared-dir-view.js index 32f52c6805..2ba48045d4 100644 --- a/frontend/src/shared-dir-view.js +++ b/frontend/src/shared-dir-view.js @@ -6,7 +6,8 @@ import { Button, Dropdown, DropdownToggle, DropdownItem, UncontrolledTooltip } f import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; import Account from './components/common/account'; -import { useGoFileserver, fileServerRoot, gettext, siteRoot, mediaUrl, logoPath, logoWidth, logoHeight, siteTitle, thumbnailSizeForOriginal } from './utils/constants'; +import { useGoFileserver, fileServerRoot, gettext, siteRoot, mediaUrl, logoPath, logoWidth, logoHeight, siteTitle, + thumbnailSizeForOriginal, thumbnailDefaultSize, thumbnailSizeForGrid } from './utils/constants'; import { Utils } from './utils/utils'; import { seafileAPI } from './utils/seafile-api'; import Loading from './components/loading'; @@ -48,6 +49,8 @@ class SharedDirView extends React.Component { errorMsg: '', items: [], + currentMode: mode, + isAllItemsSelected: false, selectedItems: [], @@ -81,6 +84,11 @@ class SharedDirView extends React.Component { }); } + this.listItems(thumbnailSize); + this.getShareLinkRepoTags(); + } + + listItems = (thumbnailSize) => { seafileAPI.listSharedDir(token, relativePath, thumbnailSize).then((res) => { const items = res.data['dirent_list'].map(item => { item.isSelected = false; @@ -91,7 +99,7 @@ class SharedDirView extends React.Component { errorMsg: '', items: Utils.sortDirentsInSharedDir(items, this.state.sortBy, this.state.sortOrder) }); - this.getThumbnails(); + this.getThumbnails(thumbnailSize); }).catch((error) => { let errorMsg = Utils.getErrorMsg(error); this.setState({ @@ -99,9 +107,7 @@ class SharedDirView extends React.Component { errorMsg: errorMsg }); }); - - this.getShareLinkRepoTags(); - } + }; sortItems = (sortBy, sortOrder) => { this.setState({ @@ -111,7 +117,7 @@ class SharedDirView extends React.Component { }); }; - getThumbnails = () => { + getThumbnails = (thumbnailSize) => { let items = this.state.items.filter((item) => { return !item.is_dir && (Utils.imageCheck(item.file_name) || @@ -437,7 +443,23 @@ class SharedDirView extends React.Component { }); }; + switchMode = (mode) => { + const { currentMode } = this.state; + if (mode == currentMode) { + return; + } else { + this.setState({ + currentMode: mode, + isLoading: true + }, () => { + const thumbnailSize = mode == LIST_MODE ? thumbnailDefaultSize : thumbnailSizeForGrid; + this.listItems(thumbnailSize); + }); + } + }; + render() { + const { currentMode: mode } = this.state; const isDesktop = Utils.isDesktop(); const modeBaseClass = 'btn btn-secondary btn-icon sf-view-mode-btn'; return ( @@ -458,20 +480,20 @@ class SharedDirView extends React.Component {
{isDesktop &&
- - - +
} {canUpload && ( @@ -529,6 +551,7 @@ class SharedDirView extends React.Component { isDesktop={isDesktop} isLoading={this.state.isLoading} errorMsg={this.state.errorMsg} + mode={mode} items={this.state.items} sortBy={this.state.sortBy} sortOrder={this.state.sortOrder} @@ -616,7 +639,7 @@ class Content extends React.Component { render() { const { isDesktop, - isLoading, errorMsg, items, + isLoading, errorMsg, mode, items, sortBy, sortOrder, isAllItemsSelected } = this.props; @@ -635,6 +658,7 @@ class Content extends React.Component { return { return