@procore/data-table 14.8.0 → 14.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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Change Log
2
2
 
3
+ ## 14.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 686d8f67d: Add support for conditional row actions when column virtualization is disabled
8
+ - db69660a7: Add default behaviour for persistance
9
+
10
+ ### Patch Changes
11
+
12
+ - 7e74d5c1a: Ensure unviewable columns stay hidden when ungrouping
13
+ - 60800b67c: Fix client-side tables to only select filtered rows
14
+ - d263b410f: Add Background, Border and Box Shadow for pinned column footer cell
15
+
3
16
  ## 14.8.0
4
17
 
5
18
  ### Minor Changes
@@ -13,6 +13,7 @@ var ulid$1 = require('ulid');
13
13
  var toastAlert = require('@procore/toast-alert');
14
14
  var ReactDOM = require('react-dom');
15
15
  var server = require('react-dom/server');
16
+ var webSdkStorage = require('@procore/web-sdk-storage');
16
17
  var _isEqual = require('lodash.isequal');
17
18
  var ReactResizeDetector = require('react-resize-detector');
18
19
  var labsDatetimeSelect = require('@procore/labs-datetime-select');
@@ -1419,7 +1420,7 @@ ag-grid, ag-grid-angular, ag-grid-ng2, ag-grid-polymer, ag-grid-aurelia {
1419
1420
  animation-iteration-count: infinite;
1420
1421
  animation-name: ag-shake-left-to-right;
1421
1422
  }
1422
- @keyframes _ag-shake-left-to-right_10eap_366 {
1423
+ @keyframes _ag-shake-left-to-right_7x7l9_366 {
1423
1424
  from {
1424
1425
  padding-left: 6px;
1425
1426
  padding-right: 2px;
@@ -5420,7 +5421,7 @@ input[class^=ag-][type=button]:focus, button[class^=ag-]:focus {
5420
5421
  animation-iteration-count: infinite;
5421
5422
  animation-timing-function: linear;
5422
5423
  }
5423
- @keyframes _spin_10eap_1 {
5424
+ @keyframes _spin_7x7l9_1 {
5424
5425
  from {
5425
5426
  transform: rotate(0deg);
5426
5427
  }
@@ -7541,6 +7542,18 @@ input[class^=ag-][type=range]:disabled {
7541
7542
  box-shadow: 0px -6px 12px -3px hsla(200, 8%, 10%, 0.25);
7542
7543
  z-index: 2;
7543
7544
  }
7545
+ .ag-theme-alpine.ag-theme-alpine .ag-floating-bottom .ag-pinned-left-floating-bottom .ag-row, .ag-theme-alpine.ag-theme-alpine .ag-floating-bottom .ag-pinned-right-floating-bottom .ag-row {
7546
+ background-color: #f4f5f6;
7547
+ }
7548
+ .ag-theme-alpine.ag-theme-alpine .ag-floating-bottom .ag-pinned-left-floating-bottom {
7549
+ z-index: 1;
7550
+ box-shadow: 3px 0px 12px 0.5px hsl(200, 8%, 90%);
7551
+ border-right: 1px solid #d6dadc;
7552
+ }
7553
+ .ag-theme-alpine.ag-theme-alpine .ag-floating-bottom .ag-pinned-right-floating-bottom {
7554
+ box-shadow: -3px 0px 12px 0.5px hsl(200, 8%, 90%);
7555
+ border-left: 1px solid #d6dadc;
7556
+ }
7544
7557
  .ag-theme-alpine.ag-theme-alpine .ag-group-value {
7545
7558
  line-height: 16px;
7546
7559
  }
@@ -7907,7 +7920,7 @@ input[class^=ag-][type=range]:disabled {
7907
7920
  padding-left: 16px;
7908
7921
  }
7909
7922
 
7910
- div._contextPanel_10eap_7131 {
7923
+ div._contextPanel_7x7l9_7144 {
7911
7924
  width: 400px;
7912
7925
  transition: all ease 500ms;
7913
7926
  flex: 0 0 auto;
@@ -7916,7 +7929,7 @@ div._contextPanel_10eap_7131 {
7916
7929
  border: 1px solid #d6dadc;
7917
7930
  display: flex;
7918
7931
  }
7919
- div._contextPanel--hidden_10eap_7140 {
7932
+ div._contextPanel--hidden_7x7l9_7153 {
7920
7933
  border: none;
7921
7934
  overflow: hidden;
7922
7935
  padding: 0px;
@@ -7924,50 +7937,50 @@ div._contextPanel--hidden_10eap_7140 {
7924
7937
  width: 0px;
7925
7938
  }
7926
7939
 
7927
- ._contextPanelWrapper_10eap_7148 {
7940
+ ._contextPanelWrapper_7x7l9_7161 {
7928
7941
  position: relative;
7929
7942
  flex-grow: 1;
7930
7943
  }
7931
7944
 
7932
- ._contextPanelBody_10eap_7153 {
7945
+ ._contextPanelBody_7x7l9_7166 {
7933
7946
  width: clamp(380px, 400px, 100%);
7934
7947
  }
7935
7948
 
7936
- ._contextPanel-stickyHeader_10eap_7157 {
7949
+ ._contextPanel-stickyHeader_7x7l9_7170 {
7937
7950
  background-color: #ffffff;
7938
7951
  position: sticky;
7939
7952
  top: 0;
7940
7953
  z-index: 5;
7941
7954
  }
7942
7955
 
7943
- ._filters-list_10eap_7164 {
7956
+ ._filters-list_7x7l9_7177 {
7944
7957
  padding: 0;
7945
7958
  margin: 0;
7946
7959
  }
7947
- ._filters-list_10eap_7164 ol {
7960
+ ._filters-list_7x7l9_7177 ol {
7948
7961
  padding: 0;
7949
7962
  margin: 0;
7950
7963
  }
7951
7964
 
7952
- ._col-drag-column-icon_10eap_7173 {
7965
+ ._col-drag-column-icon_7x7l9_7186 {
7953
7966
  color: #6a767c;
7954
7967
  }
7955
7968
 
7956
- ._tabular-nums_10eap_7177 {
7969
+ ._tabular-nums_7x7l9_7190 {
7957
7970
  font-variant-numeric: tabular-nums;
7958
7971
  }`;
7959
7972
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
7960
7973
  var styles_default = {
7961
- "contextPanel": "_contextPanel_10eap_7131",
7962
- "contextPanel--hidden": "_contextPanel--hidden_10eap_7140",
7963
- "contextPanelWrapper": "_contextPanelWrapper_10eap_7148",
7964
- "contextPanelBody": "_contextPanelBody_10eap_7153",
7965
- "contextPanel-stickyHeader": "_contextPanel-stickyHeader_10eap_7157",
7966
- "filters-list": "_filters-list_10eap_7164",
7967
- "col-drag-column-icon": "_col-drag-column-icon_10eap_7173",
7968
- "tabular-nums": "_tabular-nums_10eap_7177",
7969
- "ag-shake-left-to-right": "_ag-shake-left-to-right_10eap_366",
7970
- "spin": "_spin_10eap_1"
7974
+ "contextPanel": "_contextPanel_7x7l9_7144",
7975
+ "contextPanel--hidden": "_contextPanel--hidden_7x7l9_7153",
7976
+ "contextPanelWrapper": "_contextPanelWrapper_7x7l9_7161",
7977
+ "contextPanelBody": "_contextPanelBody_7x7l9_7166",
7978
+ "contextPanel-stickyHeader": "_contextPanel-stickyHeader_7x7l9_7170",
7979
+ "filters-list": "_filters-list_7x7l9_7177",
7980
+ "col-drag-column-icon": "_col-drag-column-icon_7x7l9_7186",
7981
+ "tabular-nums": "_tabular-nums_7x7l9_7190",
7982
+ "ag-shake-left-to-right": "_ag-shake-left-to-right_7x7l9_366",
7983
+ "spin": "_spin_7x7l9_1"
7971
7984
  };
7972
7985
 
7973
7986
  // src/utils/getCellValueTypographyProps.ts
@@ -55242,6 +55255,16 @@ function getParentSelectionState(parent, affectedRows, parentChildrenMap) {
55242
55255
  return rowSelectionState.indeterminate;
55243
55256
  }
55244
55257
  }
55258
+ function getNodeSelectedState(node) {
55259
+ const filteredChildren = node.childrenAfterFilter || [];
55260
+ const numSelectedChildren = filteredChildren.filter(
55261
+ (child) => child.isSelected()
55262
+ ).length;
55263
+ return {
55264
+ selected: filteredChildren.length > 0 ? numSelectedChildren > 0 : node.isSelected(),
55265
+ indeterminate: filteredChildren ? numSelectedChildren > 0 && filteredChildren.length !== numSelectedChildren : false
55266
+ };
55267
+ }
55245
55268
  function getAffectedRows(currentRows, selectionNode, affectedRows) {
55246
55269
  var _a;
55247
55270
  const isNodeRootLevel = isNodeRootLevelOfGrid(selectionNode.parent);
@@ -55322,13 +55345,9 @@ function getAffectedRows(currentRows, selectionNode, affectedRows) {
55322
55345
  function noop2() {
55323
55346
  }
55324
55347
  function ClientSideRowCheckbox(props) {
55325
- var _a, _b;
55326
- const [selected, setSelected] = React83.useState(props.node.isSelected());
55327
- const numSelectedChildren = (props.node.childrenAfterGroup || []).filter(
55328
- (child) => child.isSelected()
55329
- ).length;
55330
- const selectedState = props.node.childrenAfterGroup ? numSelectedChildren > 0 : props.node.isSelected();
55331
- const indeterminateState = props.node.childrenAfterGroup ? numSelectedChildren > 0 && ((_a = props.node.childrenAfterGroup) == null ? void 0 : _a.length) !== numSelectedChildren : false;
55348
+ var _a;
55349
+ const [_selected, setSelected] = React83.useState(props.node.isSelected());
55350
+ const { selected, indeterminate } = getNodeSelectedState(props.node);
55332
55351
  function handleRowSelection(event) {
55333
55352
  if (props.node === event.node) {
55334
55353
  setSelected(event.node.isSelected());
@@ -55343,13 +55362,18 @@ function ClientSideRowCheckbox(props) {
55343
55362
  return /* @__PURE__ */ React83__default.default.createElement(coreReact.Box, { paddingRight: "md" }, /* @__PURE__ */ React83__default.default.createElement(
55344
55363
  coreReact.Checkbox,
55345
55364
  {
55346
- checked: selectedState,
55347
- disabled: (_b = props.data) == null ? void 0 : _b.checkboxDisabled,
55348
- indeterminate: indeterminateState,
55365
+ checked: selected,
55366
+ disabled: (_a = props.data) == null ? void 0 : _a.checkboxDisabled,
55367
+ indeterminate,
55349
55368
  "data-qa": "rowCheckbox",
55350
55369
  onClick: noop2,
55351
- onChange: () => {
55352
- props.node.setSelected(!selected, void 0, "checkboxSelected");
55370
+ onChange: (event) => {
55371
+ return props.node.setSelectedParams({
55372
+ newValue: event.target.checked,
55373
+ groupSelectsFiltered: true,
55374
+ event,
55375
+ source: "checkboxSelected"
55376
+ });
55353
55377
  }
55354
55378
  }
55355
55379
  ));
@@ -55515,23 +55539,33 @@ var AutoGroupCellRenderer = (props) => {
55515
55539
  };
55516
55540
 
55517
55541
  // src/CellRenderers/rowActionsCellStyles.scss
55518
- var css6 = `div[col-id=rowActions] {
55519
- left: calc(var(--viewport-width) - var(--rowActions-width)) !important;
55520
- padding: 0px 8px !important;
55542
+ var css6 = `.ag-theme-alpine.ag-theme-alpine div.ag-cell[col-id=rowActions] {
55543
+ left: var(--viewport-width) !important;
55544
+ width: 0px !important;
55545
+ padding: 0px !important;
55521
55546
  position: sticky;
55522
55547
  visibility: hidden;
55523
55548
  flex: none;
55549
+ background: none;
55550
+ overflow: visible;
55524
55551
  }
55525
- .ag-row-hover div[col-id=rowActions] {
55552
+ .ag-theme-alpine.ag-theme-alpine div.ag-cell[col-id=rowActions] .inline-nonedit-wrapper {
55553
+ width: auto;
55554
+ height: 100%;
55555
+ padding: 0px 8px;
55556
+ position: absolute;
55557
+ right: 0px;
55558
+ }
55559
+ .ag-theme-alpine.ag-theme-alpine .ag-row-hover div.ag-cell[col-id=rowActions] .inline-nonedit-wrapper {
55526
55560
  background: #f4f5f6;
55527
55561
  }
55528
- .ag-row-focus div[col-id=rowActions] {
55562
+ .ag-theme-alpine.ag-theme-alpine .ag-row-focus div.ag-cell[col-id=rowActions] .inline-nonedit-wrapper {
55529
55563
  background: #f6f9fe;
55530
55564
  }
55531
- .ag-row-hover div[col-id=rowActions], .ag-row-focus div[col-id=rowActions] {
55565
+ .ag-theme-alpine.ag-theme-alpine .ag-row-hover .ag-cell[col-id=rowActions], .ag-theme-alpine.ag-theme-alpine .ag-row-focus .ag-cell[col-id=rowActions] {
55532
55566
  visibility: visible;
55533
55567
  }
55534
- div[col-id=rowActions-pinned] {
55568
+ .ag-theme-alpine.ag-theme-alpine .ag-cell[col-id=rowActions-pinned] {
55535
55569
  background: "transparent";
55536
55570
  left: calc(var(--viewport-width) - var(--rowActions-width)) !important;
55537
55571
  padding: 2px 8px !important;
@@ -55540,8 +55574,18 @@ div[col-id=rowActions-pinned] {
55540
55574
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css6));
55541
55575
 
55542
55576
  // src/CellRenderers/RowActionsCell.tsx
55577
+ function getRowActions(actions, rowProps) {
55578
+ if (typeof actions === "function") {
55579
+ return actions(rowProps);
55580
+ }
55581
+ return actions;
55582
+ }
55543
55583
  var InternalRowActionsCellRenderer = (props) => {
55544
- if (props.rowPinned || props.columnDefinition.cellRendererParams.hideActionsOnGroupedRow && props.isGroup) {
55584
+ const actions = getRowActions(
55585
+ props.columnDefinition.cellRendererParams.actions,
55586
+ props
55587
+ );
55588
+ if (props.rowPinned || props.columnDefinition.cellRendererParams.hideActionsOnGroupedRow && props.isGroup || actions.length === 0) {
55545
55589
  return null;
55546
55590
  }
55547
55591
  return /* @__PURE__ */ React83__default.default.createElement(
@@ -55552,7 +55596,7 @@ var InternalRowActionsCellRenderer = (props) => {
55552
55596
  size: "xs",
55553
55597
  margin: "0px 4px"
55554
55598
  },
55555
- props.columnDefinition.cellRendererParams.actions.map((Action, idx) => {
55599
+ actions.map((Action, idx) => {
55556
55600
  const key = `${Action.displayName}${idx}`;
55557
55601
  return /* @__PURE__ */ React83__default.default.createElement(Action, { ...props, key });
55558
55602
  })
@@ -56213,6 +56257,7 @@ var css7 = `.ag-header-cell .data-table-header-menu {
56213
56257
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css7));
56214
56258
 
56215
56259
  // src/GenericHeader/GenericHeader.tsx
56260
+ var filterChanged = "filterChanged";
56216
56261
  var selectionChanged = "selectionChanged";
56217
56262
  var paginationChanged = "paginationChanged";
56218
56263
  var tooltipDelay = {
@@ -56518,7 +56563,7 @@ var GenericHeaderRenderer = (props) => {
56518
56563
  if (node.selectable === false) {
56519
56564
  return;
56520
56565
  }
56521
- if (node.isSelected()) {
56566
+ if (getNodeSelectedState(node).selected) {
56522
56567
  hasSelectedNodes = true;
56523
56568
  } else {
56524
56569
  isAllSelected = false;
@@ -56532,9 +56577,11 @@ var GenericHeaderRenderer = (props) => {
56532
56577
  setSelectAll("none" /* None */);
56533
56578
  }
56534
56579
  }
56580
+ props.api.addEventListener(filterChanged, onSelectionChanged);
56535
56581
  props.api.addEventListener(selectionChanged, onSelectionChanged);
56536
56582
  onSelectionChanged();
56537
56583
  return () => {
56584
+ removeEventListenerFromGrid(filterChanged, onSelectionChanged, props.api);
56538
56585
  removeEventListenerFromGrid(
56539
56586
  selectionChanged,
56540
56587
  onSelectionChanged,
@@ -81140,9 +81187,20 @@ var useTableApi = ({
81140
81187
  message
81141
81188
  });
81142
81189
  }, []);
81190
+ function getUnviewableGroupedColumns(columnApi2) {
81191
+ return ((columnApi2 == null ? void 0 : columnApi2.getRowGroupColumns()) ?? []).filter((column2) => {
81192
+ const colDef = column2.getColDef();
81193
+ return colDef.lockVisible && colDef.hide;
81194
+ }).map((column2) => column2.getColId());
81195
+ }
81143
81196
  const setRowGrouping = React83__default.default.useCallback(
81144
81197
  (value) => {
81198
+ const unviewableGroupedColumns = getUnviewableGroupedColumns(columnApi);
81145
81199
  columnApi == null ? void 0 : columnApi.setRowGroupColumns(value);
81200
+ const recentlyUngroupedUnviewableColumns = unviewableGroupedColumns.filter((colId) => !value.includes(colId));
81201
+ if (recentlyUngroupedUnviewableColumns.length > 0) {
81202
+ columnApi == null ? void 0 : columnApi.setColumnsVisible(recentlyUngroupedUnviewableColumns, false);
81203
+ }
81146
81204
  resetPagination();
81147
81205
  },
81148
81206
  [columnApi]
@@ -81621,15 +81679,16 @@ var DataTable = ({
81621
81679
  onTableConfigChange,
81622
81680
  showExpandCollapseAllToggle,
81623
81681
  translations: translations2 = {},
81624
- enableCellTextSelection
81682
+ enableCellTextSelection,
81683
+ localStoragePersistenceKey
81625
81684
  }) => {
81626
- const [initialTableConfig] = React83__default.default.useState(_initialTableConfig);
81685
+ const initialTableConfig = localStoragePersistenceKey && webSdkStorage.storage.local.getItem(localStoragePersistenceKey) || _initialTableConfig;
81627
81686
  const onServerSideDataRequestRef = React83__default.default.useRef(onServerSideDataRequest);
81628
81687
  const tableRef = React83__default.default.useRef(null);
81629
81688
  const [totalRowCount, setTotalRowCount] = React83__default.default.useState(0);
81630
81689
  const [selectedGroupIndex, setSelectedGroupIndex] = React83__default.default.useState(null);
81631
81690
  const [initialConfigSet, setInitialConfigSet] = React83__default.default.useState(
81632
- !_initialTableConfig
81691
+ !initialTableConfig
81633
81692
  );
81634
81693
  const contextPanel = useContextPanel();
81635
81694
  const clientI18n = coreReact.useI18nContext();
@@ -81719,18 +81778,31 @@ var DataTable = ({
81719
81778
  });
81720
81779
  checkboxColumn.current = newCheckboxColumn;
81721
81780
  }
81722
- if (!gridApi || !columnApi || !onTableConfigChange) {
81781
+ if (!gridApi || !columnApi) {
81723
81782
  return;
81724
81783
  }
81725
81784
  const config = (_a = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _a.getTableConfiguration();
81726
81785
  if (config) {
81727
- onTableConfigChange({
81786
+ if (localStoragePersistenceKey) {
81787
+ webSdkStorage.storage.local.setItem(localStoragePersistenceKey, {
81788
+ ...config,
81789
+ rowHeight: rowHeightRef.current,
81790
+ serverFilters: filterStorage.filtersState
81791
+ });
81792
+ }
81793
+ onTableConfigChange == null ? void 0 : onTableConfigChange({
81728
81794
  ...config,
81729
81795
  rowHeight: rowHeightRef.current,
81730
81796
  serverFilters: filterStorage.filtersState
81731
81797
  });
81732
81798
  }
81733
- }, [gridApi, columnApi, onTableConfigChange, filterStorage.filtersState]);
81799
+ }, [
81800
+ gridApi,
81801
+ columnApi,
81802
+ onTableConfigChange,
81803
+ filterStorage.filtersState,
81804
+ localStoragePersistenceKey
81805
+ ]);
81734
81806
  const filtersRef = React83.useRef(filterStorage.selectedFilters);
81735
81807
  if (!_isEqual__default.default(filtersRef.current, filterStorage.selectedFilters)) {
81736
81808
  filtersRef.current = filterStorage.selectedFilters;
@@ -82088,10 +82160,14 @@ var Table = (props) => {
82088
82160
  suppressMovable: true,
82089
82161
  suppressSizeToFit: true,
82090
82162
  suppressMenu: true,
82091
- width: rowActionsWidth.current,
82092
- minWidth: rowActionsWidth.current,
82163
+ width: suppressColumnVirtualisation ? 0 : rowActionsWidth.current,
82164
+ minWidth: suppressColumnVirtualisation ? 0 : rowActionsWidth.current,
82093
82165
  cellStyle: (params) => {
82094
- if (params.node.rowPinned === "bottom") {
82166
+ const actions = getRowActions(
82167
+ params.colDef.cellRendererParams.actions,
82168
+ params
82169
+ );
82170
+ if (params.node.rowPinned === "bottom" || actions.length === 0) {
82095
82171
  return {
82096
82172
  display: "none"
82097
82173
  };
@@ -82845,7 +82921,8 @@ var ClientSideDataTable = ({
82845
82921
  onBulkEditUpdate,
82846
82922
  onTableConfigChange,
82847
82923
  translations: translations2 = {},
82848
- enableCellTextSelection
82924
+ enableCellTextSelection,
82925
+ localStoragePersistenceKey
82849
82926
  }) => {
82850
82927
  return /* @__PURE__ */ React83__default.default.createElement(
82851
82928
  DataTable,
@@ -82861,6 +82938,7 @@ var ClientSideDataTable = ({
82861
82938
  onBulkEditUpdate,
82862
82939
  showExpandCollapseAllToggle: true,
82863
82940
  translations: translations2,
82941
+ localStoragePersistenceKey,
82864
82942
  customBulkEditorFields,
82865
82943
  enableCellTextSelection
82866
82944
  },
@@ -87365,8 +87443,8 @@ var FilterListener = class FilterListener2 extends BeanStub {
87365
87443
  Object.keys(allColKeysMap).forEach((key) => {
87366
87444
  const oldJson = JSON.stringify(oldModel[key]);
87367
87445
  const newJson = JSON.stringify(newModel[key]);
87368
- const filterChanged = oldJson != newJson;
87369
- if (filterChanged) {
87446
+ const filterChanged2 = oldJson != newJson;
87447
+ if (filterChanged2) {
87370
87448
  res.push(key);
87371
87449
  }
87372
87450
  });
@@ -88277,7 +88355,8 @@ var ServerSideDataTable = ({
88277
88355
  onTableConfigChange,
88278
88356
  enableCellTextSelection,
88279
88357
  showExpandCollapseAllToggle,
88280
- translations: translations2 = {}
88358
+ translations: translations2 = {},
88359
+ localStoragePersistenceKey
88281
88360
  }) => {
88282
88361
  return /* @__PURE__ */ React83__default.default.createElement(
88283
88362
  DataTable,
@@ -88295,7 +88374,8 @@ var ServerSideDataTable = ({
88295
88374
  showExpandCollapseAllToggle,
88296
88375
  translations: translations2,
88297
88376
  customBulkEditorFields,
88298
- enableCellTextSelection
88377
+ enableCellTextSelection,
88378
+ localStoragePersistenceKey
88299
88379
  },
88300
88380
  children
88301
88381
  );
@@ -960,7 +960,7 @@ interface TableProps<TRow = any, TBottomRow = any> {
960
960
  paginationPageSize?: number;
961
961
  pinnedBottomRowData?: TBottomRow[];
962
962
  popupParent?: HTMLElement;
963
- rowActions?: React.FunctionComponent<any>[];
963
+ rowActions?: React.FunctionComponent<any>[] | ((rowProps: DataTableCellRendererProps) => React.FunctionComponent<any>[]);
964
964
  /**
965
965
  * @private
966
966
  * Unsafe to use.
@@ -1088,6 +1088,7 @@ interface DataTableProps {
1088
1088
  * the updated values
1089
1089
  */
1090
1090
  onBulkEditUpdate?: (rows: BulkEditResult[]) => Promise<void>;
1091
+ localStoragePersistenceKey?: string;
1091
1092
  showExpandCollapseAllToggle?: boolean;
1092
1093
  translations?: DataTableTranslations;
1093
1094
  enableCellTextSelection?: boolean;
@@ -1336,7 +1337,7 @@ interface BulkActionProps {
1336
1337
  style?: React__default.CSSProperties;
1337
1338
  }
1338
1339
 
1339
- declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1340
+ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1340
1341
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1341
1342
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1342
1343
  ConfigPanelButton: React__default.FC<{}>;
@@ -1373,7 +1374,7 @@ declare const MultiSelectQuickFilterRenderer: (props: FilterProps<any[]>) => Rea
1373
1374
 
1374
1375
  declare const SingleSelectQuickFilterRenderer: (props: FilterProps<any[]>) => React__default.JSX.Element;
1375
1376
 
1376
- declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1377
+ declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1377
1378
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1378
1379
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1379
1380
  ConfigPanelButton: React__default.FC<{}>;
@@ -960,7 +960,7 @@ interface TableProps<TRow = any, TBottomRow = any> {
960
960
  paginationPageSize?: number;
961
961
  pinnedBottomRowData?: TBottomRow[];
962
962
  popupParent?: HTMLElement;
963
- rowActions?: React.FunctionComponent<any>[];
963
+ rowActions?: React.FunctionComponent<any>[] | ((rowProps: DataTableCellRendererProps) => React.FunctionComponent<any>[]);
964
964
  /**
965
965
  * @private
966
966
  * Unsafe to use.
@@ -1088,6 +1088,7 @@ interface DataTableProps {
1088
1088
  * the updated values
1089
1089
  */
1090
1090
  onBulkEditUpdate?: (rows: BulkEditResult[]) => Promise<void>;
1091
+ localStoragePersistenceKey?: string;
1091
1092
  showExpandCollapseAllToggle?: boolean;
1092
1093
  translations?: DataTableTranslations;
1093
1094
  enableCellTextSelection?: boolean;
@@ -1336,7 +1337,7 @@ interface BulkActionProps {
1336
1337
  style?: React__default.CSSProperties;
1337
1338
  }
1338
1339
 
1339
- declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1340
+ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1340
1341
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1341
1342
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1342
1343
  ConfigPanelButton: React__default.FC<{}>;
@@ -1373,7 +1374,7 @@ declare const MultiSelectQuickFilterRenderer: (props: FilterProps<any[]>) => Rea
1373
1374
 
1374
1375
  declare const SingleSelectQuickFilterRenderer: (props: FilterProps<any[]>) => React__default.JSX.Element;
1375
1376
 
1376
- declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1377
+ declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1377
1378
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1378
1379
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1379
1380
  ConfigPanelButton: React__default.FC<{}>;