@procore/data-table 14.46.1 → 14.46.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Change Log
2
2
 
3
+ ## 14.46.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 064caac: Fixed cell validation for group header nodes if they are editable
8
+ - fb77dbc: - fix — Update translation key for number filter and add "Is Equal To" tests
9
+ - docs/chore - Update README and enable locale-switching for Storybook configuration for Data Table components
10
+ - 2812fff: Fix keyboard accessibility for group expand/collapse controls (WCAG 2.1.1).
11
+
12
+ - Replace `<Box role="button">` GroupCaret with a native `<button>` element that supports keyboard interaction (Enter/Space), includes `aria-expanded`, and has focus-visible styling.
13
+ - Replace `<div role="button">` header expand/collapse-all toggle with a native `<button>` element that supports keyboard interaction, includes `aria-expanded`, and forwards keyboard events from the AG Grid header cell.
14
+
3
15
  ## 14.46.1
4
16
 
5
17
  ### Patch Changes
@@ -54338,7 +54338,7 @@ function ServerSideNumberFilterRenderer({
54338
54338
  },
54339
54339
  {
54340
54340
  id: "isEqual",
54341
- label: I18n.t("options.isEqual", {
54341
+ label: I18n.t("options.is_equal_to", {
54342
54342
  defaultValue: "Is Equal To",
54343
54343
  scope: "dataTable.filters.numberFilter"
54344
54344
  })
@@ -54836,26 +54836,19 @@ function serializeNode(node) {
54836
54836
  rowPinned: node.rowPinned
54837
54837
  };
54838
54838
  }
54839
- function transformToColDef(colDefinition, enableGroupEditAndValidation, enableDynamicRowHeight) {
54839
+ function transformToColDef(colDefinition, tableOptions) {
54840
54840
  if (isNestedColumnDefinition(colDefinition)) {
54841
54841
  return {
54842
54842
  ...colDefinition,
54843
54843
  children: colDefinition.children.map(
54844
- (childColDefinition) => transformColumnDefinitionToColDef(
54845
- childColDefinition,
54846
- enableGroupEditAndValidation,
54847
- enableDynamicRowHeight
54848
- )
54844
+ (childColDefinition) => transformColumnDefinitionToColDef(childColDefinition, tableOptions)
54849
54845
  )
54850
54846
  };
54851
54847
  }
54852
- return transformColumnDefinitionToColDef(
54853
- colDefinition,
54854
- enableGroupEditAndValidation,
54855
- enableDynamicRowHeight
54856
- );
54848
+ return transformColumnDefinitionToColDef(colDefinition, tableOptions);
54857
54849
  }
54858
- function transformColumnDefinitionToColDef(dataTableColumnDefinition, enableGroupEditAndValidation, enableDynamicRowHeight) {
54850
+ function transformColumnDefinitionToColDef(dataTableColumnDefinition, tableOptions) {
54851
+ const { enableGroupEditAndValidation, enableDynamicRowHeight } = tableOptions;
54859
54852
  const {
54860
54853
  aggFunc,
54861
54854
  bulkEditable,
@@ -54898,7 +54891,8 @@ function transformColumnDefinitionToColDef(dataTableColumnDefinition, enableGrou
54898
54891
  };
54899
54892
  const cellClassRules = {
54900
54893
  "invalid-cell": function isValid(params) {
54901
- const shouldValidate = !params.node.group && params.data && !params.data.isAggData || enableGroupEditAndValidation && (params.node.footer || params.node.group && !params.node.expanded);
54894
+ const shouldValidateGroupHeader = tableOptions.enableGroupHeaderEdit && params.node.group;
54895
+ const shouldValidate = !params.node.group && params.data && !params.data.isAggData || enableGroupEditAndValidation && (params.node.footer || params.node.group && !params.node.expanded) || shouldValidateGroupHeader;
54902
54896
  return (shouldValidate && valueValidator && !valueValidator({
54903
54897
  columnDefinition: transformToColumnDefinition(params.colDef),
54904
54898
  data: params.data,
@@ -55241,12 +55235,8 @@ function addAutoGroupParams(columnDefinition, isRowSelectable, siblingGroupsRowS
55241
55235
  }
55242
55236
  };
55243
55237
  }
55244
- function getDecoratedAutoGroupColDef(columnDefinition, enableGroupEditAndValidation, enableDynamicRowHeight, isRowSelectable, siblingGroupsRowSelectionDisabled, groupsAlwaysExpanded, isDetailTable) {
55245
- const colDef = columnDefinition ? transformToColDef(
55246
- columnDefinition,
55247
- enableGroupEditAndValidation,
55248
- enableDynamicRowHeight
55249
- ) : DEFAULT_AUTO_GROUP_COLUMN_DEFINITION;
55238
+ function getDecoratedAutoGroupColDef(columnDefinition, tableOptions, isRowSelectable, siblingGroupsRowSelectionDisabled, groupsAlwaysExpanded, isDetailTable) {
55239
+ const colDef = columnDefinition ? transformToColDef(columnDefinition, tableOptions) : DEFAULT_AUTO_GROUP_COLUMN_DEFINITION;
55250
55240
  return addAutoGroupParams(
55251
55241
  colDef,
55252
55242
  isRowSelectable,
@@ -55257,12 +55247,12 @@ function getDecoratedAutoGroupColDef(columnDefinition, enableGroupEditAndValidat
55257
55247
  }
55258
55248
 
55259
55249
  // src/CellRenderers/AutoGroupCell.scss
55260
- var css5 = `._autoGroupCell_1qx8z_1 {
55250
+ var css5 = `._autoGroupCell_1h6pf_1 {
55261
55251
  height: 100%;
55262
55252
  width: 100%;
55263
55253
  }
55264
55254
 
55265
- ._indent_1qx8z_6 {
55255
+ ._indent_1h6pf_6 {
55266
55256
  border-right: 1px solid #d6dadc;
55267
55257
  background: #f4f5f6;
55268
55258
  position: absolute;
@@ -55270,45 +55260,69 @@ var css5 = `._autoGroupCell_1qx8z_1 {
55270
55260
  bottom: -1px;
55271
55261
  width: 12px;
55272
55262
  }
55273
- ._indent_1qx8z_6._innermostLastIndent_1qx8z_14 {
55263
+ ._indent_1h6pf_6._innermostLastIndent_1h6pf_14 {
55274
55264
  bottom: 0px;
55275
55265
  }
55276
55266
 
55277
- ._expandableCaret_1qx8z_18 {
55267
+ ._expandableCaret_1h6pf_18 {
55278
55268
  margin-left: -8px;
55279
55269
  margin-right: 4px;
55280
55270
  width: 24px;
55281
55271
  flex-shrink: 0;
55282
55272
  }
55283
55273
 
55284
- ._expandCaret_1qx8z_25 {
55274
+ ._expandableCaretButton_1h6pf_25 {
55275
+ display: inline-flex;
55276
+ align-items: center;
55277
+ justify-content: center;
55278
+ width: 24px;
55279
+ height: 24px;
55280
+ padding: 0;
55281
+ margin-left: -8px;
55282
+ margin-right: 4px;
55283
+ border: none;
55284
+ border-radius: 2px;
55285
+ background: transparent;
55286
+ cursor: pointer;
55287
+ flex-shrink: 0;
55288
+ }
55289
+ ._expandableCaretButton_1h6pf_25:focus-visible {
55290
+ outline: 2px solid #2066df;
55291
+ outline-offset: 1px;
55292
+ }
55293
+ ._expandableCaretButton_1h6pf_25:hover {
55294
+ background-color: rgba(0, 0, 0, 0.06);
55295
+ }
55296
+
55297
+ ._expandCaret_1h6pf_48 {
55285
55298
  color: #2066df;
55286
55299
  cursor: pointer;
55287
55300
  }
55288
55301
 
55289
- ._collapseCaret_1qx8z_30 {
55302
+ ._collapseCaret_1h6pf_53 {
55290
55303
  color: #75838a;
55291
55304
  cursor: pointer;
55292
55305
  }
55293
55306
 
55294
- ._value_1qx8z_35 {
55307
+ ._value_1h6pf_58 {
55295
55308
  overflow: hidden;
55296
55309
  text-overflow: ellipsis;
55297
55310
  font-size: 12px;
55298
55311
  }
55299
- ._value_1qx8z_35._footer_1qx8z_40 {
55312
+ ._value_1h6pf_58._footer_1h6pf_63 {
55300
55313
  color: #6a767c;
55301
55314
  }`;
55302
55315
  document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css5));
55303
55316
  var AutoGroupCell_default = {
55304
- "autoGroupCell": "_autoGroupCell_1qx8z_1",
55305
- "indent": "_indent_1qx8z_6",
55306
- "innermostLastIndent": "_innermostLastIndent_1qx8z_14",
55307
- "expandableCaret": "_expandableCaret_1qx8z_18",
55308
- "expandCaret": "_expandCaret_1qx8z_25",
55309
- "collapseCaret": "_collapseCaret_1qx8z_30",
55310
- "value": "_value_1qx8z_35",
55311
- "footer": "_footer_1qx8z_40"
55317
+ "autoGroupCell": "_autoGroupCell_1h6pf_1",
55318
+ "indent": "_indent_1h6pf_6",
55319
+ "innermostLastIndent": "_innermostLastIndent_1h6pf_14",
55320
+ "expandableCaret": "_expandableCaret_1h6pf_18",
55321
+ "expandableCaretButton": "_expandableCaretButton_1h6pf_25",
55322
+ "expandCaret": "_expandCaret_1h6pf_48",
55323
+ "collapseCaret": "_collapseCaret_1h6pf_53",
55324
+ "value": "_value_1h6pf_58",
55325
+ "footer": "_footer_1h6pf_63"
55312
55326
  };
55313
55327
 
55314
55328
  // src/utils/rowSelectionHelpers.ts
@@ -55573,6 +55587,7 @@ var LevelIndents = (props) => {
55573
55587
  };
55574
55588
  function GroupCaret(props) {
55575
55589
  const mounted = React80__default.default.useRef(false);
55590
+ const buttonRef = React80__default.default.useRef(null);
55576
55591
  const [expanded, setExpanded] = React80.useState(props.node.expanded);
55577
55592
  const ExpandableCaret = expanded ? coreIcons.CaretDown : coreIcons.CaretRight;
55578
55593
  const I18n = coreReact.useI18nContext();
@@ -55583,6 +55598,16 @@ function GroupCaret(props) {
55583
55598
  }, 0);
55584
55599
  }
55585
55600
  }
55601
+ const handleToggle = () => {
55602
+ props.api.setRowNodeExpanded(props.node, !expanded);
55603
+ };
55604
+ const handleKeyDown = (event) => {
55605
+ if (event.key === "Enter" || event.key === " ") {
55606
+ event.preventDefault();
55607
+ event.stopPropagation();
55608
+ handleToggle();
55609
+ }
55610
+ };
55586
55611
  React80.useEffect(() => {
55587
55612
  mounted.current = true;
55588
55613
  props.api.addEventListener("rowGroupOpened", handleRowGroupToggle);
@@ -55595,20 +55620,47 @@ function GroupCaret(props) {
55595
55620
  );
55596
55621
  };
55597
55622
  }, []);
55623
+ React80.useEffect(() => {
55624
+ var _a;
55625
+ if (!props.node.isExpandable()) return;
55626
+ const cell2 = (_a = buttonRef.current) == null ? void 0 : _a.closest(".ag-cell");
55627
+ if (!cell2) return;
55628
+ const handleCellKeyDown = (event) => {
55629
+ var _a2;
55630
+ if (event.key !== "Enter" && event.key !== " ") return;
55631
+ if (!event.isTrusted) return;
55632
+ const target = event.target;
55633
+ if (target.closest("button") || target.closest("input")) return;
55634
+ event.preventDefault();
55635
+ event.stopImmediatePropagation();
55636
+ (_a2 = buttonRef.current) == null ? void 0 : _a2.click();
55637
+ };
55638
+ cell2.addEventListener("keydown", handleCellKeyDown, { capture: true });
55639
+ return () => {
55640
+ cell2.removeEventListener("keydown", handleCellKeyDown, { capture: true });
55641
+ };
55642
+ }, []);
55643
+ if (!props.node.isExpandable()) {
55644
+ return /* @__PURE__ */ React80__default.default.createElement("div", { className: AutoGroupCell_default.expandableCaret });
55645
+ }
55598
55646
  return /* @__PURE__ */ React80__default.default.createElement(
55599
- coreReact.Box,
55647
+ "button",
55600
55648
  {
55649
+ type: "button",
55650
+ ref: buttonRef,
55651
+ "aria-expanded": expanded,
55601
55652
  "aria-label": I18n.t(
55602
55653
  `dataTable.groupCell.${expanded ? "collapse" : "expand"}`
55603
55654
  ),
55604
- className: AutoGroupCell_default.expandableCaret,
55605
- role: "button"
55655
+ className: AutoGroupCell_default.expandableCaretButton,
55656
+ onClick: handleToggle,
55657
+ onKeyDown: handleKeyDown,
55658
+ "data-qa": "group-expand-collapse"
55606
55659
  },
55607
- props.node.isExpandable() && /* @__PURE__ */ React80__default.default.createElement(
55660
+ /* @__PURE__ */ React80__default.default.createElement(
55608
55661
  ExpandableCaret,
55609
55662
  {
55610
- className: expanded ? AutoGroupCell_default.collapseCaret : AutoGroupCell_default.expandCaret,
55611
- onClick: () => props.api.setRowNodeExpanded(props.node, !expanded)
55663
+ className: expanded ? AutoGroupCell_default.collapseCaret : AutoGroupCell_default.expandCaret
55612
55664
  }
55613
55665
  )
55614
55666
  );
@@ -56478,10 +56530,15 @@ var css7 = `.data-table-container .ag-header-cell .data-table-header-menu {
56478
56530
  align-items: center;
56479
56531
  justify-content: center;
56480
56532
  background-color: #e3e6e8;
56533
+ border: none;
56481
56534
  border-radius: 2px;
56482
56535
  cursor: pointer;
56483
56536
  margin-right: 8px;
56484
56537
  }
56538
+ .data-table-container .ag-header-cell .expand-button:focus-visible {
56539
+ outline: 2px solid #2066df;
56540
+ outline-offset: 1px;
56541
+ }
56485
56542
  .data-table-container .ag-header-group-cell-with-group .ag-header-cell-comp-wrapper {
56486
56543
  width: 100%;
56487
56544
  overflow: hidden;
@@ -56494,10 +56551,15 @@ var css7 = `.data-table-container .ag-header-cell .data-table-header-menu {
56494
56551
  align-items: center;
56495
56552
  justify-content: center;
56496
56553
  background-color: #e3e6e8;
56554
+ border: none;
56497
56555
  border-radius: 2px;
56498
56556
  cursor: pointer;
56499
56557
  margin-left: auto;
56500
56558
  }
56559
+ .data-table-container .ag-header-group-cell-with-group .expand-button:focus-visible {
56560
+ outline: 2px solid #2066df;
56561
+ outline-offset: 1px;
56562
+ }
56501
56563
  .data-table-container .auto-column-expand-tooltip-content {
56502
56564
  width: 96px;
56503
56565
  }
@@ -56647,6 +56709,7 @@ var GenericHeaderRenderer = (props) => {
56647
56709
  I18n
56648
56710
  );
56649
56711
  const headerCellRef = React80.useRef(null);
56712
+ const expandButtonRef = React80.useRef(null);
56650
56713
  const menuButtonRef = React80.useRef(null);
56651
56714
  const headerCheckboxSelection = colDef.headerCheckboxSelection;
56652
56715
  const headerCheckboxSelectionEnabled = typeof headerCheckboxSelection === "function" ? headerCheckboxSelection({
@@ -56799,6 +56862,30 @@ var GenericHeaderRenderer = (props) => {
56799
56862
  );
56800
56863
  }
56801
56864
  React80__default.default.useEffect(updateExpandedState);
56865
+ React80__default.default.useEffect(() => {
56866
+ var _a2;
56867
+ if (!isExpandable) return;
56868
+ const headerCell = (_a2 = headerCellRef.current) == null ? void 0 : _a2.closest(".ag-header-cell");
56869
+ if (!headerCell) return;
56870
+ const handleExpandKeyDown = (event) => {
56871
+ var _a3;
56872
+ if (event.key !== "Enter" && event.key !== " ") return;
56873
+ if (!event.isTrusted) return;
56874
+ const target = event.target;
56875
+ if (target.closest("button") || target.closest("input")) return;
56876
+ event.preventDefault();
56877
+ event.stopImmediatePropagation();
56878
+ (_a3 = expandButtonRef.current) == null ? void 0 : _a3.click();
56879
+ };
56880
+ headerCell.addEventListener("keydown", handleExpandKeyDown, {
56881
+ capture: true
56882
+ });
56883
+ return () => {
56884
+ headerCell.removeEventListener("keydown", handleExpandKeyDown, {
56885
+ capture: true
56886
+ });
56887
+ };
56888
+ }, [isExpandable]);
56802
56889
  const [expansionVariant, setExpansionVariant] = React80__default.default.useState("closed");
56803
56890
  React80__default.default.useEffect(() => {
56804
56891
  var _a2;
@@ -57083,12 +57170,21 @@ var GenericHeaderRenderer = (props) => {
57083
57170
  overlay: /* @__PURE__ */ React80__default.default.createElement(coreReact.Tooltip.Content, { className: "auto-column-expand-tooltip-content" }, tooltipText[expansionVariant])
57084
57171
  },
57085
57172
  /* @__PURE__ */ React80__default.default.createElement(
57086
- "div",
57173
+ "button",
57087
57174
  {
57175
+ type: "button",
57176
+ ref: expandButtonRef,
57177
+ "aria-expanded": expansionVariant !== "closed",
57088
57178
  "aria-label": tooltipText[expansionVariant],
57089
57179
  className: "expand-button",
57090
57180
  onClick: onExpandToggle,
57091
- role: "button",
57181
+ onKeyDown: (e) => {
57182
+ if (e.key === "Enter" || e.key === " ") {
57183
+ e.preventDefault();
57184
+ e.stopPropagation();
57185
+ onExpandToggle(e);
57186
+ }
57187
+ },
57092
57188
  "data-qa": "expand-or-collapse-all-button"
57093
57189
  },
57094
57190
  /* @__PURE__ */ React80__default.default.createElement(ExpansionVariantIcon, { size: "sm" })
@@ -104684,11 +104780,10 @@ var ConfigurationColumns = React80__default.default.forwardRef(
104684
104780
  return columnDefs;
104685
104781
  }
104686
104782
  const columnDefinitionsMappedToDefs = columnDefinitions.map(
104687
- (colDef) => transformToColDef(
104688
- colDef,
104783
+ (colDef) => transformToColDef(colDef, {
104689
104784
  enableGroupEditAndValidation,
104690
104785
  enableDynamicRowHeight
104691
- )
104786
+ })
104692
104787
  );
104693
104788
  return toGroupedCols(columnDefinitionsMappedToDefs);
104694
104789
  });
@@ -104996,8 +105091,10 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
104996
105091
  alwaysAggregateAtRootLevel: !isServerSideRowModel,
104997
105092
  autoGroupColumnDef: getDecoratedAutoGroupColDef(
104998
105093
  detailRowConfig.autoGroupColumnDefinition,
104999
- enableGroupEditAndValidation,
105000
- enableDynamicRowHeight,
105094
+ {
105095
+ enableGroupEditAndValidation,
105096
+ enableDynamicRowHeight
105097
+ },
105001
105098
  isRowSelectable,
105002
105099
  false,
105003
105100
  detailRowConfig.groupsAlwaysExpanded ?? false,
@@ -105009,11 +105106,10 @@ var buildDetailRowsConfig_ = (detailRowConfig, {
105009
105106
  },
105010
105107
  columnDefs: toGroupedCols(
105011
105108
  detailRowConfig.columnDefinitions.map(
105012
- (colDef) => transformToColDef(
105013
- colDef,
105109
+ (colDef) => transformToColDef(colDef, {
105014
105110
  enableGroupEditAndValidation,
105015
- colDef.autoHeight ?? enableDynamicRowHeight
105016
- )
105111
+ enableDynamicRowHeight: colDef.autoHeight ?? enableDynamicRowHeight
105112
+ })
105017
105113
  )
105018
105114
  ),
105019
105115
  groupsAlwaysExpanded: detailRowConfig.groupsAlwaysExpanded ?? false,
@@ -110168,11 +110264,16 @@ function getServerSideDatasource(onServerSideDataRequestCallbackRef, onEmptyResp
110168
110264
  };
110169
110265
  }
110170
110266
  var minimumColumnWidth = 140;
110267
+ function resolveGroupIncludeFooter(props, onSSDR) {
110268
+ if (props.enableGroupHeaderEdit) return false;
110269
+ if (!onSSDR && props.groupIncludeFooter === void 0) return true;
110270
+ return props.groupIncludeFooter;
110271
+ }
110171
110272
  function useComputeAgGridProps(props) {
110172
110273
  const internalTableContext = useInternalTableContext();
110173
110274
  const onSSDR = internalTableContext.onServerSideDataRequest;
110174
110275
  return {
110175
- groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
110276
+ groupIncludeFooter: resolveGroupIncludeFooter(props, !!onSSDR),
110176
110277
  rowDragManaged: onSSDR ? false : props.rowDragManaged ?? true,
110177
110278
  rowModelType: onSSDR ? "serverSide" : void 0,
110178
110279
  groupSelectsChildren: (
@@ -110248,11 +110349,11 @@ var Table = (props) => {
110248
110349
  () => {
110249
110350
  var _a2;
110250
110351
  return (_a2 = internalTableContext.columnDefinitions) == null ? void 0 : _a2.map((colDef) => {
110251
- const newColDef = transformToColDef(
110252
- colDef,
110253
- internalTableContext.enableGroupEditAndValidation,
110254
- internalTableContext.enableDynamicRowHeight
110255
- );
110352
+ const newColDef = transformToColDef(colDef, {
110353
+ enableGroupEditAndValidation: internalTableContext.enableGroupEditAndValidation,
110354
+ enableDynamicRowHeight: internalTableContext.enableDynamicRowHeight,
110355
+ enableGroupHeaderEdit: props.enableGroupHeaderEdit
110356
+ });
110256
110357
  return {
110257
110358
  ...newColDef,
110258
110359
  editable: overrideEditable(colDef.editable)
@@ -110554,8 +110655,10 @@ var Table = (props) => {
110554
110655
  const decoratedAutoGroupColDef = React80__default.default.useMemo(
110555
110656
  () => getDecoratedAutoGroupColDef(
110556
110657
  props == null ? void 0 : props.autoGroupColumnDefinition,
110557
- internalTableContext.enableGroupEditAndValidation,
110558
- internalTableContext.enableDynamicRowHeight,
110658
+ {
110659
+ enableGroupEditAndValidation: internalTableContext.enableGroupEditAndValidation,
110660
+ enableDynamicRowHeight: internalTableContext.enableDynamicRowHeight
110661
+ },
110559
110662
  isRowSelectable,
110560
110663
  props.siblingGroupsRowSelectionDisabled,
110561
110664
  props.groupsAlwaysExpanded ?? false,
@@ -1137,6 +1137,11 @@ interface DataTableTranslations {
1137
1137
  searchEmptyStateTitle?: string;
1138
1138
  tableName?: string;
1139
1139
  }
1140
+ interface TableOptions {
1141
+ enableGroupEditAndValidation: boolean;
1142
+ enableDynamicRowHeight: boolean;
1143
+ enableGroupHeaderEdit?: boolean;
1144
+ }
1140
1145
  interface DataTableProps {
1141
1146
  analytics?: AnalyticsConfig;
1142
1147
  columnDefinitions: (ColumnDefinition | NestedColumnDefinition)[];
@@ -1553,4 +1558,4 @@ declare const waitForAsyncCondition: (condition: Function, maxAttempts?: number,
1553
1558
  */
1554
1559
  declare const UNSAFE_useTableContext: () => InternalTableContext;
1555
1560
 
1556
- export { type AgDomLayout, type AgGetDetailRowDataParams, type AgSort, type AggregationFunction, type AnalyticEvent, _default$2 as Analytics, AnalyticsBulkClient, type AnalyticsBulkConfig, type AnalyticsClient, type AnalyticsConfig$1 as AnalyticsConfig, type AvatarStackItemFilter, type BooleanCellColumnDefinition, BooleanCellEditor, type BooleanCellEditorProps, BooleanCellRenderer, type BooleanCellRendererProps, type ButtonsCellColumnDefinition, ButtonsCellRenderer, type CSVExportConfig, type CellValueChangeParams, _default$1 as ClientSideDataTable, type ClientSideDataTableProps, type ColumnConfig, type ColumnDefinition, type ColumnGroupStateConfig, type CompanyCellColumnDefinition, CompanyCellRenderer, type CompanyCellRendererProps, type ContextPanelApi, type ContextPanelContent, type CurrencyCellColumnDefinition, CurrencyCellEditor, type CurrencyCellEditorProps, CurrencyCellRenderer, type CurrencyCellRendererProps, type CustomBulkEditorFields, type CustomEditorCell, type CustomFilter, type CustomFooterConfig, type CustomRendererCell, type DTCellFocusedEvent, type DTExcelFormats, type DataTableCellEditorProps, type DataTableCellRendererProps, type DataTableConfig, type DataTableProps, type DataTableTranslations, type DateCellColumnDefinition, DateCellEditor, type DateCellEditorProps, DateCellRenderer, type DateCellRendererProps, DateFilterRenderer, type DateFilterSelectionType, QuickDateFilterRenderer as DateQuickFilterRenderer, type DateTimeCellColumnDefinition, DateTimeCellEditor, DateTimeCellRenderer, type DetailRowConfig, type EmptyRendererProps, type ExcelExportConfig, type ExtendedColDef, type FilterGroup, type FrameworkComponents, type GetDetailRowDataParams, type GetRowHeightWithFooters, GrandTotalsLabelRenderer, type GranularPartial, type GranularRequired, type GroupCellColumnDefinition, GroupCellRenderer, type HTMLStringExportConfig, type ISearchState, type IServerFilter, type IsEditableParams, type IsRowSelectable, type LinkCellColumnDefinition, LinkCellRenderer, type LinkCellRendererProps, type LocationColumnDefinition, type LocationFilterOpt, LocationFilterRenderer, LocationQuickFilterRenderer, type MultiSelectCellColumnDefinition, MultiSelectCellEditor, MultiSelectCellRenderer, type MultiSelectCellRendererProps, MultiSelectFilterRenderer, MultiSelectQuickFilterRenderer, type NestedColumnDefinition, type NumberCellColumnDefinition, NumberCellEditor, type NumberCellEditorProps, NumberCellRenderer, type NumberCellRendererProps, NumberFilterRenderer, type PartialTableApi, type PeopleCellColumnDefinition, PeopleCellRenderer, type PeopleCellRendererProps, type PercentCellColumnDefinition, PercentCellEditor, type PercentCellEditorProps, PercentCellRenderer, type PercentCellRendererProps, PersonCellRenderer, type PillCellColumnDefinition, PillCellRenderer, type PillCellRendererProps, PillSelectCellEditor, type PillSelectCellEditorProps, type PinnedBottomRow, type RefreshServerSideDataParams, type RowActionsConfig, type RowActivePredicateParams, type RowGroupToggledEvent, type RowNode, type RowSelectablePredicateParams, type RowSelectionRef, SelectAllState, type SelectCellColumnDefinition, SelectCellEditor, type SelectCellEditorProps, SelectCellRenderer, type SelectCellRendererProps, _default as ServerSideDataTable, type DataTableProps as ServerSideDataTableProps, type ServerSideGetRowsParams, type ServerSideGetRowsRequest, ServerSideMultiNumberFilterRenderer, ServerSideNumberFilterRenderer, type ServerSideParamsOptions, SingleSelectFilterRenderer, SingleSelectQuickFilterRenderer, type SortModel, type SuccessParams, type TableApi, type TableFrameworkComponents, type TablePanelProps, type TableProps, type TextAreaCellColumnDefinition, type TextAreaCellEditorProps, type TextAreaCellRendererProps, type TextCellColumnDefinition, TextCellEditor, type TextCellEditorProps, TextCellRenderer, type TextCellRendererProps, UNSAFE_useTableContext, type UpdateServerSideDataSourceParams, type ValueGetterParams, type ValueParserParams, type ValueSetterParams, type ValueValidator, type ValueValidatorParams, assignAlphabeticalFilterIndices, rowSize, useAnalyticsContext, useRowSelectionState, waitForAsyncCondition, withDataTableEditor, withDataTableRenderer };
1561
+ export { type AgDomLayout, type AgGetDetailRowDataParams, type AgSort, type AggregationFunction, type AnalyticEvent, _default$2 as Analytics, AnalyticsBulkClient, type AnalyticsBulkConfig, type AnalyticsClient, type AnalyticsConfig$1 as AnalyticsConfig, type AvatarStackItemFilter, type BooleanCellColumnDefinition, BooleanCellEditor, type BooleanCellEditorProps, BooleanCellRenderer, type BooleanCellRendererProps, type ButtonsCellColumnDefinition, ButtonsCellRenderer, type CSVExportConfig, type CellValueChangeParams, _default$1 as ClientSideDataTable, type ClientSideDataTableProps, type ColumnConfig, type ColumnDefinition, type ColumnGroupStateConfig, type CompanyCellColumnDefinition, CompanyCellRenderer, type CompanyCellRendererProps, type ContextPanelApi, type ContextPanelContent, type CurrencyCellColumnDefinition, CurrencyCellEditor, type CurrencyCellEditorProps, CurrencyCellRenderer, type CurrencyCellRendererProps, type CustomBulkEditorFields, type CustomEditorCell, type CustomFilter, type CustomFooterConfig, type CustomRendererCell, type DTCellFocusedEvent, type DTExcelFormats, type DataTableCellEditorProps, type DataTableCellRendererProps, type DataTableConfig, type DataTableProps, type DataTableTranslations, type DateCellColumnDefinition, DateCellEditor, type DateCellEditorProps, DateCellRenderer, type DateCellRendererProps, DateFilterRenderer, type DateFilterSelectionType, QuickDateFilterRenderer as DateQuickFilterRenderer, type DateTimeCellColumnDefinition, DateTimeCellEditor, DateTimeCellRenderer, type DetailRowConfig, type EmptyRendererProps, type ExcelExportConfig, type ExtendedColDef, type FilterGroup, type FrameworkComponents, type GetDetailRowDataParams, type GetRowHeightWithFooters, GrandTotalsLabelRenderer, type GranularPartial, type GranularRequired, type GroupCellColumnDefinition, GroupCellRenderer, type HTMLStringExportConfig, type ISearchState, type IServerFilter, type IsEditableParams, type IsRowSelectable, type LinkCellColumnDefinition, LinkCellRenderer, type LinkCellRendererProps, type LocationColumnDefinition, type LocationFilterOpt, LocationFilterRenderer, LocationQuickFilterRenderer, type MultiSelectCellColumnDefinition, MultiSelectCellEditor, MultiSelectCellRenderer, type MultiSelectCellRendererProps, MultiSelectFilterRenderer, MultiSelectQuickFilterRenderer, type NestedColumnDefinition, type NumberCellColumnDefinition, NumberCellEditor, type NumberCellEditorProps, NumberCellRenderer, type NumberCellRendererProps, NumberFilterRenderer, type PartialTableApi, type PeopleCellColumnDefinition, PeopleCellRenderer, type PeopleCellRendererProps, type PercentCellColumnDefinition, PercentCellEditor, type PercentCellEditorProps, PercentCellRenderer, type PercentCellRendererProps, PersonCellRenderer, type PillCellColumnDefinition, PillCellRenderer, type PillCellRendererProps, PillSelectCellEditor, type PillSelectCellEditorProps, type PinnedBottomRow, type RefreshServerSideDataParams, type RowActionsConfig, type RowActivePredicateParams, type RowGroupToggledEvent, type RowNode, type RowSelectablePredicateParams, type RowSelectionRef, SelectAllState, type SelectCellColumnDefinition, SelectCellEditor, type SelectCellEditorProps, SelectCellRenderer, type SelectCellRendererProps, _default as ServerSideDataTable, type DataTableProps as ServerSideDataTableProps, type ServerSideGetRowsParams, type ServerSideGetRowsRequest, ServerSideMultiNumberFilterRenderer, ServerSideNumberFilterRenderer, type ServerSideParamsOptions, SingleSelectFilterRenderer, SingleSelectQuickFilterRenderer, type SortModel, type SuccessParams, type TableApi, type TableFrameworkComponents, type TableOptions, type TablePanelProps, type TableProps, type TextAreaCellColumnDefinition, type TextAreaCellEditorProps, type TextAreaCellRendererProps, type TextCellColumnDefinition, TextCellEditor, type TextCellEditorProps, TextCellRenderer, type TextCellRendererProps, UNSAFE_useTableContext, type UpdateServerSideDataSourceParams, type ValueGetterParams, type ValueParserParams, type ValueSetterParams, type ValueValidator, type ValueValidatorParams, assignAlphabeticalFilterIndices, rowSize, useAnalyticsContext, useRowSelectionState, waitForAsyncCondition, withDataTableEditor, withDataTableRenderer };
@@ -1137,6 +1137,11 @@ interface DataTableTranslations {
1137
1137
  searchEmptyStateTitle?: string;
1138
1138
  tableName?: string;
1139
1139
  }
1140
+ interface TableOptions {
1141
+ enableGroupEditAndValidation: boolean;
1142
+ enableDynamicRowHeight: boolean;
1143
+ enableGroupHeaderEdit?: boolean;
1144
+ }
1140
1145
  interface DataTableProps {
1141
1146
  analytics?: AnalyticsConfig;
1142
1147
  columnDefinitions: (ColumnDefinition | NestedColumnDefinition)[];
@@ -1553,4 +1558,4 @@ declare const waitForAsyncCondition: (condition: Function, maxAttempts?: number,
1553
1558
  */
1554
1559
  declare const UNSAFE_useTableContext: () => InternalTableContext;
1555
1560
 
1556
- export { type AgDomLayout, type AgGetDetailRowDataParams, type AgSort, type AggregationFunction, type AnalyticEvent, _default$2 as Analytics, AnalyticsBulkClient, type AnalyticsBulkConfig, type AnalyticsClient, type AnalyticsConfig$1 as AnalyticsConfig, type AvatarStackItemFilter, type BooleanCellColumnDefinition, BooleanCellEditor, type BooleanCellEditorProps, BooleanCellRenderer, type BooleanCellRendererProps, type ButtonsCellColumnDefinition, ButtonsCellRenderer, type CSVExportConfig, type CellValueChangeParams, _default$1 as ClientSideDataTable, type ClientSideDataTableProps, type ColumnConfig, type ColumnDefinition, type ColumnGroupStateConfig, type CompanyCellColumnDefinition, CompanyCellRenderer, type CompanyCellRendererProps, type ContextPanelApi, type ContextPanelContent, type CurrencyCellColumnDefinition, CurrencyCellEditor, type CurrencyCellEditorProps, CurrencyCellRenderer, type CurrencyCellRendererProps, type CustomBulkEditorFields, type CustomEditorCell, type CustomFilter, type CustomFooterConfig, type CustomRendererCell, type DTCellFocusedEvent, type DTExcelFormats, type DataTableCellEditorProps, type DataTableCellRendererProps, type DataTableConfig, type DataTableProps, type DataTableTranslations, type DateCellColumnDefinition, DateCellEditor, type DateCellEditorProps, DateCellRenderer, type DateCellRendererProps, DateFilterRenderer, type DateFilterSelectionType, QuickDateFilterRenderer as DateQuickFilterRenderer, type DateTimeCellColumnDefinition, DateTimeCellEditor, DateTimeCellRenderer, type DetailRowConfig, type EmptyRendererProps, type ExcelExportConfig, type ExtendedColDef, type FilterGroup, type FrameworkComponents, type GetDetailRowDataParams, type GetRowHeightWithFooters, GrandTotalsLabelRenderer, type GranularPartial, type GranularRequired, type GroupCellColumnDefinition, GroupCellRenderer, type HTMLStringExportConfig, type ISearchState, type IServerFilter, type IsEditableParams, type IsRowSelectable, type LinkCellColumnDefinition, LinkCellRenderer, type LinkCellRendererProps, type LocationColumnDefinition, type LocationFilterOpt, LocationFilterRenderer, LocationQuickFilterRenderer, type MultiSelectCellColumnDefinition, MultiSelectCellEditor, MultiSelectCellRenderer, type MultiSelectCellRendererProps, MultiSelectFilterRenderer, MultiSelectQuickFilterRenderer, type NestedColumnDefinition, type NumberCellColumnDefinition, NumberCellEditor, type NumberCellEditorProps, NumberCellRenderer, type NumberCellRendererProps, NumberFilterRenderer, type PartialTableApi, type PeopleCellColumnDefinition, PeopleCellRenderer, type PeopleCellRendererProps, type PercentCellColumnDefinition, PercentCellEditor, type PercentCellEditorProps, PercentCellRenderer, type PercentCellRendererProps, PersonCellRenderer, type PillCellColumnDefinition, PillCellRenderer, type PillCellRendererProps, PillSelectCellEditor, type PillSelectCellEditorProps, type PinnedBottomRow, type RefreshServerSideDataParams, type RowActionsConfig, type RowActivePredicateParams, type RowGroupToggledEvent, type RowNode, type RowSelectablePredicateParams, type RowSelectionRef, SelectAllState, type SelectCellColumnDefinition, SelectCellEditor, type SelectCellEditorProps, SelectCellRenderer, type SelectCellRendererProps, _default as ServerSideDataTable, type DataTableProps as ServerSideDataTableProps, type ServerSideGetRowsParams, type ServerSideGetRowsRequest, ServerSideMultiNumberFilterRenderer, ServerSideNumberFilterRenderer, type ServerSideParamsOptions, SingleSelectFilterRenderer, SingleSelectQuickFilterRenderer, type SortModel, type SuccessParams, type TableApi, type TableFrameworkComponents, type TablePanelProps, type TableProps, type TextAreaCellColumnDefinition, type TextAreaCellEditorProps, type TextAreaCellRendererProps, type TextCellColumnDefinition, TextCellEditor, type TextCellEditorProps, TextCellRenderer, type TextCellRendererProps, UNSAFE_useTableContext, type UpdateServerSideDataSourceParams, type ValueGetterParams, type ValueParserParams, type ValueSetterParams, type ValueValidator, type ValueValidatorParams, assignAlphabeticalFilterIndices, rowSize, useAnalyticsContext, useRowSelectionState, waitForAsyncCondition, withDataTableEditor, withDataTableRenderer };
1561
+ export { type AgDomLayout, type AgGetDetailRowDataParams, type AgSort, type AggregationFunction, type AnalyticEvent, _default$2 as Analytics, AnalyticsBulkClient, type AnalyticsBulkConfig, type AnalyticsClient, type AnalyticsConfig$1 as AnalyticsConfig, type AvatarStackItemFilter, type BooleanCellColumnDefinition, BooleanCellEditor, type BooleanCellEditorProps, BooleanCellRenderer, type BooleanCellRendererProps, type ButtonsCellColumnDefinition, ButtonsCellRenderer, type CSVExportConfig, type CellValueChangeParams, _default$1 as ClientSideDataTable, type ClientSideDataTableProps, type ColumnConfig, type ColumnDefinition, type ColumnGroupStateConfig, type CompanyCellColumnDefinition, CompanyCellRenderer, type CompanyCellRendererProps, type ContextPanelApi, type ContextPanelContent, type CurrencyCellColumnDefinition, CurrencyCellEditor, type CurrencyCellEditorProps, CurrencyCellRenderer, type CurrencyCellRendererProps, type CustomBulkEditorFields, type CustomEditorCell, type CustomFilter, type CustomFooterConfig, type CustomRendererCell, type DTCellFocusedEvent, type DTExcelFormats, type DataTableCellEditorProps, type DataTableCellRendererProps, type DataTableConfig, type DataTableProps, type DataTableTranslations, type DateCellColumnDefinition, DateCellEditor, type DateCellEditorProps, DateCellRenderer, type DateCellRendererProps, DateFilterRenderer, type DateFilterSelectionType, QuickDateFilterRenderer as DateQuickFilterRenderer, type DateTimeCellColumnDefinition, DateTimeCellEditor, DateTimeCellRenderer, type DetailRowConfig, type EmptyRendererProps, type ExcelExportConfig, type ExtendedColDef, type FilterGroup, type FrameworkComponents, type GetDetailRowDataParams, type GetRowHeightWithFooters, GrandTotalsLabelRenderer, type GranularPartial, type GranularRequired, type GroupCellColumnDefinition, GroupCellRenderer, type HTMLStringExportConfig, type ISearchState, type IServerFilter, type IsEditableParams, type IsRowSelectable, type LinkCellColumnDefinition, LinkCellRenderer, type LinkCellRendererProps, type LocationColumnDefinition, type LocationFilterOpt, LocationFilterRenderer, LocationQuickFilterRenderer, type MultiSelectCellColumnDefinition, MultiSelectCellEditor, MultiSelectCellRenderer, type MultiSelectCellRendererProps, MultiSelectFilterRenderer, MultiSelectQuickFilterRenderer, type NestedColumnDefinition, type NumberCellColumnDefinition, NumberCellEditor, type NumberCellEditorProps, NumberCellRenderer, type NumberCellRendererProps, NumberFilterRenderer, type PartialTableApi, type PeopleCellColumnDefinition, PeopleCellRenderer, type PeopleCellRendererProps, type PercentCellColumnDefinition, PercentCellEditor, type PercentCellEditorProps, PercentCellRenderer, type PercentCellRendererProps, PersonCellRenderer, type PillCellColumnDefinition, PillCellRenderer, type PillCellRendererProps, PillSelectCellEditor, type PillSelectCellEditorProps, type PinnedBottomRow, type RefreshServerSideDataParams, type RowActionsConfig, type RowActivePredicateParams, type RowGroupToggledEvent, type RowNode, type RowSelectablePredicateParams, type RowSelectionRef, SelectAllState, type SelectCellColumnDefinition, SelectCellEditor, type SelectCellEditorProps, SelectCellRenderer, type SelectCellRendererProps, _default as ServerSideDataTable, type DataTableProps as ServerSideDataTableProps, type ServerSideGetRowsParams, type ServerSideGetRowsRequest, ServerSideMultiNumberFilterRenderer, ServerSideNumberFilterRenderer, type ServerSideParamsOptions, SingleSelectFilterRenderer, SingleSelectQuickFilterRenderer, type SortModel, type SuccessParams, type TableApi, type TableFrameworkComponents, type TableOptions, type TablePanelProps, type TableProps, type TextAreaCellColumnDefinition, type TextAreaCellEditorProps, type TextAreaCellRendererProps, type TextCellColumnDefinition, TextCellEditor, type TextCellEditorProps, TextCellRenderer, type TextCellRendererProps, UNSAFE_useTableContext, type UpdateServerSideDataSourceParams, type ValueGetterParams, type ValueParserParams, type ValueSetterParams, type ValueValidator, type ValueValidatorParams, assignAlphabeticalFilterIndices, rowSize, useAnalyticsContext, useRowSelectionState, waitForAsyncCondition, withDataTableEditor, withDataTableRenderer };