Skip to content

Instantly share code, notes, and snippets.

@Restoration
Last active June 15, 2023 07:13
Show Gist options
  • Save Restoration/f61cbdc46c566e70dd4cc15ec7c27842 to your computer and use it in GitHub Desktop.
Save Restoration/f61cbdc46c566e70dd4cc15ec7c27842 to your computer and use it in GitHub Desktop.
import React, { useState } from "react";
import { DataGrid, GridColDef, GridRowsProp, GridColumns } from "@mui/x-data-grid";
interface PinnedColumnsDataGridProps {
rows: GridRowsProp;
columns: GridColDef[];
columnVisibilityModel: GridColumns;
onColumnVisibilityModelChange: (model: GridColumns) => void;
}
const PinnedColumnsDataGrid: React.FC<PinnedColumnsDataGridProps> = ({
rows,
columns,
columnVisibilityModel,
onColumnVisibilityModelChange
}) => {
return (
<div style={{ height: 400, width: "100%" }}>
<DataGrid
rows={rows}
columns={columns}
columnVisibilityModel={columnVisibilityModel}
onColumnVisibilityModelChange={onColumnVisibilityModelChange}
/>
</div>
);
};
interface ParentComponentProps {
rows: GridRowsProp;
columns: GridColDef[];
}
const ParentComponent: React.FC<ParentComponentProps> = ({ rows, columns }) => {
const [columnVisibilityModel, setColumnVisibilityModel] = useState<GridColumns>(columns);
const handleColumnVisibilityModelChange = (model: GridColumns) => {
setColumnVisibilityModel(model);
};
return (
<div>
<PinnedColumnsDataGrid
rows={rows}
columns={columns}
columnVisibilityModel={columnVisibilityModel}
onColumnVisibilityModelChange={handleColumnVisibilityModelChange}
/>
<PinnedColumnsDataGrid
rows={rows}
columns={columns}
columnVisibilityModel={columnVisibilityModel}
onColumnVisibilityModelChange={handleColumnVisibilityModelChange}
/>
</div>
);
};
export default ParentComponent;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment