@procore/data-table 14.35.3 → 14.36.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/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # Change Log
2
2
 
3
+ ## 14.36.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d1578b0: Add UNSAFE_agGridInternalOverrides prop to detailRowConfig to allow custom AG Grid configuration for detail grids (nested tables)
8
+
9
+ ### Patch Changes
10
+
11
+ - e850539: Remove deprecated `detailRowSelectionEnabled` prop and consolidate row selection logic within `detailRowConfig`.
12
+
13
+ **Changes:**
14
+
15
+ - Removed deprecated `detailRowSelectionEnabled` prop (deprecated since 11.13.0)
16
+ - Updated `DetailRowConfig.rowSelectionEnabled` type to use `RowSelectablePredicateParams` instead of `CheckboxSelectionCallbackParams`
17
+ - Refactored checkbox selection logic from `defaultColDef` to centralized `isRowSelectable` function
18
+ - Added RowSelection story demonstrating nested table row selection with parent disabled
19
+ - Added comprehensive e2e tests for nested table row selection functionality
20
+
21
+ **Migration:** If still using the deprecated `detailRowSelectionEnabled` prop, move it to `detailRowConfig.rowSelectionEnabled`:
22
+
23
+ ```tsx
24
+ // Before
25
+ <DataTable.Table
26
+ detailRowSelectionEnabled={true}
27
+ detailRowConfig={{
28
+ // ... other config
29
+ }}
30
+ />
31
+
32
+ // After
33
+ <DataTable.Table
34
+ detailRowConfig={{
35
+ rowSelectionEnabled: true,
36
+ // ... other config
37
+ }}
38
+ />
39
+ ```
40
+
41
+ ## 14.35.4
42
+
43
+ ### Patch Changes
44
+
45
+ - 1077669: Add support for onRowSelect callback of detail rows.
46
+
3
47
  ## 14.35.3
4
48
 
5
49
  ### Patch Changes
@@ -104339,12 +104339,10 @@ var buildDetailRowsConfig = ({
104339
104339
  frameworkComponents,
104340
104340
  getRowHeight,
104341
104341
  emptyStateRenderer,
104342
- detailRowSelectionEnabled: detailRowSelectionEnabled_,
104343
104342
  enableGroupEditAndValidation,
104344
104343
  enableDynamicRowHeight,
104345
104344
  isServerSideRowModel
104346
104345
  }) => {
104347
- const detailRowSelectionEnabled = detailRowSelectionEnabled_ ?? false;
104348
104346
  if (detailRowConfig === void 0) {
104349
104347
  return {};
104350
104348
  }
@@ -104353,7 +104351,6 @@ var buildDetailRowsConfig = ({
104353
104351
  frameworkComponents,
104354
104352
  getRowHeight,
104355
104353
  emptyStateRenderer,
104356
- detailRowSelectionEnabled,
104357
104354
  enableGroupEditAndValidation,
104358
104355
  enableDynamicRowHeight,
104359
104356
  isServerSideRowModel
@@ -104364,7 +104361,6 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104364
104361
  frameworkComponents,
104365
104362
  getRowHeight,
104366
104363
  emptyStateRenderer,
104367
- detailRowSelectionEnabled: deprecatedDetailRowSelectionEnabled,
104368
104364
  enableGroupEditAndValidation,
104369
104365
  enableDynamicRowHeight,
104370
104366
  isServerSideRowModel
@@ -104379,7 +104375,18 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104379
104375
  }
104380
104376
  };
104381
104377
  const rowHeightConfig = detailRowConfig.height === "auto" || detailRowConfig.height === void 0 ? { detailRowAutoHeight: true } : { detailRowHeight: detailRowConfig.height };
104382
- const isRowSelectable = () => deprecatedDetailRowSelectionEnabled ?? false;
104378
+ const isRowSelectable = (node) => {
104379
+ if (typeof detailRowConfig.rowSelectionEnabled === "boolean") {
104380
+ return detailRowConfig.rowSelectionEnabled;
104381
+ }
104382
+ if (typeof detailRowConfig.rowSelectionEnabled === "function") {
104383
+ return isRowSelectionEnabledForRow(
104384
+ detailRowConfig.rowSelectionEnabled,
104385
+ node
104386
+ );
104387
+ }
104388
+ return false;
104389
+ };
104383
104390
  return {
104384
104391
  isRowMaster: detailRowConfig.isExpandable,
104385
104392
  masterDetail: true,
@@ -104417,20 +104424,10 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104417
104424
  onCellValueChanged: onGridReadyOrValueChange,
104418
104425
  onRowDataChanged: onGridReadyOrValueChange,
104419
104426
  onRowDataUpdated: onGridReadyOrValueChange,
104427
+ onRowSelected: detailRowConfig.onRowSelected ?? null,
104420
104428
  refreshStrategy: detailRowConfig.refreshStrategy || "everything",
104421
104429
  aggFuncs: aggregationFunctions_exports,
104422
- defaultColDef: {
104423
- ...defaultColDef,
104424
- checkboxSelection(params) {
104425
- var _a, _b, _c;
104426
- const rowSelectionEnabled = detailRowConfig.rowSelectionEnabled ?? deprecatedDetailRowSelectionEnabled;
104427
- const rowSelectionEnabledValue = typeof rowSelectionEnabled === "function" ? rowSelectionEnabled(params) : rowSelectionEnabled ?? false;
104428
- if (!rowSelectionEnabledValue) {
104429
- return false;
104430
- }
104431
- return ((_c = (_b = (_a = params.columnApi) == null ? void 0 : _a.getRowGroupColumns) == null ? void 0 : _b.call(_a)) == null ? void 0 : _c.length) === 0 && isFirstColumn(params);
104432
- }
104433
- },
104430
+ defaultColDef,
104434
104431
  rowSelection: detailRowConfig.rowSelection,
104435
104432
  rowMultiSelectWithClick: detailRowConfig.rowMultiSelectWithClick,
104436
104433
  suppressRowClickSelection: detailRowConfig.suppressRowClickSelection ?? true,
@@ -104450,7 +104447,8 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104450
104447
  suppressAggFuncInHeader: true,
104451
104448
  suppressContextMenu: true,
104452
104449
  suppressColumnVirtualisation: true,
104453
- getRowHeight: getRowHeight == null ? void 0 : getRowHeight(detailRowConfig.customFooters)
104450
+ getRowHeight: getRowHeight == null ? void 0 : getRowHeight(detailRowConfig.customFooters),
104451
+ ...detailRowConfig.UNSAFE_agGridInternalOverrides ?? {}
104454
104452
  },
104455
104453
  getDetailRowData: detailRowConfig.getDetailRowData
104456
104454
  };
@@ -109347,7 +109345,6 @@ var Table = (props) => {
109347
109345
  [
109348
109346
  columnGroupBordersEnabled,
109349
109347
  props.showGroupChildCount,
109350
- props.detailRowSelectionEnabled,
109351
109348
  props.detailRowConfigs,
109352
109349
  props.detailRowConfig
109353
109350
  ]
@@ -109359,13 +109356,11 @@ var Table = (props) => {
109359
109356
  frameworkComponents: frameworkComponents.detail,
109360
109357
  getRowHeight,
109361
109358
  emptyStateRenderer: props.emptyStateRenderer,
109362
- detailRowSelectionEnabled: props.detailRowSelectionEnabled,
109363
109359
  enableGroupEditAndValidation: internalTableContext.enableGroupEditAndValidation,
109364
109360
  enableDynamicRowHeight: internalTableContext.enableDynamicRowHeight,
109365
109361
  isServerSideRowModel: !!internalTableContext.onServerSideDataRequest
109366
109362
  });
109367
109363
  }, [
109368
- props.detailRowSelectionEnabled,
109369
109364
  props.detailRowConfigs,
109370
109365
  props.detailRowConfig,
109371
109366
  defaultColDef,
@@ -1,5 +1,5 @@
1
1
  import * as _ag_grid_community_core from '@ag-grid-community/core';
2
- import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, CheckboxSelectionCallbackParams, ExcelDataType, Module, RowGroupOpenedEvent, RowSelectedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
2
+ import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, RowSelectedEvent, ExcelDataType, Module, RowGroupOpenedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
3
3
  import * as React$1 from 'react';
4
4
  import React__default from 'react';
5
5
  import { AgGridReactProps, AgReactUiProps } from '@ag-grid-community/react';
@@ -755,10 +755,21 @@ interface DetailRowConfig<TRow = any> {
755
755
  customFooters?: CustomFooterConfig[];
756
756
  /** See ag-grid docs for more info: https://www.ag-grid.com/javascript-data-grid/master-detail-refresh/ */
757
757
  refreshStrategy?: 'everything' | 'rows' | 'nothing';
758
- rowSelectionEnabled?: boolean | ((params: CheckboxSelectionCallbackParams<TRow>) => boolean);
758
+ rowSelectionEnabled?: boolean | ((params: RowSelectablePredicateParams<TRow>) => boolean);
759
759
  rowSelection?: 'multiple' | 'single';
760
760
  rowMultiSelectWithClick?: boolean;
761
761
  suppressRowClickSelection?: boolean;
762
+ onRowSelected?: (event: RowSelectedEvent) => void;
763
+ /**
764
+ * Overrides internal props for the detail grid's AgGridReact component. This is not guaranteed under DataTable SemVer
765
+ * and can break during any upgrade of the ag-grid-react package
766
+ *
767
+ * For documentation see: {@link https://www.ag-grid.com/react-data-grid/grid-options/}
768
+ * The ag-grid changelog can be found here: {@link https://www.ag-grid.com/changelog/}
769
+ *
770
+ * Warning: This can break normal Data Table functionality.
771
+ */
772
+ UNSAFE_agGridInternalOverrides?: AgGridReactProps | AgReactUiProps;
762
773
  }
763
774
  type CustomRendererCell = {
764
775
  component: React.ComponentType<any>;
@@ -971,11 +982,6 @@ interface TableProps<TRow = any, TBottomRow = any> {
971
982
  */
972
983
  detailRowConfigs?: DetailRowConfig<TRow>[];
973
984
  detailRowConfig?: DetailRowConfig<TRow>;
974
- /**
975
- * @deprecated Please use `detailRowConfig.rowSelectionEnabled` instead
976
- * @deprecatedSince 11.13.0
977
- */
978
- detailRowSelectionEnabled?: boolean;
979
985
  siblingGroupsRowSelectionDisabled?: boolean;
980
986
  emptyStateRenderer?: React.FunctionComponent;
981
987
  excelDataTypeFormats?: DTExcelFormats[];
@@ -1,5 +1,5 @@
1
1
  import * as _ag_grid_community_core from '@ag-grid-community/core';
2
- import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, CheckboxSelectionCallbackParams, ExcelDataType, Module, RowGroupOpenedEvent, RowSelectedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
2
+ import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, RowSelectedEvent, ExcelDataType, Module, RowGroupOpenedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
3
3
  import * as React$1 from 'react';
4
4
  import React__default from 'react';
5
5
  import { AgGridReactProps, AgReactUiProps } from '@ag-grid-community/react';
@@ -755,10 +755,21 @@ interface DetailRowConfig<TRow = any> {
755
755
  customFooters?: CustomFooterConfig[];
756
756
  /** See ag-grid docs for more info: https://www.ag-grid.com/javascript-data-grid/master-detail-refresh/ */
757
757
  refreshStrategy?: 'everything' | 'rows' | 'nothing';
758
- rowSelectionEnabled?: boolean | ((params: CheckboxSelectionCallbackParams<TRow>) => boolean);
758
+ rowSelectionEnabled?: boolean | ((params: RowSelectablePredicateParams<TRow>) => boolean);
759
759
  rowSelection?: 'multiple' | 'single';
760
760
  rowMultiSelectWithClick?: boolean;
761
761
  suppressRowClickSelection?: boolean;
762
+ onRowSelected?: (event: RowSelectedEvent) => void;
763
+ /**
764
+ * Overrides internal props for the detail grid's AgGridReact component. This is not guaranteed under DataTable SemVer
765
+ * and can break during any upgrade of the ag-grid-react package
766
+ *
767
+ * For documentation see: {@link https://www.ag-grid.com/react-data-grid/grid-options/}
768
+ * The ag-grid changelog can be found here: {@link https://www.ag-grid.com/changelog/}
769
+ *
770
+ * Warning: This can break normal Data Table functionality.
771
+ */
772
+ UNSAFE_agGridInternalOverrides?: AgGridReactProps | AgReactUiProps;
762
773
  }
763
774
  type CustomRendererCell = {
764
775
  component: React.ComponentType<any>;
@@ -971,11 +982,6 @@ interface TableProps<TRow = any, TBottomRow = any> {
971
982
  */
972
983
  detailRowConfigs?: DetailRowConfig<TRow>[];
973
984
  detailRowConfig?: DetailRowConfig<TRow>;
974
- /**
975
- * @deprecated Please use `detailRowConfig.rowSelectionEnabled` instead
976
- * @deprecatedSince 11.13.0
977
- */
978
- detailRowSelectionEnabled?: boolean;
979
985
  siblingGroupsRowSelectionDisabled?: boolean;
980
986
  emptyStateRenderer?: React.FunctionComponent;
981
987
  excelDataTypeFormats?: DTExcelFormats[];
@@ -104326,12 +104326,10 @@ var buildDetailRowsConfig = ({
104326
104326
  frameworkComponents,
104327
104327
  getRowHeight,
104328
104328
  emptyStateRenderer,
104329
- detailRowSelectionEnabled: detailRowSelectionEnabled_,
104330
104329
  enableGroupEditAndValidation,
104331
104330
  enableDynamicRowHeight,
104332
104331
  isServerSideRowModel
104333
104332
  }) => {
104334
- const detailRowSelectionEnabled = detailRowSelectionEnabled_ ?? false;
104335
104333
  if (detailRowConfig === void 0) {
104336
104334
  return {};
104337
104335
  }
@@ -104340,7 +104338,6 @@ var buildDetailRowsConfig = ({
104340
104338
  frameworkComponents,
104341
104339
  getRowHeight,
104342
104340
  emptyStateRenderer,
104343
- detailRowSelectionEnabled,
104344
104341
  enableGroupEditAndValidation,
104345
104342
  enableDynamicRowHeight,
104346
104343
  isServerSideRowModel
@@ -104351,7 +104348,6 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104351
104348
  frameworkComponents,
104352
104349
  getRowHeight,
104353
104350
  emptyStateRenderer,
104354
- detailRowSelectionEnabled: deprecatedDetailRowSelectionEnabled,
104355
104351
  enableGroupEditAndValidation,
104356
104352
  enableDynamicRowHeight,
104357
104353
  isServerSideRowModel
@@ -104366,7 +104362,18 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104366
104362
  }
104367
104363
  };
104368
104364
  const rowHeightConfig = detailRowConfig.height === "auto" || detailRowConfig.height === void 0 ? { detailRowAutoHeight: true } : { detailRowHeight: detailRowConfig.height };
104369
- const isRowSelectable = () => deprecatedDetailRowSelectionEnabled ?? false;
104365
+ const isRowSelectable = (node) => {
104366
+ if (typeof detailRowConfig.rowSelectionEnabled === "boolean") {
104367
+ return detailRowConfig.rowSelectionEnabled;
104368
+ }
104369
+ if (typeof detailRowConfig.rowSelectionEnabled === "function") {
104370
+ return isRowSelectionEnabledForRow(
104371
+ detailRowConfig.rowSelectionEnabled,
104372
+ node
104373
+ );
104374
+ }
104375
+ return false;
104376
+ };
104370
104377
  return {
104371
104378
  isRowMaster: detailRowConfig.isExpandable,
104372
104379
  masterDetail: true,
@@ -104404,20 +104411,10 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104404
104411
  onCellValueChanged: onGridReadyOrValueChange,
104405
104412
  onRowDataChanged: onGridReadyOrValueChange,
104406
104413
  onRowDataUpdated: onGridReadyOrValueChange,
104414
+ onRowSelected: detailRowConfig.onRowSelected ?? null,
104407
104415
  refreshStrategy: detailRowConfig.refreshStrategy || "everything",
104408
104416
  aggFuncs: aggregationFunctions_exports,
104409
- defaultColDef: {
104410
- ...defaultColDef,
104411
- checkboxSelection(params) {
104412
- var _a, _b, _c;
104413
- const rowSelectionEnabled = detailRowConfig.rowSelectionEnabled ?? deprecatedDetailRowSelectionEnabled;
104414
- const rowSelectionEnabledValue = typeof rowSelectionEnabled === "function" ? rowSelectionEnabled(params) : rowSelectionEnabled ?? false;
104415
- if (!rowSelectionEnabledValue) {
104416
- return false;
104417
- }
104418
- return ((_c = (_b = (_a = params.columnApi) == null ? void 0 : _a.getRowGroupColumns) == null ? void 0 : _b.call(_a)) == null ? void 0 : _c.length) === 0 && isFirstColumn(params);
104419
- }
104420
- },
104417
+ defaultColDef,
104421
104418
  rowSelection: detailRowConfig.rowSelection,
104422
104419
  rowMultiSelectWithClick: detailRowConfig.rowMultiSelectWithClick,
104423
104420
  suppressRowClickSelection: detailRowConfig.suppressRowClickSelection ?? true,
@@ -104437,7 +104434,8 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104437
104434
  suppressAggFuncInHeader: true,
104438
104435
  suppressContextMenu: true,
104439
104436
  suppressColumnVirtualisation: true,
104440
- getRowHeight: getRowHeight == null ? void 0 : getRowHeight(detailRowConfig.customFooters)
104437
+ getRowHeight: getRowHeight == null ? void 0 : getRowHeight(detailRowConfig.customFooters),
104438
+ ...detailRowConfig.UNSAFE_agGridInternalOverrides ?? {}
104441
104439
  },
104442
104440
  getDetailRowData: detailRowConfig.getDetailRowData
104443
104441
  };
@@ -109334,7 +109332,6 @@ var Table = (props) => {
109334
109332
  [
109335
109333
  columnGroupBordersEnabled,
109336
109334
  props.showGroupChildCount,
109337
- props.detailRowSelectionEnabled,
109338
109335
  props.detailRowConfigs,
109339
109336
  props.detailRowConfig
109340
109337
  ]
@@ -109346,13 +109343,11 @@ var Table = (props) => {
109346
109343
  frameworkComponents: frameworkComponents.detail,
109347
109344
  getRowHeight,
109348
109345
  emptyStateRenderer: props.emptyStateRenderer,
109349
- detailRowSelectionEnabled: props.detailRowSelectionEnabled,
109350
109346
  enableGroupEditAndValidation: internalTableContext.enableGroupEditAndValidation,
109351
109347
  enableDynamicRowHeight: internalTableContext.enableDynamicRowHeight,
109352
109348
  isServerSideRowModel: !!internalTableContext.onServerSideDataRequest
109353
109349
  });
109354
109350
  }, [
109355
- props.detailRowSelectionEnabled,
109356
109351
  props.detailRowConfigs,
109357
109352
  props.detailRowConfig,
109358
109353
  defaultColDef,
@@ -104205,12 +104205,10 @@ var buildDetailRowsConfig = ({
104205
104205
  frameworkComponents,
104206
104206
  getRowHeight,
104207
104207
  emptyStateRenderer,
104208
- detailRowSelectionEnabled: detailRowSelectionEnabled_,
104209
104208
  enableGroupEditAndValidation,
104210
104209
  enableDynamicRowHeight,
104211
104210
  isServerSideRowModel
104212
104211
  }) => {
104213
- const detailRowSelectionEnabled = detailRowSelectionEnabled_ ?? false;
104214
104212
  if (detailRowConfig === void 0) {
104215
104213
  return {};
104216
104214
  }
@@ -104219,7 +104217,6 @@ var buildDetailRowsConfig = ({
104219
104217
  frameworkComponents,
104220
104218
  getRowHeight,
104221
104219
  emptyStateRenderer,
104222
- detailRowSelectionEnabled,
104223
104220
  enableGroupEditAndValidation,
104224
104221
  enableDynamicRowHeight,
104225
104222
  isServerSideRowModel
@@ -104230,7 +104227,6 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104230
104227
  frameworkComponents,
104231
104228
  getRowHeight,
104232
104229
  emptyStateRenderer,
104233
- detailRowSelectionEnabled: deprecatedDetailRowSelectionEnabled,
104234
104230
  enableGroupEditAndValidation,
104235
104231
  enableDynamicRowHeight,
104236
104232
  isServerSideRowModel
@@ -104245,7 +104241,18 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104245
104241
  }
104246
104242
  };
104247
104243
  const rowHeightConfig = detailRowConfig.height === "auto" || detailRowConfig.height === void 0 ? { detailRowAutoHeight: true } : { detailRowHeight: detailRowConfig.height };
104248
- const isRowSelectable = () => deprecatedDetailRowSelectionEnabled ?? false;
104244
+ const isRowSelectable = (node) => {
104245
+ if (typeof detailRowConfig.rowSelectionEnabled === "boolean") {
104246
+ return detailRowConfig.rowSelectionEnabled;
104247
+ }
104248
+ if (typeof detailRowConfig.rowSelectionEnabled === "function") {
104249
+ return isRowSelectionEnabledForRow(
104250
+ detailRowConfig.rowSelectionEnabled,
104251
+ node
104252
+ );
104253
+ }
104254
+ return false;
104255
+ };
104249
104256
  return {
104250
104257
  isRowMaster: detailRowConfig.isExpandable,
104251
104258
  masterDetail: true,
@@ -104283,19 +104290,10 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104283
104290
  onCellValueChanged: onGridReadyOrValueChange,
104284
104291
  onRowDataChanged: onGridReadyOrValueChange,
104285
104292
  onRowDataUpdated: onGridReadyOrValueChange,
104293
+ onRowSelected: detailRowConfig.onRowSelected ?? null,
104286
104294
  refreshStrategy: detailRowConfig.refreshStrategy || "everything",
104287
104295
  aggFuncs: aggregationFunctions_exports,
104288
- defaultColDef: {
104289
- ...defaultColDef,
104290
- checkboxSelection(params) {
104291
- const rowSelectionEnabled = detailRowConfig.rowSelectionEnabled ?? deprecatedDetailRowSelectionEnabled;
104292
- const rowSelectionEnabledValue = typeof rowSelectionEnabled === "function" ? rowSelectionEnabled(params) : rowSelectionEnabled ?? false;
104293
- if (!rowSelectionEnabledValue) {
104294
- return false;
104295
- }
104296
- return params.columnApi?.getRowGroupColumns?.()?.length === 0 && isFirstColumn(params);
104297
- }
104298
- },
104296
+ defaultColDef,
104299
104297
  rowSelection: detailRowConfig.rowSelection,
104300
104298
  rowMultiSelectWithClick: detailRowConfig.rowMultiSelectWithClick,
104301
104299
  suppressRowClickSelection: detailRowConfig.suppressRowClickSelection ?? true,
@@ -104315,7 +104313,8 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104315
104313
  suppressAggFuncInHeader: true,
104316
104314
  suppressContextMenu: true,
104317
104315
  suppressColumnVirtualisation: true,
104318
- getRowHeight: getRowHeight?.(detailRowConfig.customFooters)
104316
+ getRowHeight: getRowHeight?.(detailRowConfig.customFooters),
104317
+ ...detailRowConfig.UNSAFE_agGridInternalOverrides ?? {}
104319
104318
  },
104320
104319
  getDetailRowData: detailRowConfig.getDetailRowData
104321
104320
  };
@@ -109158,7 +109157,6 @@ var Table = (props) => {
109158
109157
  [
109159
109158
  columnGroupBordersEnabled,
109160
109159
  props.showGroupChildCount,
109161
- props.detailRowSelectionEnabled,
109162
109160
  props.detailRowConfigs,
109163
109161
  props.detailRowConfig
109164
109162
  ]
@@ -109170,13 +109168,11 @@ var Table = (props) => {
109170
109168
  frameworkComponents: frameworkComponents.detail,
109171
109169
  getRowHeight,
109172
109170
  emptyStateRenderer: props.emptyStateRenderer,
109173
- detailRowSelectionEnabled: props.detailRowSelectionEnabled,
109174
109171
  enableGroupEditAndValidation: internalTableContext.enableGroupEditAndValidation,
109175
109172
  enableDynamicRowHeight: internalTableContext.enableDynamicRowHeight,
109176
109173
  isServerSideRowModel: !!internalTableContext.onServerSideDataRequest
109177
109174
  });
109178
109175
  }, [
109179
- props.detailRowSelectionEnabled,
109180
109176
  props.detailRowConfigs,
109181
109177
  props.detailRowConfig,
109182
109178
  defaultColDef,
@@ -1,5 +1,5 @@
1
1
  import * as _ag_grid_community_core from '@ag-grid-community/core';
2
- import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, CheckboxSelectionCallbackParams, ExcelDataType, Module, RowGroupOpenedEvent, RowSelectedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
2
+ import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, RowSelectedEvent, ExcelDataType, Module, RowGroupOpenedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
3
3
  import * as React$1 from 'react';
4
4
  import React__default from 'react';
5
5
  import { AgGridReactProps, AgReactUiProps } from '@ag-grid-community/react';
@@ -755,10 +755,21 @@ interface DetailRowConfig<TRow = any> {
755
755
  customFooters?: CustomFooterConfig[];
756
756
  /** See ag-grid docs for more info: https://www.ag-grid.com/javascript-data-grid/master-detail-refresh/ */
757
757
  refreshStrategy?: 'everything' | 'rows' | 'nothing';
758
- rowSelectionEnabled?: boolean | ((params: CheckboxSelectionCallbackParams<TRow>) => boolean);
758
+ rowSelectionEnabled?: boolean | ((params: RowSelectablePredicateParams<TRow>) => boolean);
759
759
  rowSelection?: 'multiple' | 'single';
760
760
  rowMultiSelectWithClick?: boolean;
761
761
  suppressRowClickSelection?: boolean;
762
+ onRowSelected?: (event: RowSelectedEvent) => void;
763
+ /**
764
+ * Overrides internal props for the detail grid's AgGridReact component. This is not guaranteed under DataTable SemVer
765
+ * and can break during any upgrade of the ag-grid-react package
766
+ *
767
+ * For documentation see: {@link https://www.ag-grid.com/react-data-grid/grid-options/}
768
+ * The ag-grid changelog can be found here: {@link https://www.ag-grid.com/changelog/}
769
+ *
770
+ * Warning: This can break normal Data Table functionality.
771
+ */
772
+ UNSAFE_agGridInternalOverrides?: AgGridReactProps | AgReactUiProps;
762
773
  }
763
774
  type CustomRendererCell = {
764
775
  component: React.ComponentType<any>;
@@ -971,11 +982,6 @@ interface TableProps<TRow = any, TBottomRow = any> {
971
982
  */
972
983
  detailRowConfigs?: DetailRowConfig<TRow>[];
973
984
  detailRowConfig?: DetailRowConfig<TRow>;
974
- /**
975
- * @deprecated Please use `detailRowConfig.rowSelectionEnabled` instead
976
- * @deprecatedSince 11.13.0
977
- */
978
- detailRowSelectionEnabled?: boolean;
979
985
  siblingGroupsRowSelectionDisabled?: boolean;
980
986
  emptyStateRenderer?: React.FunctionComponent;
981
987
  excelDataTypeFormats?: DTExcelFormats[];
@@ -1,5 +1,5 @@
1
1
  import * as _ag_grid_community_core from '@ag-grid-community/core';
2
- import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, CheckboxSelectionCallbackParams, ExcelDataType, Module, RowGroupOpenedEvent, RowSelectedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
2
+ import { ICellRendererParams, NumberFilterModel as NumberFilterModel$1, ColDef, IRowNode, ICellEditorParams, ColumnPinnedType, RowHeightParams, GetRowIdParams, RowDataTransaction, RowNodeTransaction, ServerSideTransaction, GridApi, ICellEditor, RefreshCellsParams, RowNode as RowNode$1, Column, SelectionEventSourceType, RowSelectedEvent, ExcelDataType, Module, RowGroupOpenedEvent, ColumnEverythingChangedEvent, CellFocusedEvent, ColumnApi, TabToNextCellParams, CellPosition, IFilter, IScalarFilterParams, ISimpleFilterParams } from '@ag-grid-community/core';
3
3
  import * as React$1 from 'react';
4
4
  import React__default from 'react';
5
5
  import { AgGridReactProps, AgReactUiProps } from '@ag-grid-community/react';
@@ -755,10 +755,21 @@ interface DetailRowConfig<TRow = any> {
755
755
  customFooters?: CustomFooterConfig[];
756
756
  /** See ag-grid docs for more info: https://www.ag-grid.com/javascript-data-grid/master-detail-refresh/ */
757
757
  refreshStrategy?: 'everything' | 'rows' | 'nothing';
758
- rowSelectionEnabled?: boolean | ((params: CheckboxSelectionCallbackParams<TRow>) => boolean);
758
+ rowSelectionEnabled?: boolean | ((params: RowSelectablePredicateParams<TRow>) => boolean);
759
759
  rowSelection?: 'multiple' | 'single';
760
760
  rowMultiSelectWithClick?: boolean;
761
761
  suppressRowClickSelection?: boolean;
762
+ onRowSelected?: (event: RowSelectedEvent) => void;
763
+ /**
764
+ * Overrides internal props for the detail grid's AgGridReact component. This is not guaranteed under DataTable SemVer
765
+ * and can break during any upgrade of the ag-grid-react package
766
+ *
767
+ * For documentation see: {@link https://www.ag-grid.com/react-data-grid/grid-options/}
768
+ * The ag-grid changelog can be found here: {@link https://www.ag-grid.com/changelog/}
769
+ *
770
+ * Warning: This can break normal Data Table functionality.
771
+ */
772
+ UNSAFE_agGridInternalOverrides?: AgGridReactProps | AgReactUiProps;
762
773
  }
763
774
  type CustomRendererCell = {
764
775
  component: React.ComponentType<any>;
@@ -971,11 +982,6 @@ interface TableProps<TRow = any, TBottomRow = any> {
971
982
  */
972
983
  detailRowConfigs?: DetailRowConfig<TRow>[];
973
984
  detailRowConfig?: DetailRowConfig<TRow>;
974
- /**
975
- * @deprecated Please use `detailRowConfig.rowSelectionEnabled` instead
976
- * @deprecatedSince 11.13.0
977
- */
978
- detailRowSelectionEnabled?: boolean;
979
985
  siblingGroupsRowSelectionDisabled?: boolean;
980
986
  emptyStateRenderer?: React.FunctionComponent;
981
987
  excelDataTypeFormats?: DTExcelFormats[];
@@ -104192,12 +104192,10 @@ var buildDetailRowsConfig = ({
104192
104192
  frameworkComponents,
104193
104193
  getRowHeight,
104194
104194
  emptyStateRenderer,
104195
- detailRowSelectionEnabled: detailRowSelectionEnabled_,
104196
104195
  enableGroupEditAndValidation,
104197
104196
  enableDynamicRowHeight,
104198
104197
  isServerSideRowModel
104199
104198
  }) => {
104200
- const detailRowSelectionEnabled = detailRowSelectionEnabled_ ?? false;
104201
104199
  if (detailRowConfig === void 0) {
104202
104200
  return {};
104203
104201
  }
@@ -104206,7 +104204,6 @@ var buildDetailRowsConfig = ({
104206
104204
  frameworkComponents,
104207
104205
  getRowHeight,
104208
104206
  emptyStateRenderer,
104209
- detailRowSelectionEnabled,
104210
104207
  enableGroupEditAndValidation,
104211
104208
  enableDynamicRowHeight,
104212
104209
  isServerSideRowModel
@@ -104217,7 +104214,6 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104217
104214
  frameworkComponents,
104218
104215
  getRowHeight,
104219
104216
  emptyStateRenderer,
104220
- detailRowSelectionEnabled: deprecatedDetailRowSelectionEnabled,
104221
104217
  enableGroupEditAndValidation,
104222
104218
  enableDynamicRowHeight,
104223
104219
  isServerSideRowModel
@@ -104232,7 +104228,18 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104232
104228
  }
104233
104229
  };
104234
104230
  const rowHeightConfig = detailRowConfig.height === "auto" || detailRowConfig.height === void 0 ? { detailRowAutoHeight: true } : { detailRowHeight: detailRowConfig.height };
104235
- const isRowSelectable = () => deprecatedDetailRowSelectionEnabled ?? false;
104231
+ const isRowSelectable = (node) => {
104232
+ if (typeof detailRowConfig.rowSelectionEnabled === "boolean") {
104233
+ return detailRowConfig.rowSelectionEnabled;
104234
+ }
104235
+ if (typeof detailRowConfig.rowSelectionEnabled === "function") {
104236
+ return isRowSelectionEnabledForRow(
104237
+ detailRowConfig.rowSelectionEnabled,
104238
+ node
104239
+ );
104240
+ }
104241
+ return false;
104242
+ };
104236
104243
  return {
104237
104244
  isRowMaster: detailRowConfig.isExpandable,
104238
104245
  masterDetail: true,
@@ -104270,19 +104277,10 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104270
104277
  onCellValueChanged: onGridReadyOrValueChange,
104271
104278
  onRowDataChanged: onGridReadyOrValueChange,
104272
104279
  onRowDataUpdated: onGridReadyOrValueChange,
104280
+ onRowSelected: detailRowConfig.onRowSelected ?? null,
104273
104281
  refreshStrategy: detailRowConfig.refreshStrategy || "everything",
104274
104282
  aggFuncs: aggregationFunctions_exports,
104275
- defaultColDef: {
104276
- ...defaultColDef,
104277
- checkboxSelection(params) {
104278
- const rowSelectionEnabled = detailRowConfig.rowSelectionEnabled ?? deprecatedDetailRowSelectionEnabled;
104279
- const rowSelectionEnabledValue = typeof rowSelectionEnabled === "function" ? rowSelectionEnabled(params) : rowSelectionEnabled ?? false;
104280
- if (!rowSelectionEnabledValue) {
104281
- return false;
104282
- }
104283
- return params.columnApi?.getRowGroupColumns?.()?.length === 0 && isFirstColumn(params);
104284
- }
104285
- },
104283
+ defaultColDef,
104286
104284
  rowSelection: detailRowConfig.rowSelection,
104287
104285
  rowMultiSelectWithClick: detailRowConfig.rowMultiSelectWithClick,
104288
104286
  suppressRowClickSelection: detailRowConfig.suppressRowClickSelection ?? true,
@@ -104302,7 +104300,8 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104302
104300
  suppressAggFuncInHeader: true,
104303
104301
  suppressContextMenu: true,
104304
104302
  suppressColumnVirtualisation: true,
104305
- getRowHeight: getRowHeight?.(detailRowConfig.customFooters)
104303
+ getRowHeight: getRowHeight?.(detailRowConfig.customFooters),
104304
+ ...detailRowConfig.UNSAFE_agGridInternalOverrides ?? {}
104306
104305
  },
104307
104306
  getDetailRowData: detailRowConfig.getDetailRowData
104308
104307
  };
@@ -109145,7 +109144,6 @@ var Table = (props) => {
109145
109144
  [
109146
109145
  columnGroupBordersEnabled,
109147
109146
  props.showGroupChildCount,
109148
- props.detailRowSelectionEnabled,
109149
109147
  props.detailRowConfigs,
109150
109148
  props.detailRowConfig
109151
109149
  ]
@@ -109157,13 +109155,11 @@ var Table = (props) => {
109157
109155
  frameworkComponents: frameworkComponents.detail,
109158
109156
  getRowHeight,
109159
109157
  emptyStateRenderer: props.emptyStateRenderer,
109160
- detailRowSelectionEnabled: props.detailRowSelectionEnabled,
109161
109158
  enableGroupEditAndValidation: internalTableContext.enableGroupEditAndValidation,
109162
109159
  enableDynamicRowHeight: internalTableContext.enableDynamicRowHeight,
109163
109160
  isServerSideRowModel: !!internalTableContext.onServerSideDataRequest
109164
109161
  });
109165
109162
  }, [
109166
- props.detailRowSelectionEnabled,
109167
109163
  props.detailRowConfigs,
109168
109164
  props.detailRowConfig,
109169
109165
  defaultColDef,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@procore/data-table",
3
- "version": "14.35.3",
3
+ "version": "14.36.0",
4
4
  "description": "Complex data grid built on top of ag-grid, with DST components and styles.",
5
5
  "author": "Procore Technologies",
6
6
  "homepage": "https://github.com/procore/core/tree/main/packages/data-table",
@@ -107,9 +107,9 @@
107
107
  "@dotenvx/dotenvx": "1.6.4",
108
108
  "@ngneat/falso": "6.4.0",
109
109
  "@procore/core-css": "10.17.0",
110
- "@procore/core-icons": "^12.9.0",
110
+ "@procore/core-icons": "^12.10.0",
111
111
  "@procore/core-prettier": "10.2.0",
112
- "@procore/core-react": "^12.26.1",
112
+ "@procore/core-react": "^12.28.1",
113
113
  "@procore/eslint-config": "10.0.0",
114
114
  "@procore/globalization-toolkit": "3.1.0",
115
115
  "@procore/labs-financials-utils": "4.3.1",