Add prop to force transparent grid header
This commit is contained in:
parent
d58ba92cbd
commit
b4e9f48667
2 changed files with 25 additions and 7 deletions
|
@ -328,6 +328,7 @@ interface VirtualTableProps extends AgGridReactProps {
|
||||||
autoFitColumns?: boolean;
|
autoFitColumns?: boolean;
|
||||||
autoHeight?: boolean;
|
autoHeight?: boolean;
|
||||||
deselectOnClickOutside?: boolean;
|
deselectOnClickOutside?: boolean;
|
||||||
|
transparentHeader?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const VirtualTable = forwardRef(
|
export const VirtualTable = forwardRef(
|
||||||
|
@ -336,6 +337,7 @@ export const VirtualTable = forwardRef(
|
||||||
autoFitColumns,
|
autoFitColumns,
|
||||||
deselectOnClickOutside,
|
deselectOnClickOutside,
|
||||||
autoHeight,
|
autoHeight,
|
||||||
|
transparentHeader,
|
||||||
onColumnMoved,
|
onColumnMoved,
|
||||||
onNewColumnsLoaded,
|
onNewColumnsLoaded,
|
||||||
onGridReady,
|
onGridReady,
|
||||||
|
@ -349,7 +351,9 @@ export const VirtualTable = forwardRef(
|
||||||
const mergedRef = useMergedRef(ref, tableRef);
|
const mergedRef = useMergedRef(ref, tableRef);
|
||||||
|
|
||||||
const deselectRef = useClickOutside(() => {
|
const deselectRef = useClickOutside(() => {
|
||||||
return deselectOnClickOutside ? tableRef?.current?.api?.deselectAll() : undefined;
|
if (tableRef?.current?.api && deselectOnClickOutside) {
|
||||||
|
tableRef?.current?.api?.deselectAll();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const defaultColumnDefs: ColDef = useMemo(() => {
|
const defaultColumnDefs: ColDef = useMemo(() => {
|
||||||
|
@ -362,44 +366,52 @@ export const VirtualTable = forwardRef(
|
||||||
|
|
||||||
// Auto fit columns on column change
|
// Auto fit columns on column change
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (autoFitColumns) tableRef?.current?.api?.sizeColumnsToFit();
|
if (!tableRef?.current?.api) return;
|
||||||
|
if (autoFitColumns && tableRef?.current?.api) {
|
||||||
|
tableRef?.current?.api?.sizeColumnsToFit?.();
|
||||||
|
}
|
||||||
}, [autoFitColumns]);
|
}, [autoFitColumns]);
|
||||||
|
|
||||||
// Reset row heights on row height change
|
// Reset row heights on row height change
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!tableRef?.current?.api) return;
|
||||||
tableRef?.current?.api?.resetRowHeights();
|
tableRef?.current?.api?.resetRowHeights();
|
||||||
tableRef?.current?.api?.redrawRows();
|
tableRef?.current?.api?.redrawRows();
|
||||||
}, [rest.rowHeight]);
|
}, [rest.rowHeight]);
|
||||||
|
|
||||||
const handleColumnMoved = useCallback(
|
const handleColumnMoved = useCallback(
|
||||||
(e: ColumnMovedEvent) => {
|
(e: ColumnMovedEvent) => {
|
||||||
|
if (!e?.api) return;
|
||||||
onColumnMoved?.(e);
|
onColumnMoved?.(e);
|
||||||
if (autoFitColumns) e.api.sizeColumnsToFit();
|
if (autoFitColumns) e.api?.sizeColumnsToFit?.();
|
||||||
},
|
},
|
||||||
[autoFitColumns, onColumnMoved],
|
[autoFitColumns, onColumnMoved],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleNewColumnsLoaded = useCallback(
|
const handleNewColumnsLoaded = useCallback(
|
||||||
(e: NewColumnsLoadedEvent) => {
|
(e: NewColumnsLoadedEvent) => {
|
||||||
|
if (!e?.api) return;
|
||||||
onNewColumnsLoaded?.(e);
|
onNewColumnsLoaded?.(e);
|
||||||
if (autoFitColumns) e.api?.sizeColumnsToFit();
|
if (autoFitColumns) e.api?.sizeColumnsToFit?.();
|
||||||
},
|
},
|
||||||
[autoFitColumns, onNewColumnsLoaded],
|
[autoFitColumns, onNewColumnsLoaded],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleGridReady = useCallback(
|
const handleGridReady = useCallback(
|
||||||
(e: GridReadyEvent) => {
|
(e: GridReadyEvent) => {
|
||||||
|
if (!e?.api) return;
|
||||||
onGridReady?.(e);
|
onGridReady?.(e);
|
||||||
if (autoHeight) e.api.setDomLayout('autoHeight');
|
if (autoHeight) e.api.setDomLayout('autoHeight');
|
||||||
if (autoFitColumns) e.api.sizeColumnsToFit();
|
if (autoFitColumns) e.api?.sizeColumnsToFit?.();
|
||||||
},
|
},
|
||||||
[autoHeight, autoFitColumns, onGridReady],
|
[autoHeight, autoFitColumns, onGridReady],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleGridSizeChanged = useCallback(
|
const handleGridSizeChanged = useCallback(
|
||||||
(e: GridSizeChangedEvent) => {
|
(e: GridSizeChangedEvent) => {
|
||||||
|
if (!e?.api) return;
|
||||||
onGridSizeChanged?.(e);
|
onGridSizeChanged?.(e);
|
||||||
if (autoFitColumns) e.api.sizeColumnsToFit();
|
if (autoFitColumns) e.api?.sizeColumnsToFit?.();
|
||||||
},
|
},
|
||||||
[autoFitColumns, onGridSizeChanged],
|
[autoFitColumns, onGridSizeChanged],
|
||||||
);
|
);
|
||||||
|
@ -407,7 +419,9 @@ export const VirtualTable = forwardRef(
|
||||||
return (
|
return (
|
||||||
<TableWrapper
|
<TableWrapper
|
||||||
ref={deselectRef}
|
ref={deselectRef}
|
||||||
className="ag-theme-alpine-dark"
|
className={
|
||||||
|
transparentHeader ? 'ag-header-transparent ag-theme-alpine-dark' : 'ag-theme-alpine-dark'
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<AgGridReact
|
<AgGridReact
|
||||||
ref={mergedRef}
|
ref={mergedRef}
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
transition: position 0.2s ease-in-out;
|
transition: position 0.2s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ag-header-transparent {
|
||||||
|
--ag-header-background-color: rgba(0, 0, 0, 0%) !important;
|
||||||
|
}
|
||||||
|
|
||||||
.ag-header-fixed-margin {
|
.ag-header-fixed-margin {
|
||||||
margin-top: 43px !important;
|
margin-top: 43px !important;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue