// material-ui
import * as React from 'react';
import {
DataGrid, GridOverlay,
} from "@mui/x-data-grid";
import {FormattedMessage, useIntl} from "react-intl";
import {TablePagination, Typography} from '@mui/material';
// ==============================|| EVENT TABLE ||============================== //
export function FiDataGrid({ rows, columns, sx, autoHeight,
hideFooterSelectedRowCount, rowModesModel, editMode,
pageSizeOptions, filterItems, customPageSize, ...props }) {
const intl = useIntl();
const [_rows, set_rows] = React.useState([]);
const [_columns, set_columns] = React.useState([]);
const [_rowModesModel, set_rowModesModel] = React.useState({});
const [_editMode, set_editMode] = React.useState("row");
const [_pageSizeOptions, set_pageSizeOptions] = React.useState([10, 25, 50]);
const [_filterItems, set_filterItems] = React.useState([]);
const [page, setPage] = React.useState(0);
const [pageSize, setPageSize] = React.useState(10);
const [_autoHeight, set_autoHeight] = React.useState(true);
const [myHideFooterSelectedRowCount, setMyHideFooterSelectedRowCount] = React.useState(true);
const [_sx, set_sx] = React.useState({
padding: "4 2 4 2",
'& .MuiDataGrid-cell': {
borderTop: 1,
borderBottom: 1,
borderColor: "#EEE",
},
'& .MuiDataGrid-footerContainer': {
border: 1,
borderColor: "#EEE"
},
});
React.useEffect(() => {
if (sx) {
set_sx(sx);
}
if (hideFooterSelectedRowCount) {
setMyHideFooterSelectedRowCount(hideFooterSelectedRowCount);
}
if (rowModesModel) {
set_rowModesModel(rowModesModel)
}
if (rows) {
set_rows(rows)
}
if (columns) {
set_columns(columns)
}
if (pageSizeOptions) {
set_pageSizeOptions(pageSizeOptions)
}
if(autoHeight !== undefined){
set_autoHeight(autoHeight)
}
if(editMode){
set_editMode(editMode);
}
if(filterItems){
set_filterItems(filterItems);
}
if(customPageSize){
setPageSize(customPageSize);
}
}, [sx, hideFooterSelectedRowCount, rowModesModel, rows, columns, pageSizeOptions, autoHeight, editMode, filterItems, customPageSize]);
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangePageSize = (event) => {
setPageSize(parseInt(event.target.value, 10));
setPage(0);
};
const startIndex = page * pageSize;
const endIndex = (page + 1) * pageSize;
const slicedRows = _rows.slice(startIndex, endIndex);
function CustomNoRowsOverlay() {
return (
);
}
return (
(
`${from}-${to} ${intl.formatMessage({ id: "of" })} ${count}`
}
labelRowsPerPage={intl.formatMessage({ id: "rowsPerPage" }) + ":"}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangePageSize}
/>
),
}}
/>
);
}