Preserve row order of selected context menu items

This commit is contained in:
jeffvli 2022-12-28 19:50:35 -08:00
parent 131e3b3c65
commit 28c4646708
2 changed files with 9 additions and 5 deletions

View file

@ -40,6 +40,7 @@ import { AnimatePresence } from 'framer-motion';
import debounce from 'lodash/debounce';
import { openContextMenu } from '/@/renderer/features/context-menu';
import { ALBUM_CONTEXT_MENU_ITEMS } from '/@/renderer/features/context-menu/context-menu-items';
import sortBy from 'lodash/sortBy';
interface AlbumListContentProps {
gridRef: MutableRefObject<VirtualInfiniteGridRef | null>;
@ -276,8 +277,9 @@ export const AlbumListContent = ({ gridRef, tableRef }: AlbumListContentProps) =
const clickEvent = e.event as MouseEvent;
clickEvent.preventDefault();
let selectedRows = e.api.getSelectedRows();
const selectedIds = selectedRows.map((row) => row.id);
const selectedNodes = e.api.getSelectedNodes();
const selectedIds = selectedNodes.map((node) => node.data.id);
let selectedRows = sortBy(selectedNodes, ['rowIndex']).map((node) => node.data);
if (!selectedIds.includes(e.data.id)) {
e.api.deselectAll();

View file

@ -31,6 +31,7 @@ import { AnimatePresence } from 'framer-motion';
import debounce from 'lodash/debounce';
import { openContextMenu } from '/@/renderer/features/context-menu';
import { SONG_CONTEXT_MENU_ITEMS } from '/@/renderer/features/context-menu/context-menu-items';
import sortBy from 'lodash/sortBy';
interface SongListContentProps {
tableRef: MutableRefObject<AgGridReactType | null>;
@ -160,10 +161,11 @@ export const SongListContent = ({ tableRef }: SongListContentProps) => {
const clickEvent = e.event as MouseEvent;
clickEvent.preventDefault();
let selectedRows = e.api.getSelectedRows();
const selectedUniqueIds = selectedRows.map((row) => row.uniqueId);
const selectedNodes = e.api.getSelectedNodes();
const selectedIds = selectedNodes.map((node) => node.data.id);
let selectedRows = sortBy(selectedNodes, ['rowIndex']).map((node) => node.data);
if (!selectedUniqueIds.includes(e.data.uniqueId)) {
if (!selectedIds.includes(e.data.id)) {
e.api.deselectAll();
e.node.setSelected(true);
selectedRows = [e.data];