import { Dispatch, FC, SetStateAction } from "react"; import { SlickDataView } from "slickgrid"; import { eventContextMenu } from "shared/lib/slickgrid"; import { IEditedRow, ISlickRow } from "shared/model/types"; import Styled from "../ContextMenu.style"; export const CopyRows: FC = ({ setIsOpened }) => { const table = eventContextMenu.table; const grid = table?.grid; const selectedRows = grid?.getSelectedRows(); function copyRows() { if (!grid || !table || !selectedRows) { return; } const dataView: SlickDataView = grid.getData(); const result: (ISlickRow & IEditedRow)[] = []; for (let i = 0; i < selectedRows.length; i++) { result.push(dataView.getItem(selectedRows[i])); } table.copiedRows = result; grid.setSelectedRows([]); setIsOpened(false); } if (!selectedRows?.length) return null; return ( Copy selected rows ); }; interface IProps { setIsOpened: Dispatch>; }