@procore/data-table 14.28.0-cdn.2 → 14.28.0-cdn.4

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,6 +1,6 @@
1
1
  # Change Log
2
2
 
3
- ## 15.0.0-cdn.0
3
+ ## 14.28.0-cdn.4
4
4
 
5
5
  ### Minor Changes
6
6
 
@@ -12,6 +12,19 @@
12
12
  - Updated dependencies [8baa7c3]
13
13
  - @procore/core-react@12.21.0-cdn.0
14
14
 
15
+ ## 14.28.0
16
+
17
+ ### Minor Changes
18
+
19
+ - e6586a3: If a row is not selectable, make isRowSelected = false
20
+ - 92682a0: Fix: ensure "Select All" checkbox stays visible and functional when the first column is hidden
21
+ - 3f72970: Add placeholder implementation for MultiSelectCellRenderer component
22
+ - 89c28a0: Prevent infinite requests when getRowId returns duplicate IDs in ServerSideDataTable.
23
+
24
+ ### Patch Changes
25
+
26
+ - 5d92cf2: Fix Misalignment in Table Headers with Nested Column Definitions
27
+
15
28
  ## 14.27.1
16
29
 
17
30
  ### Patch Changes
@@ -1424,7 +1424,7 @@ ag-grid, ag-grid-angular, ag-grid-ng2, ag-grid-polymer, ag-grid-aurelia {
1424
1424
  animation-iteration-count: infinite;
1425
1425
  animation-name: ag-shake-left-to-right;
1426
1426
  }
1427
- @keyframes _ag-shake-left-to-right_1ajw9_369 {
1427
+ @keyframes _ag-shake-left-to-right_if78k_369 {
1428
1428
  from {
1429
1429
  padding-left: 6px;
1430
1430
  padding-right: 2px;
@@ -5425,7 +5425,7 @@ input[class^=ag-][type=button]:focus, button[class^=ag-]:focus {
5425
5425
  animation-iteration-count: infinite;
5426
5426
  animation-timing-function: linear;
5427
5427
  }
5428
- @keyframes _spin_1ajw9_1 {
5428
+ @keyframes _spin_if78k_1 {
5429
5429
  from {
5430
5430
  transform: rotate(0deg);
5431
5431
  }
@@ -7680,6 +7680,9 @@ input[class^=ag-][type=range]:disabled {
7680
7680
  .ag-theme-alpine.ag-theme-alpine .ag-icon-tree-open::before {
7681
7681
  content: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='8px' height='4px'><path d='M0 0H8L4 4L0 0Z' fill='%232066DF'/></svg>");
7682
7682
  }
7683
+ .ag-theme-alpine.ag-theme-alpine .ag-header-cell-resize {
7684
+ right: -5px;
7685
+ }
7683
7686
  .ag-theme-alpine.ag-theme-alpine .ag-header-cell-resize::after {
7684
7687
  width: 1px;
7685
7688
  height: 100%;
@@ -7933,7 +7936,7 @@ input[class^=ag-][type=range]:disabled {
7933
7936
  padding-left: 16px;
7934
7937
  }
7935
7938
 
7936
- div._contextPanel_1ajw9_7156 {
7939
+ div._contextPanel_if78k_7159 {
7937
7940
  width: 400px;
7938
7941
  transition: all ease 500ms;
7939
7942
  flex: 0 0 auto;
@@ -7942,7 +7945,7 @@ div._contextPanel_1ajw9_7156 {
7942
7945
  border: 1px solid #d6dadc;
7943
7946
  display: flex;
7944
7947
  }
7945
- div._contextPanel--hidden_1ajw9_7165 {
7948
+ div._contextPanel--hidden_if78k_7168 {
7946
7949
  border: none;
7947
7950
  overflow: hidden;
7948
7951
  padding: 0px;
@@ -7950,50 +7953,50 @@ div._contextPanel--hidden_1ajw9_7165 {
7950
7953
  width: 0px;
7951
7954
  }
7952
7955
 
7953
- ._contextPanelWrapper_1ajw9_7173 {
7956
+ ._contextPanelWrapper_if78k_7176 {
7954
7957
  position: relative;
7955
7958
  flex-grow: 1;
7956
7959
  }
7957
7960
 
7958
- ._contextPanelBody_1ajw9_7178 {
7961
+ ._contextPanelBody_if78k_7181 {
7959
7962
  width: clamp(380px, 400px, 100%);
7960
7963
  }
7961
7964
 
7962
- ._contextPanel-stickyHeader_1ajw9_7182 {
7965
+ ._contextPanel-stickyHeader_if78k_7185 {
7963
7966
  background-color: #ffffff;
7964
7967
  position: sticky;
7965
7968
  top: 0;
7966
7969
  z-index: 5;
7967
7970
  }
7968
7971
 
7969
- ._filters-list_1ajw9_7189 {
7972
+ ._filters-list_if78k_7192 {
7970
7973
  padding: 0;
7971
7974
  margin: 0;
7972
7975
  }
7973
- ._filters-list_1ajw9_7189 ol {
7976
+ ._filters-list_if78k_7192 ol {
7974
7977
  padding: 0;
7975
7978
  margin: 0;
7976
7979
  }
7977
7980
 
7978
- ._col-drag-column-icon_1ajw9_7198 {
7981
+ ._col-drag-column-icon_if78k_7201 {
7979
7982
  color: #6a767c;
7980
7983
  }
7981
7984
 
7982
- ._tabular-nums_1ajw9_7202 {
7985
+ ._tabular-nums_if78k_7205 {
7983
7986
  font-variant-numeric: tabular-nums;
7984
7987
  }`;
7985
7988
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
7986
7989
  var styles_default = {
7987
- "contextPanel": "_contextPanel_1ajw9_7156",
7988
- "contextPanel--hidden": "_contextPanel--hidden_1ajw9_7165",
7989
- "contextPanelWrapper": "_contextPanelWrapper_1ajw9_7173",
7990
- "contextPanelBody": "_contextPanelBody_1ajw9_7178",
7991
- "contextPanel-stickyHeader": "_contextPanel-stickyHeader_1ajw9_7182",
7992
- "filters-list": "_filters-list_1ajw9_7189",
7993
- "col-drag-column-icon": "_col-drag-column-icon_1ajw9_7198",
7994
- "tabular-nums": "_tabular-nums_1ajw9_7202",
7995
- "ag-shake-left-to-right": "_ag-shake-left-to-right_1ajw9_369",
7996
- "spin": "_spin_1ajw9_1"
7990
+ "contextPanel": "_contextPanel_if78k_7159",
7991
+ "contextPanel--hidden": "_contextPanel--hidden_if78k_7168",
7992
+ "contextPanelWrapper": "_contextPanelWrapper_if78k_7176",
7993
+ "contextPanelBody": "_contextPanelBody_if78k_7181",
7994
+ "contextPanel-stickyHeader": "_contextPanel-stickyHeader_if78k_7185",
7995
+ "filters-list": "_filters-list_if78k_7192",
7996
+ "col-drag-column-icon": "_col-drag-column-icon_if78k_7201",
7997
+ "tabular-nums": "_tabular-nums_if78k_7205",
7998
+ "ag-shake-left-to-right": "_ag-shake-left-to-right_if78k_369",
7999
+ "spin": "_spin_if78k_1"
7997
8000
  };
7998
8001
 
7999
8002
  // src/utils/getCellValueTypographyProps.ts
@@ -54371,6 +54374,9 @@ function useFilterState({
54371
54374
  },
54372
54375
  [gridApi]
54373
54376
  );
54377
+ const filterableColumns = React80__default.default.useMemo(() => {
54378
+ return columnDefinitions.filter((colDef) => !!colDef.filterRenderer).sort(sortColumnDefinitionsByFilterIndex);
54379
+ }, [columnDefinitions]);
54374
54380
  const getFieldFilters = React80__default.default.useCallback(() => {
54375
54381
  return filterableColumns.map((column2) => {
54376
54382
  const filterInstance = getFieldFilter(column2.field);
@@ -54384,10 +54390,7 @@ function useFilterState({
54384
54390
  ...instanceOptions
54385
54391
  };
54386
54392
  }).filter((filter) => filter.instance !== void 0);
54387
- }, [getFieldFilter, gridApi]);
54388
- const filterableColumns = React80__default.default.useMemo(() => {
54389
- return columnDefinitions.filter((colDef) => !!colDef.filterRenderer).sort(sortColumnDefinitionsByFilterIndex);
54390
- }, [columnDefinitions]);
54393
+ }, [getFieldFilter, gridApi, filterableColumns]);
54391
54394
  const filterEventFunction = function filterEventFunction2() {
54392
54395
  if (listenersEnabled.current) {
54393
54396
  const allFilters = getFieldFilters();
@@ -54503,6 +54506,10 @@ function ClientSideMultiSelectFilterRenderer({
54503
54506
  value = [],
54504
54507
  ...props
54505
54508
  }) {
54509
+ const filterOptions = React80__default.default.useMemo(
54510
+ () => (options ?? []).map((option) => option ?? ""),
54511
+ [options]
54512
+ );
54506
54513
  return /* @__PURE__ */ React80__default.default.createElement(
54507
54514
  coreReact.MultiSelect,
54508
54515
  {
@@ -54518,8 +54525,8 @@ function ClientSideMultiSelectFilterRenderer({
54518
54525
  return getLabel((_a = columnDefinition.filterProps) == null ? void 0 : _a.getLabel, option);
54519
54526
  },
54520
54527
  onChange,
54521
- options,
54522
- value: ramda.intersection(value || [], options)
54528
+ options: filterOptions,
54529
+ value: ramda.intersection(value || [], filterOptions)
54523
54530
  }
54524
54531
  );
54525
54532
  }
@@ -57255,7 +57262,7 @@ var SortComponent = (props) => {
57255
57262
  return null;
57256
57263
  };
57257
57264
  var isRowSelected = (rowNode) => {
57258
- return Boolean(rowNode.selectable ? rowNode.isSelected() : true);
57265
+ return Boolean(rowNode.selectable ? rowNode.isSelected() : false);
57259
57266
  };
57260
57267
  var GenericHeaderRenderer = (props) => {
57261
57268
  var _a;
@@ -57311,22 +57318,26 @@ var GenericHeaderRenderer = (props) => {
57311
57318
  }, []);
57312
57319
  React80__default.default.useEffect(() => {
57313
57320
  function calculatePosition() {
57314
- const columns = props.columnApi.getColumnState();
57315
- if (!(columns == null ? void 0 : columns.length)) {
57321
+ const visibleColumns = props.columnApi.getAllDisplayedColumns();
57322
+ if (!(visibleColumns == null ? void 0 : visibleColumns.length))
57316
57323
  return;
57317
- }
57318
- if (columns[0].colId === colId) {
57319
- setIsFirstColumn(true);
57320
- } else {
57321
- setIsFirstColumn(false);
57322
- }
57324
+ const isCurrentFirst = visibleColumns[0].getColId() === colId;
57325
+ setIsFirstColumn(isCurrentFirst);
57323
57326
  }
57324
57327
  props.api.addEventListener("columnMoved", calculatePosition);
57328
+ props.api.addEventListener("columnPinned", calculatePosition);
57329
+ props.api.addEventListener("columnVisible", calculatePosition);
57325
57330
  calculatePosition();
57326
57331
  return () => {
57327
57332
  removeEventListenerFromGrid("columnMoved", calculatePosition, props.api);
57333
+ removeEventListenerFromGrid("columnPinned", calculatePosition, props.api);
57334
+ removeEventListenerFromGrid(
57335
+ "columnVisible",
57336
+ calculatePosition,
57337
+ props.api
57338
+ );
57328
57339
  };
57329
- }, []);
57340
+ }, [colId, props.api]);
57330
57341
  const onSortToggled = (event) => {
57331
57342
  var _a2, _b, _c;
57332
57343
  let currentSort = null;
@@ -57544,7 +57555,7 @@ var GenericHeaderRenderer = (props) => {
57544
57555
  }
57545
57556
  function updateSelectAllCheckbox(e) {
57546
57557
  var _a2;
57547
- if (e.source === "uiSelectAll") {
57558
+ if (e && e.source === "uiSelectAll") {
57548
57559
  return;
57549
57560
  }
57550
57561
  const selectionState = props.api.getServerSideSelectionState();
@@ -57557,7 +57568,10 @@ var GenericHeaderRenderer = (props) => {
57557
57568
  );
57558
57569
  const isPagination = Boolean(props.api.paginationGetRowCount());
57559
57570
  const currentRows = getCurrentRows(props.api, isPagination);
57560
- const isAllSelected = isPagination ? currentRows.length && currentRows.every(isRowSelected) : isSelectionStateSelectAll;
57571
+ const selectableRows = currentRows.filter(
57572
+ (rowNode) => rowNode.selectable
57573
+ );
57574
+ const isAllSelected = isPagination ? selectableRows.length > 0 && selectableRows.every(isRowSelected) : isSelectionStateSelectAll;
57561
57575
  const isPartialSelected = isPagination ? !isAllSelected && currentRows.some(isRowSelected) : isSelectionStatePartialSelected;
57562
57576
  if (isAllSelected) {
57563
57577
  setSelectAll("all" /* All */);
@@ -57569,6 +57583,7 @@ var GenericHeaderRenderer = (props) => {
57569
57583
  }
57570
57584
  props.api.addEventListener(selectionChanged, updateSelectAllCheckbox);
57571
57585
  props.api.addEventListener(paginationChanged, updateSelectAllCheckbox);
57586
+ updateSelectAllCheckbox();
57572
57587
  return () => {
57573
57588
  removeEventListenerFromGrid(
57574
57589
  selectionChanged,
@@ -57806,6 +57821,11 @@ function getGroupNodes(params) {
57806
57821
  function CustomLoader(params) {
57807
57822
  const I18n = coreReact.useI18nContext();
57808
57823
  const groupNodes = getGroupNodes(params);
57824
+ const internalTableContext = useInternalTableContext();
57825
+ const hasDuplicateRowIds = internalTableContext.hasDuplicateRowIds ?? false;
57826
+ if (hasDuplicateRowIds) {
57827
+ return null;
57828
+ }
57809
57829
  if (params.node === groupNodes.firstLoading) {
57810
57830
  return /* @__PURE__ */ React80__default.default.createElement(coreReact.Flex, { style: { paddingLeft: "16px" } }, /* @__PURE__ */ React80__default.default.createElement(
57811
57831
  LevelIndents,
@@ -58513,7 +58533,8 @@ var InternalTableContext = React80__default.default.createContext({
58513
58533
  },
58514
58534
  totalRowCount: 0,
58515
58535
  setTotalRowCount: () => {
58516
- }
58536
+ },
58537
+ hasDuplicateRowIds: false
58517
58538
  });
58518
58539
  var useInternalTableContext = () => React80__default.default.useContext(InternalTableContext);
58519
58540
  var prng = ulid$1.detectPrng(true);
@@ -105875,7 +105896,7 @@ var en_AU_default = {
105875
105896
  autoSizeAllColumns: "Autosize all columns",
105876
105897
  hideColumn: "Hide column",
105877
105898
  resetColumns: "Reset columns",
105878
- unGroupBy: "Un-Group by {{label}}",
105899
+ unGroupBy: "Un-group by {{label}}",
105879
105900
  groupBy: "Group by {{label}}"
105880
105901
  },
105881
105902
  grandTotals: "Grand totals",
@@ -106038,7 +106059,7 @@ var en_CA_default = {
106038
106059
  autoSizeAllColumns: "Autosize all columns",
106039
106060
  hideColumn: "Hide column",
106040
106061
  resetColumns: "Reset columns",
106041
- unGroupBy: "Un-Group by {{label}}",
106062
+ unGroupBy: "Un-group by {{label}}",
106042
106063
  groupBy: "Group by {{label}}"
106043
106064
  },
106044
106065
  grandTotals: "Grand totals",
@@ -106613,7 +106634,7 @@ var es_default = {
106613
106634
  description: "Una vez que su equipo cree \xEDtems, podr\xE1 acceder a ellos aqu\xED. ",
106614
106635
  title: "No hay \xEDtems para mostrar en este momento",
106615
106636
  itemsTitle: "No hay %{itemsLabel} para mostrar en este momento",
106616
- tooltip: "El bot\xF3n %{featureName} se habilitar\xE1 una vez que agregue informaci\xF3n al %{tableName}",
106637
+ tooltip: "El bot\xF3n %{featureName} se habilitar\xE1 una vez que agregue informaci\xF3n a la %{tableName}.",
106617
106638
  searchTooltip: "La b\xFAsqueda se habilitar\xE1 una vez que agregue informaci\xF3n a %{tableName}",
106618
106639
  featureFilter: "Filtro",
106619
106640
  featureQuickFilter: "Filtro r\xE1pido",
@@ -106627,7 +106648,7 @@ var es_default = {
106627
106648
  bulkEdit: "Edici\xF3n masiva",
106628
106649
  cancel: "Cancelar",
106629
106650
  editValues: "Editar valores",
106630
- error: "Lo sentimos, no se pudieron actualizar los \xEDtems. Vuelva a intentarlo.",
106651
+ error: "Lo sentimos, no se pudieron actualizar los \xEDtems. Int\xE9ntelo de nuevo.",
106631
106652
  placeholderForField: "Ingrese %{fieldName}",
106632
106653
  selection: "%{count} %{number} seleccionado",
106633
106654
  success: "Los \xEDtems se actualizaron correctamente.",
@@ -106673,14 +106694,14 @@ var es_default = {
106673
106694
  }
106674
106695
  },
106675
106696
  loading: {
106676
- initial: "Cargando informaci\xF3n.",
106697
+ initial: "Cargando informaci\xF3n...",
106677
106698
  secondary: "Cargando informaci\xF3n. Gracias por su paciencia."
106678
106699
  },
106679
106700
  menuOptions: {
106680
106701
  sortMenuItem: {
106681
106702
  label: "Ordenar por esta columna",
106682
- sortAscItem: "Ordenar columna ascendente",
106683
- sortDescItem: "Ordenar columna descendente",
106703
+ sortAscItem: "Ordenar columna - Ascendente",
106704
+ sortDescItem: "Ordenar columna - Descendente",
106684
106705
  sortResetItem: "Columna no ordenada"
106685
106706
  },
106686
106707
  expandAllGroups: "Expandir todos los grupos",
@@ -106790,7 +106811,7 @@ var fr_CA_default = {
106790
106811
  bulkEdit: "Modifier en bloc",
106791
106812
  cancel: "Annuler",
106792
106813
  editValues: "Modifier les valeurs",
106793
- error: "D\xE9sol\xE9, les items n'ont pas pu \xEAtre mis \xE0 jour. R\xE9essayer.",
106814
+ error: "D\xE9sol\xE9, les items n'ont pas pu \xEAtre mis \xE0 jour. Veuillez r\xE9essayer.",
106794
106815
  placeholderForField: "Entrez %{fieldName}",
106795
106816
  selection: "%{count} %{number} s\xE9lectionn\xE9",
106796
106817
  success: "Les items ont \xE9t\xE9 mis \xE0 jour avec succ\xE8s.",
@@ -106953,7 +106974,7 @@ var fr_FR_default = {
106953
106974
  bulkEdit: "Modifier en masse",
106954
106975
  cancel: "Annuler",
106955
106976
  editValues: "Modifier les valeurs",
106956
- error: "D\xE9sol\xE9, les \xE9l\xE9ments n'ont pas pu \xEAtre mis \xE0 jour. R\xE9essayez.",
106977
+ error: "D\xE9sol\xE9, les \xE9l\xE9ments n'ont pas pu \xEAtre mis \xE0 jour. Veuillez r\xE9essayer.",
106957
106978
  placeholderForField: "Saisissez %{fieldName}",
106958
106979
  selection: "%{count} %{number} s\xE9lectionn\xE9",
106959
106980
  success: "Les \xE9l\xE9ments ont bien \xE9t\xE9 mis \xE0 jour.",
@@ -107771,7 +107792,7 @@ var pt_BR_default = {
107771
107792
  bulkEdit: "Edi\xE7\xE3o em Massa",
107772
107793
  cancel: "Cancelar",
107773
107794
  editValues: "Editar Valores",
107774
- error: "Lamentamos, mas n\xE3o foi poss\xEDvel atualizar os itens. Tente novamente.",
107795
+ error: "Sentimos muito, mas n\xE3o foi poss\xEDvel atualizar os itens. Tente novamente.",
107775
107796
  placeholderForField: "Digite %{fieldName}",
107776
107797
  selection: "%{count} %{number} selecionado",
107777
107798
  success: "Os itens foram atualizados com sucesso.",
@@ -107934,7 +107955,7 @@ var th_TH_default = {
107934
107955
  bulkEdit: "\u0E01\u0E32\u0E23\u0E41\u0E01\u0E49\u0E44\u0E02\u0E41\u0E1A\u0E1A\u0E01\u0E25\u0E38\u0E48\u0E21",
107935
107956
  cancel: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
107936
107957
  editValues: "\u0E41\u0E01\u0E49\u0E44\u0E02\u0E04\u0E48\u0E32",
107937
- error: "\u0E02\u0E2D\u0E2D\u0E20\u0E31\u0E22 \u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E44\u0E14\u0E49 \u0E42\u0E1B\u0E23\u0E14\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
107958
+ error: "\u0E02\u0E2D\u0E2D\u0E20\u0E31\u0E22 \u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E44\u0E14\u0E49 \u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07.",
107938
107959
  placeholderForField: "\u0E1B\u0E49\u0E2D\u0E19 %{fieldName}",
107939
107960
  selection: "%{count} %{number} \u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",
107940
107961
  success: "\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08\u0E41\u0E25\u0E49\u0E27",
@@ -109317,6 +109338,7 @@ var DataTable = ({
109317
109338
  );
109318
109339
  const [gridApi, setGridApi] = React80__default.default.useState();
109319
109340
  const [columnApi, setColumnApi] = React80__default.default.useState();
109341
+ const [hasDuplicateRowIds, setHasDuplicateRowIds] = React80__default.default.useState(false);
109320
109342
  const searchStorage = useSearchStorage();
109321
109343
  const filterState = useFilterState({
109322
109344
  columnDefinitions: columns,
@@ -109394,7 +109416,9 @@ var DataTable = ({
109394
109416
  gridApi == null ? void 0 : gridApi.hideOverlay.bind(gridApi),
109395
109417
  filterStorage.filtersState,
109396
109418
  searchStorage.searchValue,
109397
- setTotalRowCount
109419
+ setTotalRowCount,
109420
+ setHasDuplicateRowIds,
109421
+ getRowId
109398
109422
  )
109399
109423
  );
109400
109424
  gridApi == null ? void 0 : gridApi.paginationGoToPage(0);
@@ -109489,7 +109513,8 @@ var DataTable = ({
109489
109513
  tableRef,
109490
109514
  totalRowCount,
109491
109515
  setTotalRowCount,
109492
- updateServerSideDataSource
109516
+ updateServerSideDataSource,
109517
+ hasDuplicateRowIds
109493
109518
  }
109494
109519
  },
109495
109520
  children
@@ -109500,12 +109525,34 @@ var rowDragMoveEvent;
109500
109525
  var rowDragEndEvent;
109501
109526
  function getServerSideDatasource(onServerSideDataRequestCallbackRef, onEmptyResponseCallback = () => {
109502
109527
  }, onNonEmptyResponseCallback = () => {
109503
- }, filters, search, setTotalRowCount) {
109528
+ }, filters, search, setTotalRowCount, setHasDuplicateRowIds, getRowId) {
109504
109529
  return {
109505
109530
  getRows: async (params) => {
109506
109531
  if (onServerSideDataRequestCallbackRef.current) {
109507
109532
  const { request, success, fail } = params;
109508
109533
  const onSuccess = (loadSuccessParams) => {
109534
+ const { rowData } = loadSuccessParams;
109535
+ if (rowData && Array.isArray(rowData) && getRowId) {
109536
+ const uniqueRowIds = /* @__PURE__ */ new Set();
109537
+ for (const row2 of rowData) {
109538
+ const id = getRowId({
109539
+ data: row2,
109540
+ level: 0,
109541
+ api: {},
109542
+ columnApi: {},
109543
+ context: {}
109544
+ });
109545
+ if (uniqueRowIds.has(id)) {
109546
+ setHasDuplicateRowIds(true);
109547
+ logger.error(
109548
+ "Duplicate row IDs detected in rowData. Check getRowId() to ensure it returns unique IDs."
109549
+ );
109550
+ fail();
109551
+ return;
109552
+ }
109553
+ uniqueRowIds.add(id);
109554
+ }
109555
+ }
109509
109556
  if (!loadSuccessParams.rowCount && request.groupKeys.length === 0) {
109510
109557
  onEmptyResponseCallback();
109511
109558
  } else {
@@ -110523,13 +110570,7 @@ function ClientSideFilterInner(props) {
110523
110570
  var _a, _b;
110524
110571
  const { Component: Component4, columnDefinition, onChange, options, value } = props;
110525
110572
  const filterHeading = ((_b = (_a = columnDefinition.filterProps) == null ? void 0 : _a.getFilterHeadingText) == null ? void 0 : _b.call(_a, columnDefinition)) ?? columnDefinition.headerName;
110526
- const filterOptions = React80__default.default.useMemo(
110527
- () => {
110528
- var _a2;
110529
- return (_a2 = options ?? []) == null ? void 0 : _a2.filter((option) => !!option);
110530
- },
110531
- [options]
110532
- );
110573
+ const filterOptions = React80__default.default.useMemo(() => options ?? [], [options]);
110533
110574
  return /* @__PURE__ */ React80__default.default.createElement(coreReact.Box, { as: "li", display: "block", paddingBottom: "xl", style: { width: "100%" } }, filterHeading ? /* @__PURE__ */ React80__default.default.createElement(
110534
110575
  coreReact.Label,
110535
110576
  {
@@ -1378,6 +1378,7 @@ interface InternalTableContext {
1378
1378
  getColumnDefinition: (field: string) => ColumnDefinition | undefined;
1379
1379
  totalRowCount: number;
1380
1380
  setTotalRowCount: React__default.Dispatch<React__default.SetStateAction<number>>;
1381
+ hasDuplicateRowIds: boolean;
1381
1382
  setSelectedGroupIndex?: React__default.Dispatch<React__default.SetStateAction<string | null>>;
1382
1383
  }
1383
1384
  declare const InternalTableContext: React__default.Context<InternalTableContext>;
@@ -1378,6 +1378,7 @@ interface InternalTableContext {
1378
1378
  getColumnDefinition: (field: string) => ColumnDefinition | undefined;
1379
1379
  totalRowCount: number;
1380
1380
  setTotalRowCount: React__default.Dispatch<React__default.SetStateAction<number>>;
1381
+ hasDuplicateRowIds: boolean;
1381
1382
  setSelectedGroupIndex?: React__default.Dispatch<React__default.SetStateAction<string | null>>;
1382
1383
  }
1383
1384
  declare const InternalTableContext: React__default.Context<InternalTableContext>;