diff --git a/src/core/components/DataTable/Main.js b/src/core/components/DataTable/Main.js index e9a3a37..375b313 100644 --- a/src/core/components/DataTable/Main.js +++ b/src/core/components/DataTable/Main.js @@ -1,17 +1,18 @@ -import DataTable_Paper from "./table/Paper"; -import { useMaterialReactTable } from "material-react-table"; -import { FA_DATATABLE_LOCALIZATION } from "./localization/fa/datatable"; -import { flattenArrayOfObjects } from "@/core/utils/flattenArrayOfObjects"; -import useDataTable from "@/lib/hooks/useDataTable"; -import { useCallback, useMemo, useState } from "react"; -import useRequest from "@/lib/hooks/useRequest"; -import useSWR from "swr"; -import { flattenObjectOfObjects } from "@/core/utils/flattenObjectOfObjects"; import DataTableFilterDataStructure from "@/core/utils/DataTableFilterDataStructure"; +import { flattenArrayOfObjects } from "@/core/utils/flattenArrayOfObjects"; +import { flattenObjectOfObjects } from "@/core/utils/flattenObjectOfObjects"; import isArrayEmpty from "@/core/utils/isArrayEmpty"; +import useDataTable from "@/lib/hooks/useDataTable"; +import useRequest from "@/lib/hooks/useRequest"; +import { useMaterialReactTable } from "material-react-table"; +import { useCallback, useEffect, useState } from "react"; +import useSWR from "swr"; +import { FA_DATATABLE_LOCALIZATION } from "./localization/fa/datatable"; +import DataTable_Paper from "./table/Paper"; const DataTable_Main = (props) => { const request = useRequest(); + const [rowSelection, setRowSelection] = useState({}); const { filterData, sortData, setSortData, hideData } = useDataTable(); const { need_filter, @@ -73,10 +74,21 @@ const DataTable_Main = (props) => { keepPreviousData: true, }); + useEffect(() => { + setRowSelection({}) + }, [isValidating]) + const table = useMaterialReactTable({ localization: FA_DATATABLE_LOCALIZATION, columns, data: data ?? [], + muiTableBodyRowProps: ({ row }) => ({ + onClick: () => + setRowSelection((prev) => ({ + [row.id]: true, + })), + selected: rowSelection[row.id], + }), initialState: { density: "compact", columnVisibility: flattenHideData, @@ -88,6 +100,7 @@ const DataTable_Main = (props) => { columnVisibility: flattenHideData, sorting: sortData, pagination, + rowSelection, }, muiTableHeadProps: { sx: {