@linzjs/step-ag-grid 29.2.0 → 29.2.2

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.
@@ -2793,7 +2793,11 @@ const Grid = ({ 'data-testid': dataTestId, defaultPostSort = true, rowSelection
2793
2793
  }
2794
2794
  const skipHeader = sizeColumns === 'auto-skip-headers' && gridRendered === 'rows-visible';
2795
2795
  if (sizeColumns === 'auto' || skipHeader) {
2796
- const result = autoSizeColumns({ skipHeader, userSizedColIds: userSizedColIds.current, includeFlex: true });
2796
+ const result = autoSizeColumns({
2797
+ skipHeader,
2798
+ userSizedColIds: new Set(userSizedColIds.current.keys()),
2799
+ includeFlex: true,
2800
+ });
2797
2801
  if (!result) {
2798
2802
  needsAutoSize.current = true;
2799
2803
  return;
@@ -2989,7 +2993,11 @@ const Grid = ({ 'data-testid': dataTestId, defaultPostSort = true, rowSelection
2989
2993
  return;
2990
2994
  const skipHeader = sizeColumns === 'auto-skip-headers';
2991
2995
  if (hasSetContentSize.current) {
2992
- autoSizeColumns({ skipHeader, userSizedColIds: userSizedColIds.current, colIds: colIdsEdited.current });
2996
+ autoSizeColumns({
2997
+ skipHeader,
2998
+ userSizedColIds: new Set(userSizedColIds.current.keys()),
2999
+ colIds: colIdsEdited.current,
3000
+ });
2993
3001
  }
2994
3002
  colIdsEdited.current.clear();
2995
3003
  }, [autoSizeColumns, rowData?.length, setInitialContentSize, sizeColumns, updatedDep, updatingCols]);
@@ -3087,7 +3095,7 @@ const Grid = ({ 'data-testid': dataTestId, defaultPostSort = true, rowSelection
3087
3095
  if (hasSetContentSize.current) {
3088
3096
  autoSizeColumns({
3089
3097
  skipHeader,
3090
- userSizedColIds: userSizedColIds.current,
3098
+ userSizedColIds: new Set(userSizedColIds.current.keys()),
3091
3099
  colIds: colIdsEdited.current,
3092
3100
  });
3093
3101
  }
@@ -3116,25 +3124,36 @@ const Grid = ({ 'data-testid': dataTestId, defaultPostSort = true, rowSelection
3116
3124
  /**
3117
3125
  * Resize columns to fit if required on window/container resize
3118
3126
  */
3119
- const onGridSizeChanged = React.useCallback(() => {
3127
+ const onGridSizeChanged = React.useCallback((event) => {
3120
3128
  if (sizeColumns !== 'none') {
3121
- sizeColumnsToFit();
3129
+ const columnLimits = [
3130
+ ...userSizedColIds.current.entries().map(([c, w]) => ({
3131
+ key: c,
3132
+ minWidth: w,
3133
+ })),
3134
+ ];
3135
+ event.api.sizeColumnsToFit({ columnLimits });
3122
3136
  }
3123
- }, [sizeColumns, sizeColumnsToFit]);
3137
+ }, [sizeColumns]);
3124
3138
  /**
3125
3139
  * Set of column I'd's that are prevented from auto-sizing as they are user set
3126
3140
  */
3127
- const userSizedColIds = React.useRef(new Set());
3141
+ const userSizedColIds = React.useRef(new Map());
3128
3142
  /**
3129
3143
  * Lock/unlock column width on user edit/reset.
3130
3144
  */
3131
3145
  const onColumnResized = React.useCallback((e) => {
3132
3146
  const colId = e.column?.getColId();
3133
- if (colId == null)
3147
+ if (colId == null) {
3134
3148
  return;
3149
+ }
3150
+ const width = e.column?.getActualWidth();
3151
+ if (width == null) {
3152
+ return;
3153
+ }
3135
3154
  switch (e.source) {
3136
- case 'uiColumnDragged':
3137
- userSizedColIds.current.add(colId);
3155
+ case 'uiColumnResized':
3156
+ userSizedColIds.current.set(colId, width);
3138
3157
  break;
3139
3158
  case 'autosizeColumns':
3140
3159
  userSizedColIds.current.delete(colId);
@@ -3192,7 +3211,7 @@ const Grid = ({ 'data-testid': dataTestId, defaultPostSort = true, rowSelection
3192
3211
  // Prevent repeated callbacks to cell focus when focus didn't change
3193
3212
  const { sourceEvent } = event;
3194
3213
  if (sourceEvent) {
3195
- const cell = sourceEvent.target.closest('.ag-cell');
3214
+ const cell = sourceEvent.target?.closest?.('.ag-cell') ?? null;
3196
3215
  if (window.__stepaggrid_lastfocuseventtarget === cell) {
3197
3216
  return;
3198
3217
  }
@@ -5417,8 +5436,9 @@ const GridContextProvider = (props) => {
5417
5436
  * Resize columns to fit container
5418
5437
  */
5419
5438
  const autoSizeColumns = React.useCallback(({ skipHeader, colIds, userSizedColIds, includeFlex } = {}) => {
5420
- if (!gridApi || !gridApi.getColumnState())
5439
+ if (!gridApi || !gridApi.getColumnState()) {
5421
5440
  return null;
5441
+ }
5422
5442
  const colIdsSet = colIds instanceof Set ? colIds : new Set(colIds);
5423
5443
  const colsToResize = gridApi.getColumnState()?.filter?.((colState) => {
5424
5444
  const colId = colState.colId;