deselect items if overlap between range selected value
This commit is contained in:
parent
e41b3c184f
commit
a24ace5946
|
@ -289,8 +289,12 @@ const PhotoFrame = ({
|
||||||
if (selected.collectionID !== activeCollection) {
|
if (selected.collectionID !== activeCollection) {
|
||||||
setSelected({ count: 0, collectionID: 0 });
|
setSelected({ count: 0, collectionID: 0 });
|
||||||
}
|
}
|
||||||
if (checked && typeof index !== 'undefined') {
|
if (typeof index !== 'undefined') {
|
||||||
|
if (checked) {
|
||||||
setRangeStart(index);
|
setRangeStart(index);
|
||||||
|
} else {
|
||||||
|
setRangeStart(undefined);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setSelected((selected) => ({
|
setSelected((selected) => ({
|
||||||
|
@ -311,12 +315,13 @@ const PhotoFrame = ({
|
||||||
|
|
||||||
const handleRangeSelect = (index: number) => () => {
|
const handleRangeSelect = (index: number) => () => {
|
||||||
if (rangeStart !== index) {
|
if (rangeStart !== index) {
|
||||||
|
const checked = !!selected[filteredData[index].id];
|
||||||
const direction =
|
const direction =
|
||||||
(index - rangeStart) / Math.abs(index - rangeStart);
|
(index - rangeStart) / Math.abs(index - rangeStart);
|
||||||
for (let i = rangeStart + direction; i !== index; i += direction) {
|
for (let i = rangeStart; i !== index; i += direction) {
|
||||||
handleSelect(filteredData[i].id)(true);
|
handleSelect(filteredData[i].id)(!checked);
|
||||||
}
|
}
|
||||||
handleSelect(filteredData[index].id, index)(true);
|
handleSelect(filteredData[index].id, index)(!checked);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const getThumbnail = (file: File[], index: number) => (
|
const getThumbnail = (file: File[], index: number) => (
|
||||||
|
|
Loading…
Reference in a new issue