deselect items if overlap between range selected value

This commit is contained in:
Abhinav 2022-01-06 13:07:52 +05:30
parent e41b3c184f
commit a24ace5946

View file

@ -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') {
setRangeStart(index); if (checked) {
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) => (