(
- function MyCustomColumnsPanel(props: GridColumnsPanelProps, ref)
- {
- const apiRef = useGridApiContext();
- const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
- const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
-
- const [openGroups, setOpenGroups] = useState({} as { [name: string]: boolean });
-
- const groups = ["Order", "Line Item"];
-
- const onColumnVisibilityChange = (fieldName: string) =>
- {
- /*
- if(columnVisibilityModel[fieldName] === undefined)
- {
- columnVisibilityModel[fieldName] = true;
- }
- columnVisibilityModel[fieldName] = !columnVisibilityModel[fieldName];
- setColumnVisibilityModel(JSON.parse(JSON.stringify(columnVisibilityModel)))
- */
-
- console.log(`${fieldName} = ${columnVisibilityModel[fieldName]}`);
- // columnVisibilityModel[fieldName] = Math.random() < 0.5;
- apiRef.current.setColumnVisibility(fieldName, columnVisibilityModel[fieldName] === false);
- // handleColumnVisibilityChange(JSON.parse(JSON.stringify(columnVisibilityModel)));
- };
-
- const toggleColumnGroup = (groupName: string) =>
- {
- if (openGroups[groupName] === undefined)
- {
- openGroups[groupName] = true;
- }
- openGroups[groupName] = !openGroups[groupName];
- setOpenGroups(JSON.parse(JSON.stringify(openGroups)));
- };
-
- return (
-
-
-
-
-
-
-
-
- {groups.map((groupName: string) =>
- (
- <>
- toggleColumnGroup(groupName)}
- sx={{width: "100%", justifyContent: "flex-start", fontSize: "0.875rem"}}
- disableRipple={true}
- >
- {openGroups[groupName] === false ? "expand_less" : "expand_more"}
- {groupName} fields
-
-
- {openGroups[groupName] !== false && columnsModel.map((gridColumn: any) => (
- onColumnVisibilityChange(gridColumn.field)}
- sx={{width: "100%", justifyContent: "flex-start", fontSize: "0.875rem", pl: "1.375rem"}}
- disableRipple={true}
- >
- {columnVisibilityModel[gridColumn.field] === false ? "visibility_off" : "visibility"}
- {gridColumn.headerName}
-
- ))}
- >
- ))}
-
-
-
-
-
-
-
-
- );
- }
- );
const safeToLocaleString = (n: Number): string =>
{
@@ -1853,7 +1763,23 @@ function RecordQuery({table, launchProcess}: Props): JSX.Element