@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.
@@ -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
  /**