@linzjs/step-ag-grid 17.8.0 → 17.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/Grid.d.ts +1 -0
- package/dist/src/contexts/GridContext.d.ts +1 -0
- package/dist/step-ag-grid.cjs.js +20 -4
- package/dist/step-ag-grid.cjs.js.map +1 -1
- package/dist/step-ag-grid.esm.js +20 -4
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Grid.tsx +22 -3
- package/src/contexts/GridContext.tsx +4 -0
- package/src/contexts/GridContextProvider.tsx +5 -0
- package/src/stories/grid/GridReadOnly.stories.tsx +19 -0
package/dist/step-ag-grid.esm.js
CHANGED
|
@@ -203,6 +203,9 @@ const GridContext = createContext({
|
|
|
203
203
|
setOnCellEditingComplete: () => {
|
|
204
204
|
console.error("no context provider for setOnCellEditingComplete");
|
|
205
205
|
},
|
|
206
|
+
showNoRowsOverlay: () => {
|
|
207
|
+
console.error("no context provider for showLoadingOverlay");
|
|
208
|
+
},
|
|
206
209
|
});
|
|
207
210
|
const useGridContext = () => useContext(GridContext);
|
|
208
211
|
|
|
@@ -2339,9 +2342,8 @@ const useGridContextMenu = ({ contextMenuSelectRow, contextMenu: ContextMenu, })
|
|
|
2339
2342
|
* Wrapper for AgGrid to add commonly used functionality.
|
|
2340
2343
|
*/
|
|
2341
2344
|
const Grid = ({ "data-testid": dataTestId, rowSelection = "multiple", suppressColumnVirtualization = true, theme = "ag-theme-step-default", sizeColumns = "auto", selectColumnPinned = null, contextMenuSelectRow = false, singleClickEdit = false, rowData, rowHeight = theme === "ag-theme-step-default" ? 40 : theme === "ag-theme-step-compact" ? 36 : 40, ...params }) => {
|
|
2342
|
-
const { gridReady, gridRenderState, setApis, ensureRowVisible, getFirstRowId, selectRowsById, focusByRowById, ensureSelectedRowIsVisible, autoSizeColumns, sizeColumnsToFit, externallySelectedItemsAreInSync, setExternallySelectedItemsAreInSync, isExternalFilterPresent, doesExternalFilterPass, setOnCellEditingComplete, getColDef, } = useContext(GridContext);
|
|
2345
|
+
const { gridReady, gridRenderState, setApis, ensureRowVisible, getFirstRowId, selectRowsById, focusByRowById, ensureSelectedRowIsVisible, autoSizeColumns, sizeColumnsToFit, externallySelectedItemsAreInSync, setExternallySelectedItemsAreInSync, isExternalFilterPresent, doesExternalFilterPass, setOnCellEditingComplete, getColDef, showNoRowsOverlay, prePopupOps, stopEditing, } = useContext(GridContext);
|
|
2343
2346
|
const { checkUpdating, updatedDep, updatingCols } = useContext(GridUpdatingContext);
|
|
2344
|
-
const { prePopupOps } = useContext(GridContext);
|
|
2345
2347
|
const gridDivRef = useRef(null);
|
|
2346
2348
|
const lastSelectedIds = useRef([]);
|
|
2347
2349
|
const [staleGrid, setStaleGrid] = useState(false);
|
|
@@ -2508,7 +2510,7 @@ const Grid = ({ "data-testid": dataTestId, rowSelection = "multiple", suppressCo
|
|
|
2508
2510
|
const columnDefs = useMemo(() => {
|
|
2509
2511
|
const adjustColDefs = params.columnDefs.map((colDef) => {
|
|
2510
2512
|
const colDefEditable = colDef.editable;
|
|
2511
|
-
const editable = combineEditables(params.readOnly !== true, params.defaultColDef?.editable, colDefEditable);
|
|
2513
|
+
const editable = combineEditables(params.loading !== true && params.readOnly !== true, params.defaultColDef?.editable, colDefEditable);
|
|
2512
2514
|
return {
|
|
2513
2515
|
...colDef,
|
|
2514
2516
|
editable,
|
|
@@ -2555,6 +2557,7 @@ const Grid = ({ "data-testid": dataTestId, rowSelection = "multiple", suppressCo
|
|
|
2555
2557
|
params.columnDefs,
|
|
2556
2558
|
params.selectable,
|
|
2557
2559
|
params.onRowDragEnd,
|
|
2560
|
+
params.loading,
|
|
2558
2561
|
params.readOnly,
|
|
2559
2562
|
params.defaultColDef?.editable,
|
|
2560
2563
|
selectColumnPinned,
|
|
@@ -2718,6 +2721,15 @@ const Grid = ({ "data-testid": dataTestId, rowSelection = "multiple", suppressCo
|
|
|
2718
2721
|
});
|
|
2719
2722
|
}
|
|
2720
2723
|
}, [autoSizeColumns, getColDef, sizeColumns, updatedDep, updatingCols]);
|
|
2724
|
+
const prevLoading = useRef(false);
|
|
2725
|
+
useEffect(() => {
|
|
2726
|
+
const newLoading = !rowData || params.loading === true;
|
|
2727
|
+
if (newLoading && !prevLoading.current) {
|
|
2728
|
+
stopEditing();
|
|
2729
|
+
showNoRowsOverlay();
|
|
2730
|
+
}
|
|
2731
|
+
prevLoading.current = newLoading;
|
|
2732
|
+
}, [params.loading, rowData, showNoRowsOverlay, stopEditing]);
|
|
2721
2733
|
/**
|
|
2722
2734
|
* Resize columns to fit if required on window/container resize
|
|
2723
2735
|
*/
|
|
@@ -2792,7 +2804,7 @@ const Grid = ({ "data-testid": dataTestId, rowSelection = "multiple", suppressCo
|
|
|
2792
2804
|
}, onRowDataUpdated: onRowDataChanged, onCellKeyDown: onCellKeyPress, onCellClicked: onCellClicked, onCellDoubleClicked: onCellDoubleClick, onCellEditingStarted: refreshSelectedRows, domLayout: params.domLayout, onColumnResized: onColumnResized, defaultColDef: { minWidth: 48, ...omit(params.defaultColDef, ["editable"]) }, columnDefs: columnDefsAdjusted, rowData: rowData, noRowsOverlayComponent: (event) => {
|
|
2793
2805
|
let rowCount = 0;
|
|
2794
2806
|
event.api.forEachNode(() => rowCount++);
|
|
2795
|
-
return (jsx(GridNoRowsOverlay, { loading: !rowData, rowCount: rowCount, headerRowHeight: headerRowCount * rowHeight, filteredRowCount: event.api.getDisplayedRowCount(), noRowsOverlayText: params.noRowsOverlayText }));
|
|
2807
|
+
return (jsx(GridNoRowsOverlay, { loading: !rowData || params.loading === true, rowCount: rowCount, headerRowHeight: headerRowCount * rowHeight, filteredRowCount: event.api.getDisplayedRowCount(), noRowsOverlayText: params.noRowsOverlayText }));
|
|
2796
2808
|
}, onModelUpdated: onModelUpdated, onGridReady: onGridReady, onSortChanged: ensureSelectedRowIsVisible, postSortRows: params.onRowDragEnd ? undefined : postSortRows, onSelectionChanged: synchroniseExternalStateToGridSelection, onColumnMoved: params.onColumnMoved, alwaysShowVerticalScroll: params.alwaysShowVerticalScroll, isExternalFilterPresent: isExternalFilterPresent, doesExternalFilterPass: doesExternalFilterPass, maintainColumnOrder: true, preventDefaultOnContextMenu: true, onCellContextMenu: gridContextMenu.cellContextMenu, rowDragText: params.rowDragText, onRowDragMove: onRowDragMove, onRowDragEnd: onRowDragEnd, onRowDragLeave: onRowDragLeave }) })] }));
|
|
2797
2809
|
};
|
|
2798
2810
|
|
|
@@ -5025,6 +5037,9 @@ const GridContextProvider = (props) => {
|
|
|
5025
5037
|
const isExternalFilterPresent = () => !isEmpty(externalFilters.current);
|
|
5026
5038
|
const doesExternalFilterPass = (node) => externalFilters.current.every((filter) => filter(node.data, node));
|
|
5027
5039
|
const getColDef = useCallback((colId) => (!!colId && gridApi?.getColumnDef(colId)) || undefined, [gridApi]);
|
|
5040
|
+
const showNoRowsOverlay = useCallback(() => {
|
|
5041
|
+
gridApi?.showNoRowsOverlay();
|
|
5042
|
+
}, [gridApi]);
|
|
5028
5043
|
/**
|
|
5029
5044
|
* Apply column visibility
|
|
5030
5045
|
*/
|
|
@@ -5110,6 +5125,7 @@ const GridContextProvider = (props) => {
|
|
|
5110
5125
|
doesExternalFilterPass,
|
|
5111
5126
|
downloadCsv,
|
|
5112
5127
|
setOnCellEditingComplete,
|
|
5128
|
+
showNoRowsOverlay,
|
|
5113
5129
|
}, children: props.children }));
|
|
5114
5130
|
};
|
|
5115
5131
|
/**
|