1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-31 22:54:11 +00:00

12.0 list view support multiple selection (#6421)

* Feature - multiple selection with ctrl/shift

* update grid view context menu list in multiple selection mode

* list view support multiple selection

* improve list view selection experience

* before remove activeDirent state

* improve list view selection experience

* fix warnings
This commit is contained in:
Aries
2024-07-26 17:07:26 +08:00
committed by GitHub
parent 9aeaeed894
commit fa46b89b0d
4 changed files with 27 additions and 40 deletions

View File

@@ -1360,6 +1360,7 @@ class LibContentView extends React.Component {
return dirent;
}),
isDirentSelected: newSelectedDirentList.length > 0,
isAllDirentSelected: newSelectedDirentList.length === direntList.length,
selectedDirentList: newSelectedDirentList,
lastSelectedIndex: clickedIndex,
});
@@ -1370,6 +1371,7 @@ class LibContentView extends React.Component {
return dirent;
}),
isDirentSelected: false,
isAllDirentSelected: false,
selectedDirentList: [],
lastSelectedIndex: null,
});
@@ -1414,7 +1416,6 @@ class LibContentView extends React.Component {
let selectedDirentList = direntList.filter(item => {
return item.isSelected;
});
if (selectedDirentList.length) {
this.setState({ isDirentSelected: true });
if (selectedDirentList.length === direntList.length) {
@@ -1441,29 +1442,20 @@ class LibContentView extends React.Component {
};
onAllDirentSelected = () => {
if (this.state.isAllDirentSelected) {
let direntList = this.state.direntList.map(item => {
item.isSelected = false;
this.setState(prevState => {
const isAllDirentSelected = !prevState.isAllDirentSelected;
const direntList = prevState.direntList.map(item => {
item.isSelected = isAllDirentSelected;
return item;
});
this.setState({
isDirentSelected: false,
isAllDirentSelected: false,
return {
isDirentSelected: isAllDirentSelected,
isAllDirentSelected: isAllDirentSelected,
direntList: direntList,
selectedDirentList: [],
});
} else {
let direntList = this.state.direntList.map(item => {
item.isSelected = true;
return item;
});
this.setState({
isDirentSelected: true,
isAllDirentSelected: true,
direntList: direntList,
selectedDirentList: direntList,
});
}
selectedDirentList: isAllDirentSelected ? [...direntList] : []
};
});
};
onFileTagChanged = (dirent, direntPath) => {