@procore/data-table 14.38.0 → 14.39.1

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,19 @@
1
1
  # Change Log
2
2
 
3
+ ## 14.39.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 5688b5d: Improve performance for rendering column group headers
8
+ - Updated dependencies [f67398f]
9
+ - @procore/labs-datetime-select@0.2.0
10
+
11
+ ## 14.39.0
12
+
13
+ ### Minor Changes
14
+
15
+ - 3052b62: Adds onExpandOrCollapseAll prop for tracking expand/collapse state
16
+
3
17
  ## 14.38.0
4
18
 
5
19
  ### Minor Changes
@@ -56596,9 +56596,10 @@ var GenericHeaderRenderer = (props) => {
56596
56596
  const {
56597
56597
  columnApi,
56598
56598
  tableRef,
56599
+ onExpandOrCollapseAll,
56599
56600
  onServerSideDataRequest,
56600
- showExpandCollapseAllToggle,
56601
- onTableConfigChange
56601
+ onTableConfigChange,
56602
+ showExpandCollapseAllToggle
56602
56603
  } = useInternalTableContext();
56603
56604
  const onSSDR = Boolean(onServerSideDataRequest);
56604
56605
  const [sortOrder, setSortOrder] = React80__default.default.useState(props.column.getSort());
@@ -56789,9 +56790,11 @@ var GenericHeaderRenderer = (props) => {
56789
56790
  }
56790
56791
  });
56791
56792
  setExpansionVariant("tierOne");
56793
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(true);
56792
56794
  } else {
56793
56795
  props.api.collapseAll();
56794
56796
  setExpansionVariant("closed");
56797
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(false);
56795
56798
  }
56796
56799
  return;
56797
56800
  }
@@ -56806,10 +56809,13 @@ var GenericHeaderRenderer = (props) => {
56806
56809
  props.api
56807
56810
  );
56808
56811
  setExpansionVariant(hasMoreExpandableNodes ? "tierOne" : "all");
56812
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(true);
56809
56813
  } else if (expansionVariant === "tierOne") {
56810
56814
  props.api.expandAll();
56815
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(true);
56811
56816
  } else {
56812
56817
  props.api.collapseAll();
56818
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(false);
56813
56819
  }
56814
56820
  }
56815
56821
  const tooltipText = {
@@ -56986,7 +56992,8 @@ var GenericHeaderRenderer = (props) => {
56986
56992
  "aria-label": tooltipText[expansionVariant],
56987
56993
  className: "expand-button",
56988
56994
  onClick: onExpandToggle,
56989
- role: "button"
56995
+ role: "button",
56996
+ "data-qa": "expand-or-collapse-all-button"
56990
56997
  },
56991
56998
  /* @__PURE__ */ React80__default.default.createElement(ExpansionVariantIcon, { size: "sm" })
56992
56999
  )
@@ -57045,18 +57052,14 @@ var GenericHeaderRenderer = (props) => {
57045
57052
  // src/GenericHeader/GenericColumnGroupHeader.tsx
57046
57053
  function GenericColumnGroupHeader(props) {
57047
57054
  const I18n = coreReact.useI18nContext();
57048
- const { expanded: initialExpanded, expandable } = props.columnGroup.providedColumnGroup;
57049
- const [isExpanded, setIsExpanded] = React80__default.default.useState(initialExpanded);
57050
- React80__default.default.useEffect(() => {
57051
- props.setExpanded(isExpanded);
57052
- }, [isExpanded]);
57055
+ const { expanded, expandable } = props.columnGroup.providedColumnGroup;
57053
57056
  if (!props.displayName) {
57054
57057
  return null;
57055
57058
  }
57056
57059
  const tooltipText = I18n.t(
57057
- `dataTable.columnGroupToggle.${isExpanded ? "collapse" : "expand"}`
57060
+ `dataTable.columnGroupToggle.${expanded ? "collapse" : "expand"}`
57058
57061
  );
57059
- const ExpansionVariantIcon = isExpanded ? coreIcons.CaretsIn : coreIcons.CaretsOut;
57062
+ const ExpansionVariantIcon = expanded ? coreIcons.CaretsIn : coreIcons.CaretsOut;
57060
57063
  return /* @__PURE__ */ React80__default.default.createElement(React80__default.default.Fragment, null, /* @__PURE__ */ React80__default.default.createElement("div", { className: "ag-header-group-cell-label", role: "presentation" }, /* @__PURE__ */ React80__default.default.createElement("span", { className: "ag-header-group-text", role: "presentation" }, props.displayName)), expandable && /* @__PURE__ */ React80__default.default.createElement(
57061
57064
  coreReact.Tooltip,
57062
57065
  {
@@ -57069,7 +57072,7 @@ function GenericColumnGroupHeader(props) {
57069
57072
  {
57070
57073
  "aria-label": tooltipText,
57071
57074
  className: "expand-button",
57072
- onClick: () => setIsExpanded((v) => !v)
57075
+ onClick: () => props.setExpanded(!expanded)
57073
57076
  },
57074
57077
  /* @__PURE__ */ React80__default.default.createElement(ExpansionVariantIcon, { size: "sm" })
57075
57078
  )
@@ -57162,13 +57165,6 @@ function CustomLoader(params) {
57162
57165
  }
57163
57166
  return /* @__PURE__ */ React80__default.default.createElement(LevelIndents, { level: params.node.level, lastRowInGroup: false });
57164
57167
  }
57165
- var DefaultFrameworkComponents = {
57166
- agColumnHeader: GenericHeaderRenderer,
57167
- agLoadingCellRenderer: CustomLoader,
57168
- agColumnGroupHeader: GenericColumnGroupHeader,
57169
- loadingOverlayRenderer: Spinner,
57170
- emptyStateRenderer: EmptyState
57171
- };
57172
57168
  function getFrameworkComponents(tableProps) {
57173
57169
  const headerMenuConfig = {
57174
57170
  suppressResetColumnsOption: tableProps.suppressResetColumnsOption || false,
@@ -57182,6 +57178,13 @@ function getFrameworkComponents(tableProps) {
57182
57178
  tableProps.onSelectAll,
57183
57179
  tableProps.selectionSSREnabled
57184
57180
  );
57181
+ const DefaultFrameworkComponents = {
57182
+ agColumnHeader: GenericHeaderRenderer,
57183
+ agLoadingCellRenderer: CustomLoader,
57184
+ agColumnGroupHeader: GenericColumnGroupHeader,
57185
+ loadingOverlayRenderer: Spinner,
57186
+ emptyStateRenderer: EmptyState
57187
+ };
57185
57188
  DefaultFrameworkComponents["autoGroupCellRenderer"] = AutoGroupCellRenderer;
57186
57189
  return { ...DefaultFrameworkComponents, ...customFrameworkComponents };
57187
57190
  }
@@ -57846,6 +57849,8 @@ var InternalTableContext = React80__default.default.createContext({
57846
57849
  gridApi: void 0,
57847
57850
  localStoragePersistenceKey: void 0,
57848
57851
  onBulkEditUpdate: () => Promise.resolve(),
57852
+ onExpandOrCollapseAll: () => {
57853
+ },
57849
57854
  onServerSideDataRequest: void 0,
57850
57855
  onTableConfigChange: () => {
57851
57856
  },
@@ -108988,6 +108993,7 @@ var DataTable = ({
108988
108993
  getRowId,
108989
108994
  initialTableConfig: _initialTableConfig,
108990
108995
  onBulkEditUpdate,
108996
+ onExpandOrCollapseAll,
108991
108997
  onServerSideDataRequest,
108992
108998
  onTableConfigChange,
108993
108999
  showExpandCollapseAllToggle,
@@ -109238,6 +109244,7 @@ var DataTable = ({
109238
109244
  gridApi,
109239
109245
  initialTableConfig,
109240
109246
  onBulkEditUpdate,
109247
+ onExpandOrCollapseAll,
109241
109248
  onServerSideDataRequest,
109242
109249
  onTableConfigChange: internalOnTableConfigChange,
109243
109250
  rowSelectionRef,
@@ -112316,6 +112323,7 @@ var ClientSideDataTable = ({
112316
112323
  getRowId,
112317
112324
  initialTableConfig: _initialTableConfig,
112318
112325
  onBulkEditUpdate,
112326
+ onExpandOrCollapseAll,
112319
112327
  onTableConfigChange,
112320
112328
  translations: translations2 = {},
112321
112329
  enableCellTextSelection,
@@ -112332,8 +112340,9 @@ var ClientSideDataTable = ({
112332
112340
  filterGroups,
112333
112341
  getRowId,
112334
112342
  initialTableConfig: _initialTableConfig,
112335
- onTableConfigChange,
112336
112343
  onBulkEditUpdate,
112344
+ onExpandOrCollapseAll,
112345
+ onTableConfigChange,
112337
112346
  showExpandCollapseAllToggle: true,
112338
112347
  translations: translations2,
112339
112348
  localStoragePersistenceKey,
@@ -116725,6 +116734,7 @@ var ServerSideDataTable = ({
116725
116734
  getRowId,
116726
116735
  initialTableConfig: _initialTableConfig,
116727
116736
  onBulkEditUpdate,
116737
+ onExpandOrCollapseAll,
116728
116738
  onServerSideDataRequest,
116729
116739
  onTableConfigChange,
116730
116740
  enableCellTextSelection,
@@ -116743,9 +116753,10 @@ var ServerSideDataTable = ({
116743
116753
  filterGroups,
116744
116754
  getRowId,
116745
116755
  initialTableConfig: _initialTableConfig,
116746
- onTableConfigChange,
116747
- onServerSideDataRequest,
116748
116756
  onBulkEditUpdate,
116757
+ onExpandOrCollapseAll,
116758
+ onServerSideDataRequest,
116759
+ onTableConfigChange,
116749
116760
  showExpandCollapseAllToggle,
116750
116761
  translations: translations2,
116751
116762
  customBulkEditorFields,
@@ -1145,8 +1145,16 @@ interface DataTableProps {
1145
1145
  filterGroups?: FilterGroup[];
1146
1146
  getRowId?: (params: GetRowIdParams) => string;
1147
1147
  initialTableConfig?: DataTableConfig;
1148
- onTableConfigChange?: (config: DataTableConfig) => void;
1148
+ /**
1149
+ * Callback invoked when the row group expand/collapse state changes via
1150
+ * the Expand/Collapse toggle button. Use this to track the table's
1151
+ * expand/collapse state.
1152
+ * @param expanded - `true` when groups are expanded at any level, `false`
1153
+ * when all groups are collapsed.
1154
+ */
1155
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1149
1156
  onServerSideDataRequest?: (params: ServerSideGetRowsParams) => Promise<SuccessParams | void> | void;
1157
+ onTableConfigChange?: (config: DataTableConfig) => void;
1150
1158
  grandTotalsLabelRenderer?: React.FunctionComponent<GrandTotalsLabelRendererProps>;
1151
1159
  /**
1152
1160
  * Callback after bulk edit action is performed.
@@ -1374,6 +1382,7 @@ interface InternalTableContext {
1374
1382
  onServerSideDataRequest?: DataTableProps['onServerSideDataRequest'];
1375
1383
  updateServerSideDataSource: (params: UpdateServerSideDataSourceParams) => void;
1376
1384
  localStoragePersistenceKey?: string;
1385
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1377
1386
  onTableConfigChange: () => void;
1378
1387
  rowHeight: RowSize;
1379
1388
  rowSelectionRef?: React__default.MutableRefObject<RowSelectionRef>;
@@ -1454,7 +1463,7 @@ interface BulkActionProps {
1454
1463
  style?: React__default.CSSProperties;
1455
1464
  }
1456
1465
 
1457
- declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1466
+ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1458
1467
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1459
1468
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1460
1469
  ConfigPanelButton: React__default.FC<{}>;
@@ -1491,7 +1500,7 @@ declare const MultiSelectQuickFilterRenderer: (props: FilterProps<any[]>) => Rea
1491
1500
 
1492
1501
  declare const SingleSelectQuickFilterRenderer: (props: FilterProps<any[]>) => React__default.JSX.Element;
1493
1502
 
1494
- declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1503
+ declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1495
1504
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1496
1505
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1497
1506
  ConfigPanelButton: React__default.FC<{}>;
@@ -1145,8 +1145,16 @@ interface DataTableProps {
1145
1145
  filterGroups?: FilterGroup[];
1146
1146
  getRowId?: (params: GetRowIdParams) => string;
1147
1147
  initialTableConfig?: DataTableConfig;
1148
- onTableConfigChange?: (config: DataTableConfig) => void;
1148
+ /**
1149
+ * Callback invoked when the row group expand/collapse state changes via
1150
+ * the Expand/Collapse toggle button. Use this to track the table's
1151
+ * expand/collapse state.
1152
+ * @param expanded - `true` when groups are expanded at any level, `false`
1153
+ * when all groups are collapsed.
1154
+ */
1155
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1149
1156
  onServerSideDataRequest?: (params: ServerSideGetRowsParams) => Promise<SuccessParams | void> | void;
1157
+ onTableConfigChange?: (config: DataTableConfig) => void;
1150
1158
  grandTotalsLabelRenderer?: React.FunctionComponent<GrandTotalsLabelRendererProps>;
1151
1159
  /**
1152
1160
  * Callback after bulk edit action is performed.
@@ -1374,6 +1382,7 @@ interface InternalTableContext {
1374
1382
  onServerSideDataRequest?: DataTableProps['onServerSideDataRequest'];
1375
1383
  updateServerSideDataSource: (params: UpdateServerSideDataSourceParams) => void;
1376
1384
  localStoragePersistenceKey?: string;
1385
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1377
1386
  onTableConfigChange: () => void;
1378
1387
  rowHeight: RowSize;
1379
1388
  rowSelectionRef?: React__default.MutableRefObject<RowSelectionRef>;
@@ -1454,7 +1463,7 @@ interface BulkActionProps {
1454
1463
  style?: React__default.CSSProperties;
1455
1464
  }
1456
1465
 
1457
- declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1466
+ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1458
1467
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1459
1468
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1460
1469
  ConfigPanelButton: React__default.FC<{}>;
@@ -1491,7 +1500,7 @@ declare const MultiSelectQuickFilterRenderer: (props: FilterProps<any[]>) => Rea
1491
1500
 
1492
1501
  declare const SingleSelectQuickFilterRenderer: (props: FilterProps<any[]>) => React__default.JSX.Element;
1493
1502
 
1494
- declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1503
+ declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1495
1504
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1496
1505
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1497
1506
  ConfigPanelButton: React__default.FC<{}>;
@@ -56583,9 +56583,10 @@ var GenericHeaderRenderer = (props) => {
56583
56583
  const {
56584
56584
  columnApi,
56585
56585
  tableRef,
56586
+ onExpandOrCollapseAll,
56586
56587
  onServerSideDataRequest,
56587
- showExpandCollapseAllToggle,
56588
- onTableConfigChange
56588
+ onTableConfigChange,
56589
+ showExpandCollapseAllToggle
56589
56590
  } = useInternalTableContext();
56590
56591
  const onSSDR = Boolean(onServerSideDataRequest);
56591
56592
  const [sortOrder, setSortOrder] = React80.useState(props.column.getSort());
@@ -56776,9 +56777,11 @@ var GenericHeaderRenderer = (props) => {
56776
56777
  }
56777
56778
  });
56778
56779
  setExpansionVariant("tierOne");
56780
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(true);
56779
56781
  } else {
56780
56782
  props.api.collapseAll();
56781
56783
  setExpansionVariant("closed");
56784
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(false);
56782
56785
  }
56783
56786
  return;
56784
56787
  }
@@ -56793,10 +56796,13 @@ var GenericHeaderRenderer = (props) => {
56793
56796
  props.api
56794
56797
  );
56795
56798
  setExpansionVariant(hasMoreExpandableNodes ? "tierOne" : "all");
56799
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(true);
56796
56800
  } else if (expansionVariant === "tierOne") {
56797
56801
  props.api.expandAll();
56802
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(true);
56798
56803
  } else {
56799
56804
  props.api.collapseAll();
56805
+ onExpandOrCollapseAll == null ? void 0 : onExpandOrCollapseAll(false);
56800
56806
  }
56801
56807
  }
56802
56808
  const tooltipText = {
@@ -56973,7 +56979,8 @@ var GenericHeaderRenderer = (props) => {
56973
56979
  "aria-label": tooltipText[expansionVariant],
56974
56980
  className: "expand-button",
56975
56981
  onClick: onExpandToggle,
56976
- role: "button"
56982
+ role: "button",
56983
+ "data-qa": "expand-or-collapse-all-button"
56977
56984
  },
56978
56985
  /* @__PURE__ */ React80.createElement(ExpansionVariantIcon, { size: "sm" })
56979
56986
  )
@@ -57032,18 +57039,14 @@ var GenericHeaderRenderer = (props) => {
57032
57039
  // src/GenericHeader/GenericColumnGroupHeader.tsx
57033
57040
  function GenericColumnGroupHeader(props) {
57034
57041
  const I18n = useI18nContext();
57035
- const { expanded: initialExpanded, expandable } = props.columnGroup.providedColumnGroup;
57036
- const [isExpanded, setIsExpanded] = React80.useState(initialExpanded);
57037
- React80.useEffect(() => {
57038
- props.setExpanded(isExpanded);
57039
- }, [isExpanded]);
57042
+ const { expanded, expandable } = props.columnGroup.providedColumnGroup;
57040
57043
  if (!props.displayName) {
57041
57044
  return null;
57042
57045
  }
57043
57046
  const tooltipText = I18n.t(
57044
- `dataTable.columnGroupToggle.${isExpanded ? "collapse" : "expand"}`
57047
+ `dataTable.columnGroupToggle.${expanded ? "collapse" : "expand"}`
57045
57048
  );
57046
- const ExpansionVariantIcon = isExpanded ? CaretsIn : CaretsOut;
57049
+ const ExpansionVariantIcon = expanded ? CaretsIn : CaretsOut;
57047
57050
  return /* @__PURE__ */ React80.createElement(React80.Fragment, null, /* @__PURE__ */ React80.createElement("div", { className: "ag-header-group-cell-label", role: "presentation" }, /* @__PURE__ */ React80.createElement("span", { className: "ag-header-group-text", role: "presentation" }, props.displayName)), expandable && /* @__PURE__ */ React80.createElement(
57048
57051
  Tooltip,
57049
57052
  {
@@ -57056,7 +57059,7 @@ function GenericColumnGroupHeader(props) {
57056
57059
  {
57057
57060
  "aria-label": tooltipText,
57058
57061
  className: "expand-button",
57059
- onClick: () => setIsExpanded((v) => !v)
57062
+ onClick: () => props.setExpanded(!expanded)
57060
57063
  },
57061
57064
  /* @__PURE__ */ React80.createElement(ExpansionVariantIcon, { size: "sm" })
57062
57065
  )
@@ -57149,13 +57152,6 @@ function CustomLoader(params) {
57149
57152
  }
57150
57153
  return /* @__PURE__ */ React80.createElement(LevelIndents, { level: params.node.level, lastRowInGroup: false });
57151
57154
  }
57152
- var DefaultFrameworkComponents = {
57153
- agColumnHeader: GenericHeaderRenderer,
57154
- agLoadingCellRenderer: CustomLoader,
57155
- agColumnGroupHeader: GenericColumnGroupHeader,
57156
- loadingOverlayRenderer: Spinner,
57157
- emptyStateRenderer: EmptyState
57158
- };
57159
57155
  function getFrameworkComponents(tableProps) {
57160
57156
  const headerMenuConfig = {
57161
57157
  suppressResetColumnsOption: tableProps.suppressResetColumnsOption || false,
@@ -57169,6 +57165,13 @@ function getFrameworkComponents(tableProps) {
57169
57165
  tableProps.onSelectAll,
57170
57166
  tableProps.selectionSSREnabled
57171
57167
  );
57168
+ const DefaultFrameworkComponents = {
57169
+ agColumnHeader: GenericHeaderRenderer,
57170
+ agLoadingCellRenderer: CustomLoader,
57171
+ agColumnGroupHeader: GenericColumnGroupHeader,
57172
+ loadingOverlayRenderer: Spinner,
57173
+ emptyStateRenderer: EmptyState
57174
+ };
57172
57175
  DefaultFrameworkComponents["autoGroupCellRenderer"] = AutoGroupCellRenderer;
57173
57176
  return { ...DefaultFrameworkComponents, ...customFrameworkComponents };
57174
57177
  }
@@ -57833,6 +57836,8 @@ var InternalTableContext = React80.createContext({
57833
57836
  gridApi: void 0,
57834
57837
  localStoragePersistenceKey: void 0,
57835
57838
  onBulkEditUpdate: () => Promise.resolve(),
57839
+ onExpandOrCollapseAll: () => {
57840
+ },
57836
57841
  onServerSideDataRequest: void 0,
57837
57842
  onTableConfigChange: () => {
57838
57843
  },
@@ -108975,6 +108980,7 @@ var DataTable = ({
108975
108980
  getRowId,
108976
108981
  initialTableConfig: _initialTableConfig,
108977
108982
  onBulkEditUpdate,
108983
+ onExpandOrCollapseAll,
108978
108984
  onServerSideDataRequest,
108979
108985
  onTableConfigChange,
108980
108986
  showExpandCollapseAllToggle,
@@ -109225,6 +109231,7 @@ var DataTable = ({
109225
109231
  gridApi,
109226
109232
  initialTableConfig,
109227
109233
  onBulkEditUpdate,
109234
+ onExpandOrCollapseAll,
109228
109235
  onServerSideDataRequest,
109229
109236
  onTableConfigChange: internalOnTableConfigChange,
109230
109237
  rowSelectionRef,
@@ -112303,6 +112310,7 @@ var ClientSideDataTable = ({
112303
112310
  getRowId,
112304
112311
  initialTableConfig: _initialTableConfig,
112305
112312
  onBulkEditUpdate,
112313
+ onExpandOrCollapseAll,
112306
112314
  onTableConfigChange,
112307
112315
  translations: translations2 = {},
112308
112316
  enableCellTextSelection,
@@ -112319,8 +112327,9 @@ var ClientSideDataTable = ({
112319
112327
  filterGroups,
112320
112328
  getRowId,
112321
112329
  initialTableConfig: _initialTableConfig,
112322
- onTableConfigChange,
112323
112330
  onBulkEditUpdate,
112331
+ onExpandOrCollapseAll,
112332
+ onTableConfigChange,
112324
112333
  showExpandCollapseAllToggle: true,
112325
112334
  translations: translations2,
112326
112335
  localStoragePersistenceKey,
@@ -116712,6 +116721,7 @@ var ServerSideDataTable = ({
116712
116721
  getRowId,
116713
116722
  initialTableConfig: _initialTableConfig,
116714
116723
  onBulkEditUpdate,
116724
+ onExpandOrCollapseAll,
116715
116725
  onServerSideDataRequest,
116716
116726
  onTableConfigChange,
116717
116727
  enableCellTextSelection,
@@ -116730,9 +116740,10 @@ var ServerSideDataTable = ({
116730
116740
  filterGroups,
116731
116741
  getRowId,
116732
116742
  initialTableConfig: _initialTableConfig,
116733
- onTableConfigChange,
116734
- onServerSideDataRequest,
116735
116743
  onBulkEditUpdate,
116744
+ onExpandOrCollapseAll,
116745
+ onServerSideDataRequest,
116746
+ onTableConfigChange,
116736
116747
  showExpandCollapseAllToggle,
116737
116748
  translations: translations2,
116738
116749
  customBulkEditorFields,
@@ -56517,9 +56517,10 @@ var GenericHeaderRenderer = (props) => {
56517
56517
  const {
56518
56518
  columnApi,
56519
56519
  tableRef,
56520
+ onExpandOrCollapseAll,
56520
56521
  onServerSideDataRequest,
56521
- showExpandCollapseAllToggle,
56522
- onTableConfigChange
56522
+ onTableConfigChange,
56523
+ showExpandCollapseAllToggle
56523
56524
  } = useInternalTableContext();
56524
56525
  const onSSDR = Boolean(onServerSideDataRequest);
56525
56526
  const [sortOrder, setSortOrder] = React80__default.default.useState(props.column.getSort());
@@ -56708,9 +56709,11 @@ var GenericHeaderRenderer = (props) => {
56708
56709
  }
56709
56710
  });
56710
56711
  setExpansionVariant("tierOne");
56712
+ onExpandOrCollapseAll?.(true);
56711
56713
  } else {
56712
56714
  props.api.collapseAll();
56713
56715
  setExpansionVariant("closed");
56716
+ onExpandOrCollapseAll?.(false);
56714
56717
  }
56715
56718
  return;
56716
56719
  }
@@ -56725,10 +56728,13 @@ var GenericHeaderRenderer = (props) => {
56725
56728
  props.api
56726
56729
  );
56727
56730
  setExpansionVariant(hasMoreExpandableNodes ? "tierOne" : "all");
56731
+ onExpandOrCollapseAll?.(true);
56728
56732
  } else if (expansionVariant === "tierOne") {
56729
56733
  props.api.expandAll();
56734
+ onExpandOrCollapseAll?.(true);
56730
56735
  } else {
56731
56736
  props.api.collapseAll();
56737
+ onExpandOrCollapseAll?.(false);
56732
56738
  }
56733
56739
  }
56734
56740
  const tooltipText = {
@@ -56900,7 +56906,8 @@ var GenericHeaderRenderer = (props) => {
56900
56906
  "aria-label": tooltipText[expansionVariant],
56901
56907
  className: "expand-button",
56902
56908
  onClick: onExpandToggle,
56903
- role: "button"
56909
+ role: "button",
56910
+ "data-qa": "expand-or-collapse-all-button"
56904
56911
  },
56905
56912
  /* @__PURE__ */ React80__default.default.createElement(ExpansionVariantIcon, { size: "sm" })
56906
56913
  )
@@ -56959,18 +56966,14 @@ var GenericHeaderRenderer = (props) => {
56959
56966
  // src/GenericHeader/GenericColumnGroupHeader.tsx
56960
56967
  function GenericColumnGroupHeader(props) {
56961
56968
  const I18n = coreReact.useI18nContext();
56962
- const { expanded: initialExpanded, expandable } = props.columnGroup.providedColumnGroup;
56963
- const [isExpanded, setIsExpanded] = React80__default.default.useState(initialExpanded);
56964
- React80__default.default.useEffect(() => {
56965
- props.setExpanded(isExpanded);
56966
- }, [isExpanded]);
56969
+ const { expanded, expandable } = props.columnGroup.providedColumnGroup;
56967
56970
  if (!props.displayName) {
56968
56971
  return null;
56969
56972
  }
56970
56973
  const tooltipText = I18n.t(
56971
- `dataTable.columnGroupToggle.${isExpanded ? "collapse" : "expand"}`
56974
+ `dataTable.columnGroupToggle.${expanded ? "collapse" : "expand"}`
56972
56975
  );
56973
- const ExpansionVariantIcon = isExpanded ? coreIcons.CaretsIn : coreIcons.CaretsOut;
56976
+ const ExpansionVariantIcon = expanded ? coreIcons.CaretsIn : coreIcons.CaretsOut;
56974
56977
  return /* @__PURE__ */ React80__default.default.createElement(React80__default.default.Fragment, null, /* @__PURE__ */ React80__default.default.createElement("div", { className: "ag-header-group-cell-label", role: "presentation" }, /* @__PURE__ */ React80__default.default.createElement("span", { className: "ag-header-group-text", role: "presentation" }, props.displayName)), expandable && /* @__PURE__ */ React80__default.default.createElement(
56975
56978
  coreReact.Tooltip,
56976
56979
  {
@@ -56983,7 +56986,7 @@ function GenericColumnGroupHeader(props) {
56983
56986
  {
56984
56987
  "aria-label": tooltipText,
56985
56988
  className: "expand-button",
56986
- onClick: () => setIsExpanded((v) => !v)
56989
+ onClick: () => props.setExpanded(!expanded)
56987
56990
  },
56988
56991
  /* @__PURE__ */ React80__default.default.createElement(ExpansionVariantIcon, { size: "sm" })
56989
56992
  )
@@ -57074,13 +57077,6 @@ function CustomLoader(params) {
57074
57077
  }
57075
57078
  return /* @__PURE__ */ React80__default.default.createElement(LevelIndents, { level: params.node.level, lastRowInGroup: false });
57076
57079
  }
57077
- var DefaultFrameworkComponents = {
57078
- agColumnHeader: GenericHeaderRenderer,
57079
- agLoadingCellRenderer: CustomLoader,
57080
- agColumnGroupHeader: GenericColumnGroupHeader,
57081
- loadingOverlayRenderer: Spinner,
57082
- emptyStateRenderer: EmptyState
57083
- };
57084
57080
  function getFrameworkComponents(tableProps) {
57085
57081
  const headerMenuConfig = {
57086
57082
  suppressResetColumnsOption: tableProps.suppressResetColumnsOption || false,
@@ -57094,6 +57090,13 @@ function getFrameworkComponents(tableProps) {
57094
57090
  tableProps.onSelectAll,
57095
57091
  tableProps.selectionSSREnabled
57096
57092
  );
57093
+ const DefaultFrameworkComponents = {
57094
+ agColumnHeader: GenericHeaderRenderer,
57095
+ agLoadingCellRenderer: CustomLoader,
57096
+ agColumnGroupHeader: GenericColumnGroupHeader,
57097
+ loadingOverlayRenderer: Spinner,
57098
+ emptyStateRenderer: EmptyState
57099
+ };
57097
57100
  DefaultFrameworkComponents["autoGroupCellRenderer"] = AutoGroupCellRenderer;
57098
57101
  return { ...DefaultFrameworkComponents, ...customFrameworkComponents };
57099
57102
  }
@@ -57744,6 +57747,8 @@ var InternalTableContext = React80__default.default.createContext({
57744
57747
  gridApi: void 0,
57745
57748
  localStoragePersistenceKey: void 0,
57746
57749
  onBulkEditUpdate: () => Promise.resolve(),
57750
+ onExpandOrCollapseAll: () => {
57751
+ },
57747
57752
  onServerSideDataRequest: void 0,
57748
57753
  onTableConfigChange: () => {
57749
57754
  },
@@ -108837,6 +108842,7 @@ var DataTable = ({
108837
108842
  getRowId,
108838
108843
  initialTableConfig: _initialTableConfig,
108839
108844
  onBulkEditUpdate,
108845
+ onExpandOrCollapseAll,
108840
108846
  onServerSideDataRequest,
108841
108847
  onTableConfigChange,
108842
108848
  showExpandCollapseAllToggle,
@@ -109083,6 +109089,7 @@ var DataTable = ({
109083
109089
  gridApi,
109084
109090
  initialTableConfig,
109085
109091
  onBulkEditUpdate,
109092
+ onExpandOrCollapseAll,
109086
109093
  onServerSideDataRequest,
109087
109094
  onTableConfigChange: internalOnTableConfigChange,
109088
109095
  rowSelectionRef,
@@ -112086,6 +112093,7 @@ var ClientSideDataTable = ({
112086
112093
  getRowId,
112087
112094
  initialTableConfig: _initialTableConfig,
112088
112095
  onBulkEditUpdate,
112096
+ onExpandOrCollapseAll,
112089
112097
  onTableConfigChange,
112090
112098
  translations: translations2 = {},
112091
112099
  enableCellTextSelection,
@@ -112102,8 +112110,9 @@ var ClientSideDataTable = ({
112102
112110
  filterGroups,
112103
112111
  getRowId,
112104
112112
  initialTableConfig: _initialTableConfig,
112105
- onTableConfigChange,
112106
112113
  onBulkEditUpdate,
112114
+ onExpandOrCollapseAll,
112115
+ onTableConfigChange,
112107
112116
  showExpandCollapseAllToggle: true,
112108
112117
  translations: translations2,
112109
112118
  localStoragePersistenceKey,
@@ -116494,6 +116503,7 @@ var ServerSideDataTable = ({
116494
116503
  getRowId,
116495
116504
  initialTableConfig: _initialTableConfig,
116496
116505
  onBulkEditUpdate,
116506
+ onExpandOrCollapseAll,
116497
116507
  onServerSideDataRequest,
116498
116508
  onTableConfigChange,
116499
116509
  enableCellTextSelection,
@@ -116512,9 +116522,10 @@ var ServerSideDataTable = ({
116512
116522
  filterGroups,
116513
116523
  getRowId,
116514
116524
  initialTableConfig: _initialTableConfig,
116515
- onTableConfigChange,
116516
- onServerSideDataRequest,
116517
116525
  onBulkEditUpdate,
116526
+ onExpandOrCollapseAll,
116527
+ onServerSideDataRequest,
116528
+ onTableConfigChange,
116518
116529
  showExpandCollapseAllToggle,
116519
116530
  translations: translations2,
116520
116531
  customBulkEditorFields,
@@ -1145,8 +1145,16 @@ interface DataTableProps {
1145
1145
  filterGroups?: FilterGroup[];
1146
1146
  getRowId?: (params: GetRowIdParams) => string;
1147
1147
  initialTableConfig?: DataTableConfig;
1148
- onTableConfigChange?: (config: DataTableConfig) => void;
1148
+ /**
1149
+ * Callback invoked when the row group expand/collapse state changes via
1150
+ * the Expand/Collapse toggle button. Use this to track the table's
1151
+ * expand/collapse state.
1152
+ * @param expanded - `true` when groups are expanded at any level, `false`
1153
+ * when all groups are collapsed.
1154
+ */
1155
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1149
1156
  onServerSideDataRequest?: (params: ServerSideGetRowsParams) => Promise<SuccessParams | void> | void;
1157
+ onTableConfigChange?: (config: DataTableConfig) => void;
1150
1158
  grandTotalsLabelRenderer?: React.FunctionComponent<GrandTotalsLabelRendererProps>;
1151
1159
  /**
1152
1160
  * Callback after bulk edit action is performed.
@@ -1374,6 +1382,7 @@ interface InternalTableContext {
1374
1382
  onServerSideDataRequest?: DataTableProps['onServerSideDataRequest'];
1375
1383
  updateServerSideDataSource: (params: UpdateServerSideDataSourceParams) => void;
1376
1384
  localStoragePersistenceKey?: string;
1385
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1377
1386
  onTableConfigChange: () => void;
1378
1387
  rowHeight: RowSize;
1379
1388
  rowSelectionRef?: React__default.MutableRefObject<RowSelectionRef>;
@@ -1454,7 +1463,7 @@ interface BulkActionProps {
1454
1463
  style?: React__default.CSSProperties;
1455
1464
  }
1456
1465
 
1457
- declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1466
+ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1458
1467
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1459
1468
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1460
1469
  ConfigPanelButton: React__default.FC<{}>;
@@ -1491,7 +1500,7 @@ declare const MultiSelectQuickFilterRenderer: (props: FilterProps<any[]>) => Rea
1491
1500
 
1492
1501
  declare const SingleSelectQuickFilterRenderer: (props: FilterProps<any[]>) => React__default.JSX.Element;
1493
1502
 
1494
- declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1503
+ declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1495
1504
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1496
1505
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1497
1506
  ConfigPanelButton: React__default.FC<{}>;
@@ -1145,8 +1145,16 @@ interface DataTableProps {
1145
1145
  filterGroups?: FilterGroup[];
1146
1146
  getRowId?: (params: GetRowIdParams) => string;
1147
1147
  initialTableConfig?: DataTableConfig;
1148
- onTableConfigChange?: (config: DataTableConfig) => void;
1148
+ /**
1149
+ * Callback invoked when the row group expand/collapse state changes via
1150
+ * the Expand/Collapse toggle button. Use this to track the table's
1151
+ * expand/collapse state.
1152
+ * @param expanded - `true` when groups are expanded at any level, `false`
1153
+ * when all groups are collapsed.
1154
+ */
1155
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1149
1156
  onServerSideDataRequest?: (params: ServerSideGetRowsParams) => Promise<SuccessParams | void> | void;
1157
+ onTableConfigChange?: (config: DataTableConfig) => void;
1150
1158
  grandTotalsLabelRenderer?: React.FunctionComponent<GrandTotalsLabelRendererProps>;
1151
1159
  /**
1152
1160
  * Callback after bulk edit action is performed.
@@ -1374,6 +1382,7 @@ interface InternalTableContext {
1374
1382
  onServerSideDataRequest?: DataTableProps['onServerSideDataRequest'];
1375
1383
  updateServerSideDataSource: (params: UpdateServerSideDataSourceParams) => void;
1376
1384
  localStoragePersistenceKey?: string;
1385
+ onExpandOrCollapseAll?: (expanded: boolean) => void;
1377
1386
  onTableConfigChange: () => void;
1378
1387
  rowHeight: RowSize;
1379
1388
  rowSelectionRef?: React__default.MutableRefObject<RowSelectionRef>;
@@ -1454,7 +1463,7 @@ interface BulkActionProps {
1454
1463
  style?: React__default.CSSProperties;
1455
1464
  }
1456
1465
 
1457
- declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1466
+ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onTableConfigChange, translations, enableCellTextSelection, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<ClientSideDataTableProps>) => React__default.JSX.Element) & {
1458
1467
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1459
1468
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1460
1469
  ConfigPanelButton: React__default.FC<{}>;
@@ -1491,7 +1500,7 @@ declare const MultiSelectQuickFilterRenderer: (props: FilterProps<any[]>) => Rea
1491
1500
 
1492
1501
  declare const SingleSelectQuickFilterRenderer: (props: FilterProps<any[]>) => React__default.JSX.Element;
1493
1502
 
1494
- declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1503
+ declare const _default: (({ analytics, children, columnDefinitions: _columnDefinitions, customBulkEditorFields, enableDynamicRowHeight, enableGroupEditAndValidation, filterGroups, getRowId, initialTableConfig: _initialTableConfig, onBulkEditUpdate, onExpandOrCollapseAll, onServerSideDataRequest, onTableConfigChange, enableCellTextSelection, showExpandCollapseAllToggle, translations, localStoragePersistenceKey, enableCDN, }: React__default.PropsWithChildren<DataTableProps>) => React__default.JSX.Element) & {
1495
1504
  BulkActions: React__default.FunctionComponent<React__default.PropsWithChildren<BulkActionProps>>;
1496
1505
  BulkEditActionButton: React__default.FunctionComponent<ActionButtonProps>;
1497
1506
  ConfigPanelButton: React__default.FC<{}>;
@@ -56504,9 +56504,10 @@ var GenericHeaderRenderer = (props) => {
56504
56504
  const {
56505
56505
  columnApi,
56506
56506
  tableRef,
56507
+ onExpandOrCollapseAll,
56507
56508
  onServerSideDataRequest,
56508
- showExpandCollapseAllToggle,
56509
- onTableConfigChange
56509
+ onTableConfigChange,
56510
+ showExpandCollapseAllToggle
56510
56511
  } = useInternalTableContext();
56511
56512
  const onSSDR = Boolean(onServerSideDataRequest);
56512
56513
  const [sortOrder, setSortOrder] = React80.useState(props.column.getSort());
@@ -56695,9 +56696,11 @@ var GenericHeaderRenderer = (props) => {
56695
56696
  }
56696
56697
  });
56697
56698
  setExpansionVariant("tierOne");
56699
+ onExpandOrCollapseAll?.(true);
56698
56700
  } else {
56699
56701
  props.api.collapseAll();
56700
56702
  setExpansionVariant("closed");
56703
+ onExpandOrCollapseAll?.(false);
56701
56704
  }
56702
56705
  return;
56703
56706
  }
@@ -56712,10 +56715,13 @@ var GenericHeaderRenderer = (props) => {
56712
56715
  props.api
56713
56716
  );
56714
56717
  setExpansionVariant(hasMoreExpandableNodes ? "tierOne" : "all");
56718
+ onExpandOrCollapseAll?.(true);
56715
56719
  } else if (expansionVariant === "tierOne") {
56716
56720
  props.api.expandAll();
56721
+ onExpandOrCollapseAll?.(true);
56717
56722
  } else {
56718
56723
  props.api.collapseAll();
56724
+ onExpandOrCollapseAll?.(false);
56719
56725
  }
56720
56726
  }
56721
56727
  const tooltipText = {
@@ -56887,7 +56893,8 @@ var GenericHeaderRenderer = (props) => {
56887
56893
  "aria-label": tooltipText[expansionVariant],
56888
56894
  className: "expand-button",
56889
56895
  onClick: onExpandToggle,
56890
- role: "button"
56896
+ role: "button",
56897
+ "data-qa": "expand-or-collapse-all-button"
56891
56898
  },
56892
56899
  /* @__PURE__ */ React80.createElement(ExpansionVariantIcon, { size: "sm" })
56893
56900
  )
@@ -56946,18 +56953,14 @@ var GenericHeaderRenderer = (props) => {
56946
56953
  // src/GenericHeader/GenericColumnGroupHeader.tsx
56947
56954
  function GenericColumnGroupHeader(props) {
56948
56955
  const I18n = useI18nContext();
56949
- const { expanded: initialExpanded, expandable } = props.columnGroup.providedColumnGroup;
56950
- const [isExpanded, setIsExpanded] = React80.useState(initialExpanded);
56951
- React80.useEffect(() => {
56952
- props.setExpanded(isExpanded);
56953
- }, [isExpanded]);
56956
+ const { expanded, expandable } = props.columnGroup.providedColumnGroup;
56954
56957
  if (!props.displayName) {
56955
56958
  return null;
56956
56959
  }
56957
56960
  const tooltipText = I18n.t(
56958
- `dataTable.columnGroupToggle.${isExpanded ? "collapse" : "expand"}`
56961
+ `dataTable.columnGroupToggle.${expanded ? "collapse" : "expand"}`
56959
56962
  );
56960
- const ExpansionVariantIcon = isExpanded ? CaretsIn : CaretsOut;
56963
+ const ExpansionVariantIcon = expanded ? CaretsIn : CaretsOut;
56961
56964
  return /* @__PURE__ */ React80.createElement(React80.Fragment, null, /* @__PURE__ */ React80.createElement("div", { className: "ag-header-group-cell-label", role: "presentation" }, /* @__PURE__ */ React80.createElement("span", { className: "ag-header-group-text", role: "presentation" }, props.displayName)), expandable && /* @__PURE__ */ React80.createElement(
56962
56965
  Tooltip,
56963
56966
  {
@@ -56970,7 +56973,7 @@ function GenericColumnGroupHeader(props) {
56970
56973
  {
56971
56974
  "aria-label": tooltipText,
56972
56975
  className: "expand-button",
56973
- onClick: () => setIsExpanded((v) => !v)
56976
+ onClick: () => props.setExpanded(!expanded)
56974
56977
  },
56975
56978
  /* @__PURE__ */ React80.createElement(ExpansionVariantIcon, { size: "sm" })
56976
56979
  )
@@ -57061,13 +57064,6 @@ function CustomLoader(params) {
57061
57064
  }
57062
57065
  return /* @__PURE__ */ React80.createElement(LevelIndents, { level: params.node.level, lastRowInGroup: false });
57063
57066
  }
57064
- var DefaultFrameworkComponents = {
57065
- agColumnHeader: GenericHeaderRenderer,
57066
- agLoadingCellRenderer: CustomLoader,
57067
- agColumnGroupHeader: GenericColumnGroupHeader,
57068
- loadingOverlayRenderer: Spinner,
57069
- emptyStateRenderer: EmptyState
57070
- };
57071
57067
  function getFrameworkComponents(tableProps) {
57072
57068
  const headerMenuConfig = {
57073
57069
  suppressResetColumnsOption: tableProps.suppressResetColumnsOption || false,
@@ -57081,6 +57077,13 @@ function getFrameworkComponents(tableProps) {
57081
57077
  tableProps.onSelectAll,
57082
57078
  tableProps.selectionSSREnabled
57083
57079
  );
57080
+ const DefaultFrameworkComponents = {
57081
+ agColumnHeader: GenericHeaderRenderer,
57082
+ agLoadingCellRenderer: CustomLoader,
57083
+ agColumnGroupHeader: GenericColumnGroupHeader,
57084
+ loadingOverlayRenderer: Spinner,
57085
+ emptyStateRenderer: EmptyState
57086
+ };
57084
57087
  DefaultFrameworkComponents["autoGroupCellRenderer"] = AutoGroupCellRenderer;
57085
57088
  return { ...DefaultFrameworkComponents, ...customFrameworkComponents };
57086
57089
  }
@@ -57731,6 +57734,8 @@ var InternalTableContext = React80.createContext({
57731
57734
  gridApi: void 0,
57732
57735
  localStoragePersistenceKey: void 0,
57733
57736
  onBulkEditUpdate: () => Promise.resolve(),
57737
+ onExpandOrCollapseAll: () => {
57738
+ },
57734
57739
  onServerSideDataRequest: void 0,
57735
57740
  onTableConfigChange: () => {
57736
57741
  },
@@ -108824,6 +108829,7 @@ var DataTable = ({
108824
108829
  getRowId,
108825
108830
  initialTableConfig: _initialTableConfig,
108826
108831
  onBulkEditUpdate,
108832
+ onExpandOrCollapseAll,
108827
108833
  onServerSideDataRequest,
108828
108834
  onTableConfigChange,
108829
108835
  showExpandCollapseAllToggle,
@@ -109070,6 +109076,7 @@ var DataTable = ({
109070
109076
  gridApi,
109071
109077
  initialTableConfig,
109072
109078
  onBulkEditUpdate,
109079
+ onExpandOrCollapseAll,
109073
109080
  onServerSideDataRequest,
109074
109081
  onTableConfigChange: internalOnTableConfigChange,
109075
109082
  rowSelectionRef,
@@ -112073,6 +112080,7 @@ var ClientSideDataTable = ({
112073
112080
  getRowId,
112074
112081
  initialTableConfig: _initialTableConfig,
112075
112082
  onBulkEditUpdate,
112083
+ onExpandOrCollapseAll,
112076
112084
  onTableConfigChange,
112077
112085
  translations: translations2 = {},
112078
112086
  enableCellTextSelection,
@@ -112089,8 +112097,9 @@ var ClientSideDataTable = ({
112089
112097
  filterGroups,
112090
112098
  getRowId,
112091
112099
  initialTableConfig: _initialTableConfig,
112092
- onTableConfigChange,
112093
112100
  onBulkEditUpdate,
112101
+ onExpandOrCollapseAll,
112102
+ onTableConfigChange,
112094
112103
  showExpandCollapseAllToggle: true,
112095
112104
  translations: translations2,
112096
112105
  localStoragePersistenceKey,
@@ -116481,6 +116490,7 @@ var ServerSideDataTable = ({
116481
116490
  getRowId,
116482
116491
  initialTableConfig: _initialTableConfig,
116483
116492
  onBulkEditUpdate,
116493
+ onExpandOrCollapseAll,
116484
116494
  onServerSideDataRequest,
116485
116495
  onTableConfigChange,
116486
116496
  enableCellTextSelection,
@@ -116499,9 +116509,10 @@ var ServerSideDataTable = ({
116499
116509
  filterGroups,
116500
116510
  getRowId,
116501
116511
  initialTableConfig: _initialTableConfig,
116502
- onTableConfigChange,
116503
- onServerSideDataRequest,
116504
116512
  onBulkEditUpdate,
116513
+ onExpandOrCollapseAll,
116514
+ onServerSideDataRequest,
116515
+ onTableConfigChange,
116505
116516
  showExpandCollapseAllToggle,
116506
116517
  translations: translations2,
116507
116518
  customBulkEditorFields,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@procore/data-table",
3
- "version": "14.38.0",
3
+ "version": "14.39.1",
4
4
  "description": "Complex data grid built on top of ag-grid, with DST components and styles.",
5
5
  "author": "Procore Technologies",
6
6
  "homepage": "https://github.com/procore/core/tree/main/packages/data-table",
@@ -75,7 +75,7 @@
75
75
  "dependencies": {
76
76
  "@procore/cdn-translations": "0.1.13",
77
77
  "@procore/error-pages": "^0.2.3",
78
- "@procore/labs-datetime-select": "^0.1.3",
78
+ "@procore/labs-datetime-select": "^0.2.0",
79
79
  "@procore/labs-group-by-select": "4.1.0",
80
80
  "@procore/toast-alert": "^5.1.1",
81
81
  "@procore/web-sdk-storage": "^0.1.0",
@@ -106,19 +106,17 @@
106
106
  "@dotenvx/dotenvx": "1.6.4",
107
107
  "@ngneat/falso": "6.4.0",
108
108
  "@procore/core-css": "10.17.0",
109
- "@procore/core-icons": "^12.11.0",
109
+ "@procore/core-icons": "^12.12.0",
110
110
  "@procore/core-prettier": "10.2.0",
111
- "@procore/core-react": "^12.32.0",
111
+ "@procore/core-react": "^12.34.0",
112
112
  "@procore/eslint-config": "10.0.0",
113
113
  "@procore/globalization-toolkit": "3.1.0",
114
114
  "@procore/labs-financials-utils": "4.3.1",
115
115
  "@procore/labs-procore-environment": "5.0.1",
116
116
  "@procore/pseudolocalize": "^0.1.1",
117
- "@procore/storybook-addon": "^4.0.0",
118
- "@storybook/addon-docs": "^7.5.3",
119
- "@storybook/manager-api": "^7.5.3",
120
- "@storybook/react": "^7.5.3",
121
- "@storybook/react-webpack5": "^7.5.3",
117
+ "@procore/storybook-addon": "^4.6.0",
118
+ "@storybook/addon-webpack5-compiler-swc": "^4.0.2",
119
+ "@storybook/react-webpack5": "^9.1.16",
122
120
  "@testing-library/cypress": "10.0.1",
123
121
  "@testing-library/dom": "8.20.0",
124
122
  "@testing-library/jest-dom": "5.16.4",
@@ -149,6 +147,7 @@
149
147
  "eslint-plugin-prettier": "4.2.1",
150
148
  "eslint-plugin-react": "7.32.0",
151
149
  "eslint-plugin-react-hooks": "4.6.0",
150
+ "eslint-plugin-storybook": "^9.1.16",
152
151
  "http-server": "^14.1.1",
153
152
  "jest": "29.5.0",
154
153
  "miragejs": "0.1.45",
@@ -163,7 +162,7 @@
163
162
  "sass": "1.57.1",
164
163
  "sass-loader": "13.2.0",
165
164
  "start-server-and-test": "1.15.4",
166
- "storybook": "^7.5.3",
165
+ "storybook": "^9.1.17",
167
166
  "style-loader": "3.3.1",
168
167
  "styled-components": "6.1.18",
169
168
  "tsup": "^8.4.0",