mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-05 00:43:53 +00:00
* update move dialog and search input * update move dialog ui * clean up code * update code --------- Co-authored-by: renjie-run <rj.aiyayao@gmail.com>
171 lines
6.2 KiB
JavaScript
171 lines
6.2 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import RepoListView from './repo-list-view';
|
|
import RecentlyUsedListView from './recently-used-list-view';
|
|
import { gettext } from '../../utils/constants';
|
|
|
|
export const MODE_TYPE_MAP = {
|
|
CURRENT_AND_OTHER_REPOS: 'current_repo_and_other_repos',
|
|
ONLY_CURRENT_LIBRARY: 'only_current_library',
|
|
ONLY_ALL_REPOS: 'only_all_repos',
|
|
ONLY_OTHER_LIBRARIES: 'only_other_libraries',
|
|
RECENTLY_USED: 'recently_used',
|
|
};
|
|
|
|
const RepoListWrapper = (props) => {
|
|
const {
|
|
mode, isShowFile, fileSuffixes, currentPath, isBrowsing, browsingPath, isCurrentRepoShow, currentRepoInfo, selectedRepo,
|
|
selectedPath, isOtherRepoShow, selectedItemInfo, repoList,
|
|
} = props;
|
|
|
|
const renderRecentlyUsed = () => {
|
|
const recentlyUsedList = JSON.parse(localStorage.getItem('recently-used-list')) || [];
|
|
return (
|
|
<div className="list-view">
|
|
<RecentlyUsedListView
|
|
recentlyUsedList={recentlyUsedList}
|
|
onDirentItemClick={props.handleClickDirent}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
const onScroll = (event) => {
|
|
event.stopPropagation();
|
|
};
|
|
|
|
return (
|
|
<div className='file-chooser-scroll-wrapper' onScroll={onScroll}>
|
|
<div className="file-chooser-container user-select-none">
|
|
{mode === MODE_TYPE_MAP.CURRENT_AND_OTHER_REPOS && (
|
|
<>
|
|
<div className="list-view">
|
|
<div className="file-chooser-list-view-header">
|
|
<span className={`item-toggle sf3-font ${isCurrentRepoShow ? 'sf3-font-down' : 'sf3-font-down rotate-270 d-inline-block'}`} onClick={props.onCurrentRepoToggle}></span>
|
|
<span className="library">{gettext('Current Library')}</span>
|
|
</div>
|
|
{(isCurrentRepoShow && currentRepoInfo) &&
|
|
<RepoListView
|
|
initToShowChildren
|
|
currentRepoInfo={currentRepoInfo}
|
|
currentPath={currentPath}
|
|
selectedRepo={selectedRepo}
|
|
selectedPath={selectedPath}
|
|
isShowFile={isShowFile}
|
|
fileSuffixes={fileSuffixes}
|
|
selectedItemInfo={selectedItemInfo}
|
|
onRepoItemClick={props.handleClickRepo}
|
|
onDirentItemClick={props.handleClickDirent}
|
|
/>
|
|
}
|
|
</div>
|
|
<div className="list-view">
|
|
<div className="file-chooser-list-view-header">
|
|
<span className={`item-toggle sf3-font ${isOtherRepoShow ? 'sf3-font-down' : 'sf3-font-down rotate-270 d-inline-block'}`} onClick={props.onOtherRepoToggle}></span>
|
|
<span className="library">{gettext('Other Libraries')}</span>
|
|
</div>
|
|
{isOtherRepoShow &&
|
|
<RepoListView
|
|
initToShowChildren
|
|
repoList={repoList}
|
|
selectedRepo={selectedRepo}
|
|
selectedPath={selectedPath}
|
|
isShowFile={isShowFile}
|
|
fileSuffixes={fileSuffixes}
|
|
selectedItemInfo={selectedItemInfo}
|
|
onRepoItemClick={props.handleClickRepo}
|
|
onDirentItemClick={props.handleClickDirent}
|
|
/>
|
|
}
|
|
</div>
|
|
</>
|
|
)}
|
|
{mode === MODE_TYPE_MAP.ONLY_CURRENT_LIBRARY && (
|
|
<div className="list-view">
|
|
<RepoListView
|
|
initToShowChildren
|
|
currentRepoInfo={currentRepoInfo}
|
|
currentPath={currentPath}
|
|
selectedRepo={selectedRepo}
|
|
selectedPath={selectedPath}
|
|
isShowFile={isShowFile}
|
|
fileSuffixes={fileSuffixes}
|
|
selectedItemInfo={selectedItemInfo}
|
|
isBrowsing={isBrowsing}
|
|
browsingPath={browsingPath}
|
|
onRepoItemClick={props.handleClickRepo}
|
|
onDirentItemClick={props.handleClickDirent}
|
|
/>
|
|
</div>
|
|
)}
|
|
{mode === MODE_TYPE_MAP.ONLY_ALL_REPOS && (
|
|
<div className="file-chooser-container">
|
|
<div className="list-view">
|
|
<div className="file-chooser-list-view-header">
|
|
<span className="item-toggle sf3-font sf3-font-down"></span>
|
|
<span className="library">{gettext('Libraries')}</span>
|
|
</div>
|
|
<RepoListView
|
|
initToShowChildren={false}
|
|
repoList={repoList}
|
|
selectedRepo={selectedRepo}
|
|
selectedPath={selectedPath}
|
|
isShowFile={isShowFile}
|
|
fileSuffixes={fileSuffixes}
|
|
selectedItemInfo={selectedItemInfo}
|
|
onRepoItemClick={props.handleClickRepo}
|
|
onDirentItemClick={props.handleClickDirent}
|
|
/>
|
|
</div>
|
|
</div>
|
|
)}
|
|
{mode === MODE_TYPE_MAP.ONLY_OTHER_LIBRARIES && (
|
|
<div className="list-view">
|
|
<RepoListView
|
|
initToShowChildren={false}
|
|
repoList={repoList}
|
|
selectedRepo={selectedRepo}
|
|
selectedPath={selectedPath}
|
|
isShowFile={isShowFile}
|
|
fileSuffixes={fileSuffixes}
|
|
selectedItemInfo={selectedItemInfo}
|
|
isBrowsing={isBrowsing}
|
|
browsingPath={browsingPath}
|
|
onRepoItemClick={props.handleClickRepo}
|
|
onDirentItemClick={props.handleClickDirent}
|
|
/>
|
|
</div>
|
|
)}
|
|
{mode === MODE_TYPE_MAP.RECENTLY_USED && renderRecentlyUsed()}
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
RepoListWrapper.propTypes = {
|
|
mode: PropTypes.string,
|
|
currentPath: PropTypes.string,
|
|
isShowFile: PropTypes.bool,
|
|
fileSuffixes: PropTypes.array,
|
|
isBrowsing: PropTypes.bool,
|
|
browsingPath: PropTypes.string,
|
|
selectedItemInfo: PropTypes.object,
|
|
currentRepoInfo: PropTypes.object,
|
|
selectedRepo: PropTypes.object,
|
|
isCurrentRepoShow: PropTypes.bool,
|
|
isOtherRepoShow: PropTypes.bool,
|
|
selectedPath: PropTypes.string,
|
|
repoList: PropTypes.array,
|
|
onCurrentRepoToggle: PropTypes.func,
|
|
onOtherRepoToggle: PropTypes.func,
|
|
handleClickRepo: PropTypes.func,
|
|
handleClickDirent: PropTypes.func,
|
|
};
|
|
|
|
RepoListWrapper.defaultProps = {
|
|
isShowFile: false,
|
|
fileSuffixes: [],
|
|
};
|
|
|
|
export default RepoListWrapper;
|