@procore/data-table 14.28.0-cdn.1 → 14.28.0-cdn.3

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.
@@ -1409,7 +1409,7 @@ ag-grid, ag-grid-angular, ag-grid-ng2, ag-grid-polymer, ag-grid-aurelia {
1409
1409
  animation-iteration-count: infinite;
1410
1410
  animation-name: ag-shake-left-to-right;
1411
1411
  }
1412
- @keyframes _ag-shake-left-to-right_1ajw9_369 {
1412
+ @keyframes _ag-shake-left-to-right_if78k_369 {
1413
1413
  from {
1414
1414
  padding-left: 6px;
1415
1415
  padding-right: 2px;
@@ -5410,7 +5410,7 @@ input[class^=ag-][type=button]:focus, button[class^=ag-]:focus {
5410
5410
  animation-iteration-count: infinite;
5411
5411
  animation-timing-function: linear;
5412
5412
  }
5413
- @keyframes _spin_1ajw9_1 {
5413
+ @keyframes _spin_if78k_1 {
5414
5414
  from {
5415
5415
  transform: rotate(0deg);
5416
5416
  }
@@ -7665,6 +7665,9 @@ input[class^=ag-][type=range]:disabled {
7665
7665
  .ag-theme-alpine.ag-theme-alpine .ag-icon-tree-open::before {
7666
7666
  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>");
7667
7667
  }
7668
+ .ag-theme-alpine.ag-theme-alpine .ag-header-cell-resize {
7669
+ right: -5px;
7670
+ }
7668
7671
  .ag-theme-alpine.ag-theme-alpine .ag-header-cell-resize::after {
7669
7672
  width: 1px;
7670
7673
  height: 100%;
@@ -7918,7 +7921,7 @@ input[class^=ag-][type=range]:disabled {
7918
7921
  padding-left: 16px;
7919
7922
  }
7920
7923
 
7921
- div._contextPanel_1ajw9_7156 {
7924
+ div._contextPanel_if78k_7159 {
7922
7925
  width: 400px;
7923
7926
  transition: all ease 500ms;
7924
7927
  flex: 0 0 auto;
@@ -7927,7 +7930,7 @@ div._contextPanel_1ajw9_7156 {
7927
7930
  border: 1px solid #d6dadc;
7928
7931
  display: flex;
7929
7932
  }
7930
- div._contextPanel--hidden_1ajw9_7165 {
7933
+ div._contextPanel--hidden_if78k_7168 {
7931
7934
  border: none;
7932
7935
  overflow: hidden;
7933
7936
  padding: 0px;
@@ -7935,50 +7938,50 @@ div._contextPanel--hidden_1ajw9_7165 {
7935
7938
  width: 0px;
7936
7939
  }
7937
7940
 
7938
- ._contextPanelWrapper_1ajw9_7173 {
7941
+ ._contextPanelWrapper_if78k_7176 {
7939
7942
  position: relative;
7940
7943
  flex-grow: 1;
7941
7944
  }
7942
7945
 
7943
- ._contextPanelBody_1ajw9_7178 {
7946
+ ._contextPanelBody_if78k_7181 {
7944
7947
  width: clamp(380px, 400px, 100%);
7945
7948
  }
7946
7949
 
7947
- ._contextPanel-stickyHeader_1ajw9_7182 {
7950
+ ._contextPanel-stickyHeader_if78k_7185 {
7948
7951
  background-color: #ffffff;
7949
7952
  position: sticky;
7950
7953
  top: 0;
7951
7954
  z-index: 5;
7952
7955
  }
7953
7956
 
7954
- ._filters-list_1ajw9_7189 {
7957
+ ._filters-list_if78k_7192 {
7955
7958
  padding: 0;
7956
7959
  margin: 0;
7957
7960
  }
7958
- ._filters-list_1ajw9_7189 ol {
7961
+ ._filters-list_if78k_7192 ol {
7959
7962
  padding: 0;
7960
7963
  margin: 0;
7961
7964
  }
7962
7965
 
7963
- ._col-drag-column-icon_1ajw9_7198 {
7966
+ ._col-drag-column-icon_if78k_7201 {
7964
7967
  color: #6a767c;
7965
7968
  }
7966
7969
 
7967
- ._tabular-nums_1ajw9_7202 {
7970
+ ._tabular-nums_if78k_7205 {
7968
7971
  font-variant-numeric: tabular-nums;
7969
7972
  }`;
7970
7973
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
7971
7974
  var styles_default = {
7972
- "contextPanel": "_contextPanel_1ajw9_7156",
7973
- "contextPanel--hidden": "_contextPanel--hidden_1ajw9_7165",
7974
- "contextPanelWrapper": "_contextPanelWrapper_1ajw9_7173",
7975
- "contextPanelBody": "_contextPanelBody_1ajw9_7178",
7976
- "contextPanel-stickyHeader": "_contextPanel-stickyHeader_1ajw9_7182",
7977
- "filters-list": "_filters-list_1ajw9_7189",
7978
- "col-drag-column-icon": "_col-drag-column-icon_1ajw9_7198",
7979
- "tabular-nums": "_tabular-nums_1ajw9_7202",
7980
- "ag-shake-left-to-right": "_ag-shake-left-to-right_1ajw9_369",
7981
- "spin": "_spin_1ajw9_1"
7975
+ "contextPanel": "_contextPanel_if78k_7159",
7976
+ "contextPanel--hidden": "_contextPanel--hidden_if78k_7168",
7977
+ "contextPanelWrapper": "_contextPanelWrapper_if78k_7176",
7978
+ "contextPanelBody": "_contextPanelBody_if78k_7181",
7979
+ "contextPanel-stickyHeader": "_contextPanel-stickyHeader_if78k_7185",
7980
+ "filters-list": "_filters-list_if78k_7192",
7981
+ "col-drag-column-icon": "_col-drag-column-icon_if78k_7201",
7982
+ "tabular-nums": "_tabular-nums_if78k_7205",
7983
+ "ag-shake-left-to-right": "_ag-shake-left-to-right_if78k_369",
7984
+ "spin": "_spin_if78k_1"
7982
7985
  };
7983
7986
 
7984
7987
  // src/utils/getCellValueTypographyProps.ts
@@ -54309,6 +54312,9 @@ function useFilterState({
54309
54312
  },
54310
54313
  [gridApi]
54311
54314
  );
54315
+ const filterableColumns = React80.useMemo(() => {
54316
+ return columnDefinitions.filter((colDef) => !!colDef.filterRenderer).sort(sortColumnDefinitionsByFilterIndex);
54317
+ }, [columnDefinitions]);
54312
54318
  const getFieldFilters = React80.useCallback(() => {
54313
54319
  return filterableColumns.map((column2) => {
54314
54320
  const filterInstance = getFieldFilter(column2.field);
@@ -54322,10 +54328,7 @@ function useFilterState({
54322
54328
  ...instanceOptions
54323
54329
  };
54324
54330
  }).filter((filter) => filter.instance !== void 0);
54325
- }, [getFieldFilter, gridApi]);
54326
- const filterableColumns = React80.useMemo(() => {
54327
- return columnDefinitions.filter((colDef) => !!colDef.filterRenderer).sort(sortColumnDefinitionsByFilterIndex);
54328
- }, [columnDefinitions]);
54331
+ }, [getFieldFilter, gridApi, filterableColumns]);
54329
54332
  const filterEventFunction = function filterEventFunction2() {
54330
54333
  if (listenersEnabled.current) {
54331
54334
  const allFilters = getFieldFilters();
@@ -54436,6 +54439,10 @@ function ClientSideMultiSelectFilterRenderer({
54436
54439
  value = [],
54437
54440
  ...props
54438
54441
  }) {
54442
+ const filterOptions = React80.useMemo(
54443
+ () => (options ?? []).map((option) => option ?? ""),
54444
+ [options]
54445
+ );
54439
54446
  return /* @__PURE__ */ React80.createElement(
54440
54447
  MultiSelect,
54441
54448
  {
@@ -54449,8 +54456,8 @@ function ClientSideMultiSelectFilterRenderer({
54449
54456
  return getLabel(columnDefinition.filterProps?.getLabel, option);
54450
54457
  },
54451
54458
  onChange,
54452
- options,
54453
- value: intersection(value || [], options)
54459
+ options: filterOptions,
54460
+ value: intersection(value || [], filterOptions)
54454
54461
  }
54455
54462
  );
54456
54463
  }
@@ -57141,7 +57148,7 @@ var SortComponent = (props) => {
57141
57148
  return null;
57142
57149
  };
57143
57150
  var isRowSelected = (rowNode) => {
57144
- return Boolean(rowNode.selectable ? rowNode.isSelected() : true);
57151
+ return Boolean(rowNode.selectable ? rowNode.isSelected() : false);
57145
57152
  };
57146
57153
  var GenericHeaderRenderer = (props) => {
57147
57154
  const colDef = props.column.getColDef();
@@ -57436,7 +57443,10 @@ var GenericHeaderRenderer = (props) => {
57436
57443
  );
57437
57444
  const isPagination = Boolean(props.api.paginationGetRowCount());
57438
57445
  const currentRows = getCurrentRows(props.api, isPagination);
57439
- const isAllSelected = isPagination ? currentRows.length && currentRows.every(isRowSelected) : isSelectionStateSelectAll;
57446
+ const selectableRows = currentRows.filter(
57447
+ (rowNode) => rowNode.selectable
57448
+ );
57449
+ const isAllSelected = isPagination ? selectableRows.length > 0 && selectableRows.every(isRowSelected) : isSelectionStateSelectAll;
57440
57450
  const isPartialSelected = isPagination ? !isAllSelected && currentRows.some(isRowSelected) : isSelectionStatePartialSelected;
57441
57451
  if (isAllSelected) {
57442
57452
  setSelectAll("all" /* All */);
@@ -57682,6 +57692,11 @@ function getGroupNodes(params) {
57682
57692
  function CustomLoader(params) {
57683
57693
  const I18n = useI18nContext();
57684
57694
  const groupNodes = getGroupNodes(params);
57695
+ const internalTableContext = useInternalTableContext();
57696
+ const hasDuplicateRowIds = internalTableContext.hasDuplicateRowIds ?? false;
57697
+ if (hasDuplicateRowIds) {
57698
+ return null;
57699
+ }
57685
57700
  if (params.node === groupNodes.firstLoading) {
57686
57701
  return /* @__PURE__ */ React80.createElement(Flex, { style: { paddingLeft: "16px" } }, /* @__PURE__ */ React80.createElement(
57687
57702
  LevelIndents,
@@ -58370,7 +58385,8 @@ var InternalTableContext = React80.createContext({
58370
58385
  },
58371
58386
  totalRowCount: 0,
58372
58387
  setTotalRowCount: () => {
58373
- }
58388
+ },
58389
+ hasDuplicateRowIds: false
58374
58390
  });
58375
58391
  var useInternalTableContext = () => React80.useContext(InternalTableContext);
58376
58392
  var prng = detectPrng(true);
@@ -105580,6 +105596,9 @@ var de_DE_default = {
105580
105596
  selectCell: {
105581
105597
  placeholder: "{{label}} ausw\xE4hlen"
105582
105598
  },
105599
+ multiSelectCell: {
105600
+ placeholder: "Werte ausw\xE4hlen"
105601
+ },
105583
105602
  booleanCell: {
105584
105603
  options: {
105585
105604
  yes: "Ja",
@@ -105696,7 +105715,7 @@ var en_AU_default = {
105696
105715
  autoSizeAllColumns: "Autosize all columns",
105697
105716
  hideColumn: "Hide column",
105698
105717
  resetColumns: "Reset columns",
105699
- unGroupBy: "Un-Group by {{label}}",
105718
+ unGroupBy: "Un-group by {{label}}",
105700
105719
  groupBy: "Group by {{label}}"
105701
105720
  },
105702
105721
  grandTotals: "Grand totals",
@@ -105743,6 +105762,9 @@ var en_AU_default = {
105743
105762
  selectCell: {
105744
105763
  placeholder: "Select {{label}}"
105745
105764
  },
105765
+ multiSelectCell: {
105766
+ placeholder: "Select values"
105767
+ },
105746
105768
  booleanCell: {
105747
105769
  options: {
105748
105770
  yes: "Yes",
@@ -105859,7 +105881,7 @@ var en_CA_default = {
105859
105881
  autoSizeAllColumns: "Autosize all columns",
105860
105882
  hideColumn: "Hide column",
105861
105883
  resetColumns: "Reset columns",
105862
- unGroupBy: "Un-Group by {{label}}",
105884
+ unGroupBy: "Un-group by {{label}}",
105863
105885
  groupBy: "Group by {{label}}"
105864
105886
  },
105865
105887
  grandTotals: "Grand totals",
@@ -105906,6 +105928,9 @@ var en_CA_default = {
105906
105928
  selectCell: {
105907
105929
  placeholder: "Select {{label}}"
105908
105930
  },
105931
+ multiSelectCell: {
105932
+ placeholder: "Select values"
105933
+ },
105909
105934
  booleanCell: {
105910
105935
  options: {
105911
105936
  yes: "Yes",
@@ -106069,6 +106094,9 @@ var en_GB_default = {
106069
106094
  selectCell: {
106070
106095
  placeholder: "Select {{label}}"
106071
106096
  },
106097
+ multiSelectCell: {
106098
+ placeholder: "Select values"
106099
+ },
106072
106100
  booleanCell: {
106073
106101
  options: {
106074
106102
  yes: "Yes",
@@ -106398,6 +106426,9 @@ var es_ES_default = {
106398
106426
  selectCell: {
106399
106427
  placeholder: "Seleccionar {{label}}"
106400
106428
  },
106429
+ multiSelectCell: {
106430
+ placeholder: "Seleccionar valores"
106431
+ },
106401
106432
  booleanCell: {
106402
106433
  options: {
106403
106434
  yes: "S\xED",
@@ -106434,8 +106465,8 @@ var es_default = {
106434
106465
  description: "Una vez que su equipo cree \xEDtems, podr\xE1 acceder a ellos aqu\xED. ",
106435
106466
  title: "No hay \xEDtems para mostrar en este momento",
106436
106467
  itemsTitle: "No hay %{itemsLabel} para mostrar en este momento",
106437
- tooltip: "El bot\xF3n %{featureName} se habilitar\xE1 una vez que agregue informaci\xF3n al %{tableName}",
106438
- searchTooltip: "La b\xFAsqueda se habilitar\xE1 una vez que agregue informaci\xF3n a %{tableName}",
106468
+ tooltip: "El bot\xF3n %{featureName} se habilitar\xE1 una vez que agregue informaci\xF3n a la %{tableName}.",
106469
+ searchTooltip: "La b\xFAsqueda se habilitar\xE1 una vez que agregue informaci\xF3n a la %{tableName}.",
106439
106470
  featureFilter: "Filtro",
106440
106471
  featureQuickFilter: "Filtro r\xE1pido",
106441
106472
  featureGroupBy: "Agrupar por",
@@ -106448,7 +106479,7 @@ var es_default = {
106448
106479
  bulkEdit: "Edici\xF3n masiva",
106449
106480
  cancel: "Cancelar",
106450
106481
  editValues: "Editar valores",
106451
- error: "Lo sentimos, no se pudieron actualizar los \xEDtems. Vuelva a intentarlo.",
106482
+ error: "Lo sentimos, no se pudieron actualizar los \xEDtems. Int\xE9ntelo de nuevo.",
106452
106483
  placeholderForField: "Ingrese %{fieldName}",
106453
106484
  selection: "%{count} %{number} seleccionado",
106454
106485
  success: "Los \xEDtems se actualizaron correctamente.",
@@ -106494,14 +106525,14 @@ var es_default = {
106494
106525
  }
106495
106526
  },
106496
106527
  loading: {
106497
- initial: "Cargando informaci\xF3n.",
106528
+ initial: "Cargando informaci\xF3n...",
106498
106529
  secondary: "Cargando informaci\xF3n. Gracias por su paciencia."
106499
106530
  },
106500
106531
  menuOptions: {
106501
106532
  sortMenuItem: {
106502
106533
  label: "Ordenar por esta columna",
106503
- sortAscItem: "Ordenar columna ascendente",
106504
- sortDescItem: "Ordenar columna descendente",
106534
+ sortAscItem: "Ordenar columna - Ascendente",
106535
+ sortDescItem: "Ordenar columna - Descendente",
106505
106536
  sortResetItem: "Columna no ordenada"
106506
106537
  },
106507
106538
  expandAllGroups: "Expandir todos los grupos",
@@ -106561,6 +106592,9 @@ var es_default = {
106561
106592
  selectCell: {
106562
106593
  placeholder: "Seleccionar {{label}}"
106563
106594
  },
106595
+ multiSelectCell: {
106596
+ placeholder: "Seleccionar valores"
106597
+ },
106564
106598
  booleanCell: {
106565
106599
  options: {
106566
106600
  yes: "S\xED",
@@ -106611,7 +106645,7 @@ var fr_CA_default = {
106611
106645
  bulkEdit: "Modifier en bloc",
106612
106646
  cancel: "Annuler",
106613
106647
  editValues: "Modifier les valeurs",
106614
- error: "D\xE9sol\xE9, les items n'ont pas pu \xEAtre mis \xE0 jour. R\xE9essayer.",
106648
+ error: "D\xE9sol\xE9, les items n'ont pas pu \xEAtre mis \xE0 jour. Veuillez r\xE9essayer.",
106615
106649
  placeholderForField: "Entrez %{fieldName}",
106616
106650
  selection: "%{count} %{number} s\xE9lectionn\xE9",
106617
106651
  success: "Les items ont \xE9t\xE9 mis \xE0 jour avec succ\xE8s.",
@@ -106724,6 +106758,9 @@ var fr_CA_default = {
106724
106758
  selectCell: {
106725
106759
  placeholder: "S\xE9lectionner {{label}}"
106726
106760
  },
106761
+ multiSelectCell: {
106762
+ placeholder: "S\xE9lectionner les valeurs"
106763
+ },
106727
106764
  booleanCell: {
106728
106765
  options: {
106729
106766
  yes: "Oui",
@@ -106774,7 +106811,7 @@ var fr_FR_default = {
106774
106811
  bulkEdit: "Modifier en masse",
106775
106812
  cancel: "Annuler",
106776
106813
  editValues: "Modifier les valeurs",
106777
- error: "D\xE9sol\xE9, les \xE9l\xE9ments n'ont pas pu \xEAtre mis \xE0 jour. R\xE9essayez.",
106814
+ error: "D\xE9sol\xE9, les \xE9l\xE9ments n'ont pas pu \xEAtre mis \xE0 jour. Veuillez r\xE9essayer.",
106778
106815
  placeholderForField: "Saisissez %{fieldName}",
106779
106816
  selection: "%{count} %{number} s\xE9lectionn\xE9",
106780
106817
  success: "Les \xE9l\xE9ments ont bien \xE9t\xE9 mis \xE0 jour.",
@@ -106887,6 +106924,9 @@ var fr_FR_default = {
106887
106924
  selectCell: {
106888
106925
  placeholder: "S\xE9lectionner {{label}}"
106889
106926
  },
106927
+ multiSelectCell: {
106928
+ placeholder: "S\xE9lectionner les valeurs"
106929
+ },
106890
106930
  booleanCell: {
106891
106931
  options: {
106892
106932
  yes: "Oui",
@@ -107050,6 +107090,9 @@ var is_IS_default = {
107050
107090
  selectCell: {
107051
107091
  placeholder: "Veldu {{label}}"
107052
107092
  },
107093
+ multiSelectCell: {
107094
+ placeholder: "Veldu Gildi"
107095
+ },
107053
107096
  booleanCell: {
107054
107097
  options: {
107055
107098
  yes: "J\xE1",
@@ -107213,6 +107256,9 @@ var ja_JP_default = {
107213
107256
  selectCell: {
107214
107257
  placeholder: "{{label}}\u3092\u9078\u629E\u3059\u308B"
107215
107258
  },
107259
+ multiSelectCell: {
107260
+ placeholder: "\u5024\u3092\u9078\u629E"
107261
+ },
107216
107262
  booleanCell: {
107217
107263
  options: {
107218
107264
  yes: "\u306F\u3044",
@@ -107376,6 +107422,9 @@ var pl_PL_default = {
107376
107422
  selectCell: {
107377
107423
  placeholder: "Wybierz {{label}}"
107378
107424
  },
107425
+ multiSelectCell: {
107426
+ placeholder: "Wybierz warto\u015Bci"
107427
+ },
107379
107428
  booleanCell: {
107380
107429
  options: {
107381
107430
  yes: "Tak",
@@ -107592,7 +107641,7 @@ var pt_BR_default = {
107592
107641
  bulkEdit: "Edi\xE7\xE3o em Massa",
107593
107642
  cancel: "Cancelar",
107594
107643
  editValues: "Editar Valores",
107595
- error: "Lamentamos, mas n\xE3o foi poss\xEDvel atualizar os itens. Tente novamente.",
107644
+ error: "Sentimos muito, mas n\xE3o foi poss\xEDvel atualizar os itens. Tente novamente.",
107596
107645
  placeholderForField: "Digite %{fieldName}",
107597
107646
  selection: "%{count} %{number} selecionado",
107598
107647
  success: "Os itens foram atualizados com sucesso.",
@@ -107705,6 +107754,9 @@ var pt_BR_default = {
107705
107754
  selectCell: {
107706
107755
  placeholder: "Selecionar {{label}}"
107707
107756
  },
107757
+ multiSelectCell: {
107758
+ placeholder: "Selecionar Valores"
107759
+ },
107708
107760
  booleanCell: {
107709
107761
  options: {
107710
107762
  yes: "Sim",
@@ -107755,7 +107807,7 @@ var th_TH_default = {
107755
107807
  bulkEdit: "\u0E01\u0E32\u0E23\u0E41\u0E01\u0E49\u0E44\u0E02\u0E41\u0E1A\u0E1A\u0E01\u0E25\u0E38\u0E48\u0E21",
107756
107808
  cancel: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
107757
107809
  editValues: "\u0E41\u0E01\u0E49\u0E44\u0E02\u0E04\u0E48\u0E32",
107758
- 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",
107810
+ 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.",
107759
107811
  placeholderForField: "\u0E1B\u0E49\u0E2D\u0E19 %{fieldName}",
107760
107812
  selection: "%{count} %{number} \u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",
107761
107813
  success: "\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08\u0E41\u0E25\u0E49\u0E27",
@@ -107868,6 +107920,9 @@ var th_TH_default = {
107868
107920
  selectCell: {
107869
107921
  placeholder: "\u0E40\u0E25\u0E37\u0E2D\u0E01 {{label}}"
107870
107922
  },
107923
+ multiSelectCell: {
107924
+ placeholder: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E04\u0E48\u0E32"
107925
+ },
107871
107926
  booleanCell: {
107872
107927
  options: {
107873
107928
  yes: "\u0E43\u0E0A\u0E48",
@@ -108031,6 +108086,9 @@ var zh_SG_default = {
108031
108086
  selectCell: {
108032
108087
  placeholder: "\u9009\u62E9{{label}}"
108033
108088
  },
108089
+ multiSelectCell: {
108090
+ placeholder: "\u9009\u62E9\u503C"
108091
+ },
108034
108092
  booleanCell: {
108035
108093
  options: {
108036
108094
  yes: "\u662F",
@@ -109059,7 +109117,7 @@ var DataTable = ({
109059
109117
  type: "file",
109060
109118
  absolute_file_path: (locale) => `core/packages/data-table/src/locales/${locale}`
109061
109119
  },
109062
- { en: translations.en },
109120
+ { en: translations.en, pseudo: translations.pseudo },
109063
109121
  {
109064
109122
  oldTranslations: translations,
109065
109123
  enableCDN: isCDNEnabled
@@ -109124,6 +109182,7 @@ var DataTable = ({
109124
109182
  );
109125
109183
  const [gridApi, setGridApi] = React80.useState();
109126
109184
  const [columnApi, setColumnApi] = React80.useState();
109185
+ const [hasDuplicateRowIds, setHasDuplicateRowIds] = React80.useState(false);
109127
109186
  const searchStorage = useSearchStorage();
109128
109187
  const filterState = useFilterState({
109129
109188
  columnDefinitions: columns,
@@ -109199,7 +109258,9 @@ var DataTable = ({
109199
109258
  gridApi?.hideOverlay.bind(gridApi),
109200
109259
  filterStorage.filtersState,
109201
109260
  searchStorage.searchValue,
109202
- setTotalRowCount
109261
+ setTotalRowCount,
109262
+ setHasDuplicateRowIds,
109263
+ getRowId
109203
109264
  )
109204
109265
  );
109205
109266
  gridApi?.paginationGoToPage(0);
@@ -109292,7 +109353,8 @@ var DataTable = ({
109292
109353
  tableRef,
109293
109354
  totalRowCount,
109294
109355
  setTotalRowCount,
109295
- updateServerSideDataSource
109356
+ updateServerSideDataSource,
109357
+ hasDuplicateRowIds
109296
109358
  }
109297
109359
  },
109298
109360
  children
@@ -109303,12 +109365,34 @@ var rowDragMoveEvent;
109303
109365
  var rowDragEndEvent;
109304
109366
  function getServerSideDatasource(onServerSideDataRequestCallbackRef, onEmptyResponseCallback = () => {
109305
109367
  }, onNonEmptyResponseCallback = () => {
109306
- }, filters, search, setTotalRowCount) {
109368
+ }, filters, search, setTotalRowCount, setHasDuplicateRowIds, getRowId) {
109307
109369
  return {
109308
109370
  getRows: async (params) => {
109309
109371
  if (onServerSideDataRequestCallbackRef.current) {
109310
109372
  const { request, success, fail } = params;
109311
109373
  const onSuccess = (loadSuccessParams) => {
109374
+ const { rowData } = loadSuccessParams;
109375
+ if (rowData && Array.isArray(rowData) && getRowId) {
109376
+ const uniqueRowIds = /* @__PURE__ */ new Set();
109377
+ for (const row2 of rowData) {
109378
+ const id = getRowId({
109379
+ data: row2,
109380
+ level: 0,
109381
+ api: {},
109382
+ columnApi: {},
109383
+ context: {}
109384
+ });
109385
+ if (uniqueRowIds.has(id)) {
109386
+ setHasDuplicateRowIds(true);
109387
+ logger.error(
109388
+ "Duplicate row IDs detected in rowData. Check getRowId() to ensure it returns unique IDs."
109389
+ );
109390
+ fail();
109391
+ return;
109392
+ }
109393
+ uniqueRowIds.add(id);
109394
+ }
109395
+ }
109312
109396
  if (!loadSuccessParams.rowCount && request.groupKeys.length === 0) {
109313
109397
  onEmptyResponseCallback();
109314
109398
  } else {
@@ -110292,10 +110376,7 @@ function isLastColumnInGroup(params) {
110292
110376
  function ClientSideFilterInner(props) {
110293
110377
  const { Component: Component4, columnDefinition, onChange, options, value } = props;
110294
110378
  const filterHeading = columnDefinition.filterProps?.getFilterHeadingText?.(columnDefinition) ?? columnDefinition.headerName;
110295
- const filterOptions = React80.useMemo(
110296
- () => (options ?? [])?.filter((option) => !!option),
110297
- [options]
110298
- );
110379
+ const filterOptions = React80.useMemo(() => options ?? [], [options]);
110299
110380
  return /* @__PURE__ */ React80.createElement(Box, { as: "li", display: "block", paddingBottom: "xl", style: { width: "100%" } }, filterHeading ? /* @__PURE__ */ React80.createElement(
110300
110381
  Label$1,
110301
110382
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@procore/data-table",
3
- "version": "14.28.0-cdn.1",
3
+ "version": "14.28.0-cdn.3",
4
4
  "description": "Complex data grid built on top of ag-grid, with DST components and styles.",
5
5
  "type": "module",
6
6
  "main": "dist/legacy/index.cjs",
@@ -114,7 +114,7 @@
114
114
  "@procore/core-css": "10.17.0",
115
115
  "@procore/core-icons": "12.6.0",
116
116
  "@procore/core-prettier": "10.2.0",
117
- "@procore/core-react": "12.21.0-cdn.1",
117
+ "@procore/core-react": "12.21.0-cdn.3",
118
118
  "@procore/eslint-config": "10.0.0",
119
119
  "@procore/globalization-toolkit": "3.1.0",
120
120
  "@procore/labs-financials-utils": "4.3.1",