UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

44 lines (43 loc) 1.58 kB
import { getNearestRow, getRowIndexFromEl } from "@1771technologies/lytenyte-shared"; export const makeRowHandleSelect = (grid) => { return (e) => { const mode = grid.state.rowSelectionMode.get(); if (mode === "none") return; const rowEl = getNearestRow(grid.state.gridId.get(), e.target); if (!rowEl) return; const row = grid.api.rowByIndex(getRowIndexFromEl(rowEl)); if (!row) return; if (mode === "single") { grid.api.rowSelect({ selected: row.id, deselect: grid.state.rowSelectedIds.get().has(row.id), }); return; } if (mode === "multiple") { // We are doing an additive select if (e.shiftKey) { const isDeselect = grid.internal.rowSelectionLastWasDeselect.get(); grid.api.rowSelect({ selected: row.id, deselect: isDeselect, selectBetweenPivot: true, selectChildren: grid.state.rowSelectChildren.get(), }); } else { const isDeselect = grid.state.rowSelectedIds.get().has(row.id); grid.api.rowSelect({ selected: row.id, deselect: isDeselect, pivot: row.id, selectBetweenPivot: false, selectChildren: grid.state.rowSelectChildren.get(), }); } } }; };