@procore/data-table 14.24.0 → 14.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Change Log
2
2
 
3
+ ## 14.25.0
4
+
5
+ ### Minor Changes
6
+
7
+ - ef8d5df8d0: Update react-resize-detector to version 12.0.0 to ensure compatibility with React 19.
8
+
9
+ ### Patch Changes
10
+
11
+ - db3385ee7a: Fix DateSelect background color when cellEditorPopup is enabled
12
+ - 68b3e08f0c: Fix issue with groupping and not rerendering new option items in Column's menu
13
+
3
14
  ## 14.24.0
4
15
 
5
16
  ### Minor Changes
@@ -9,6 +9,7 @@ var coreIcons = require('@procore/core-icons');
9
9
  var classNames = require('classnames');
10
10
  var dateFns = require('date-fns');
11
11
  var labsFinancialsUtils = require('@procore/labs-financials-utils');
12
+ var styled4 = require('styled-components');
12
13
  var format = require('@procore/labs-financials-utils/dist/format');
13
14
  var ulid$1 = require('ulid');
14
15
  var toastAlert = require('@procore/toast-alert');
@@ -16,10 +17,9 @@ var ReactDOM = require('react-dom');
16
17
  var server = require('react-dom/server');
17
18
  var webSdkStorage = require('@procore/web-sdk-storage');
18
19
  var _isEqual = require('lodash.isequal');
19
- var ReactResizeDetector = require('react-resize-detector');
20
+ var reactResizeDetector = require('react-resize-detector');
20
21
  var labsDatetimeSelect = require('@procore/labs-datetime-select');
21
22
  var Decimal = require('decimal.js');
22
- var styled3 = require('styled-components');
23
23
  var globalizationToolkit = require('@procore/globalization-toolkit');
24
24
  var labsGroupBySelect = require('@procore/labs-group-by-select');
25
25
 
@@ -29,11 +29,10 @@ var React77__default = /*#__PURE__*/_interopDefault(React77);
29
29
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
30
30
  var debounce5__default = /*#__PURE__*/_interopDefault(debounce5);
31
31
  var classNames__default = /*#__PURE__*/_interopDefault(classNames);
32
+ var styled4__default = /*#__PURE__*/_interopDefault(styled4);
32
33
  var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
33
34
  var _isEqual__default = /*#__PURE__*/_interopDefault(_isEqual);
34
- var ReactResizeDetector__default = /*#__PURE__*/_interopDefault(ReactResizeDetector);
35
35
  var Decimal__default = /*#__PURE__*/_interopDefault(Decimal);
36
- var styled3__default = /*#__PURE__*/_interopDefault(styled3);
37
36
 
38
37
  var __create = Object.create;
39
38
  var __defProp = Object.defineProperty;
@@ -8689,6 +8688,9 @@ function getDateObject(date) {
8689
8688
  }
8690
8689
  return date;
8691
8690
  }
8691
+ var StyledDateSelect = styled4__default.default(coreReact.DateSelect)`
8692
+ background-color: #ffffff;
8693
+ `;
8692
8694
  var DateCellValue = ({
8693
8695
  columnDefinition,
8694
8696
  isGroup,
@@ -8739,7 +8741,7 @@ var Editor2 = React77__default.default.forwardRef(
8739
8741
  timeZone: (_a = columnDefinition.cellEditorParams) == null ? void 0 : _a.timeZone
8740
8742
  },
8741
8743
  /* @__PURE__ */ React77__default.default.createElement(
8742
- coreReact.DateSelect,
8744
+ StyledDateSelect,
8743
8745
  {
8744
8746
  afterHide,
8745
8747
  className: cx4("input-cell"),
@@ -56585,7 +56587,6 @@ var getMainMenuItems = (props, I18n) => {
56585
56587
  }),
56586
56588
  value: "rowUnGroup",
56587
56589
  action() {
56588
- props.columnApi.resetColumnState();
56589
56590
  props.columnApi.removeRowGroupColumn(props.column);
56590
56591
  }
56591
56592
  };
@@ -56595,7 +56596,6 @@ var getMainMenuItems = (props, I18n) => {
56595
56596
  }),
56596
56597
  value: "rowGroup",
56597
56598
  action() {
56598
- props.columnApi.resetColumnState();
56599
56599
  props.columnApi.addRowGroupColumn(props.column);
56600
56600
  }
56601
56601
  };
@@ -56853,8 +56853,18 @@ var GenericHeaderRenderer = (props) => {
56853
56853
  const onSSDR = Boolean(onServerSideDataRequest);
56854
56854
  const [sortOrder, setSortOrder] = React77__default.default.useState(props.column.getSort());
56855
56855
  const [isFirstColumn2, setIsFirstColumn] = React77__default.default.useState(false);
56856
+ const [isRowGroupActive, setIsRowGroupActive] = React77__default.default.useState(
56857
+ () => props.column.isRowGroupActive()
56858
+ );
56856
56859
  const defaultMenuOptions = getMainMenuItems(
56857
- { ...props, onTableConfigChange },
56860
+ {
56861
+ ...props,
56862
+ menuConfig: {
56863
+ ...props.menuConfig,
56864
+ isRowGroupActive
56865
+ },
56866
+ onTableConfigChange
56867
+ },
56858
56868
  I18n
56859
56869
  );
56860
56870
  const headerCellRef = React77.useRef(null);
@@ -56868,6 +56878,18 @@ var GenericHeaderRenderer = (props) => {
56868
56878
  }) : !!headerCheckboxSelection;
56869
56879
  const checkbox = React77.useRef(null);
56870
56880
  const colId = props.column.getId();
56881
+ React77__default.default.useEffect(() => {
56882
+ const onRowGroupChanged = () => {
56883
+ setIsRowGroupActive(props.column.isRowGroupActive());
56884
+ };
56885
+ props.column.addEventListener("columnRowGroupChanged", onRowGroupChanged);
56886
+ return () => {
56887
+ props.column.removeEventListener(
56888
+ "columnRowGroupChanged",
56889
+ onRowGroupChanged
56890
+ );
56891
+ };
56892
+ }, []);
56871
56893
  React77__default.default.useEffect(() => {
56872
56894
  function calculatePosition() {
56873
56895
  const columns = props.columnApi.getColumnState();
@@ -105176,6 +105198,19 @@ function getRootRowNode(rowNode) {
105176
105198
  return rowNode.level > 0 && rowNode.parent ? getRootRowNode(rowNode.parent) : rowNode;
105177
105199
  }
105178
105200
 
105201
+ // src/utils/mergeRefs.ts
105202
+ function mergeRefs(...refs) {
105203
+ return (value) => {
105204
+ refs.forEach((ref) => {
105205
+ if (typeof ref === "function") {
105206
+ ref(value);
105207
+ } else if (ref != null) {
105208
+ ref.current = value;
105209
+ }
105210
+ });
105211
+ };
105212
+ }
105213
+
105179
105214
  // src/utils/setSiblingGroupsRowSelection.ts
105180
105215
  function setSiblingGroupsRowSelection(groupIndex, gridApi) {
105181
105216
  gridApi == null ? void 0 : gridApi.forEachNode((node) => {
@@ -109804,6 +109839,15 @@ var Table = (props) => {
109804
109839
  ["onGridReady"],
109805
109840
  props.UNSAFE_internalAGGridOverrides ?? {}
109806
109841
  );
109842
+ const { ref: resizeRef } = reactResizeDetector.useResizeDetector({
109843
+ onResize: onContainerResize,
109844
+ refreshMode: "debounce",
109845
+ refreshRate: 400
109846
+ });
109847
+ const combinedRef = React77__default.default.useCallback(
109848
+ mergeRefs(wrapperRef, resizeRef),
109849
+ [wrapperRef, resizeRef]
109850
+ );
109807
109851
  return /* @__PURE__ */ React77__default.default.createElement(
109808
109852
  Spinner,
109809
109853
  {
@@ -109818,133 +109862,125 @@ var Table = (props) => {
109818
109862
  }
109819
109863
  },
109820
109864
  /* @__PURE__ */ React77__default.default.createElement(
109821
- ReactResizeDetector__default.default,
109865
+ "div",
109822
109866
  {
109823
- onResize: onContainerResize,
109824
- refreshMode: "debounce",
109825
- refreshRate: 400
109826
- },
109827
- /* @__PURE__ */ React77__default.default.createElement(
109828
- "div",
109829
- {
109830
- style: {
109831
- flex: 1,
109832
- width: "100%",
109833
- maxHeight: props.maxHeight && tableHeight < props.maxHeight ? void 0 : props.maxHeight
109834
- },
109835
- className: cx19("ag-theme-alpine", {
109836
- "ag-suppress-column-virtualization": suppressColumnVirtualisation
109837
- }),
109838
- ref: wrapperRef,
109839
- "data-qa": loadingStatus.loading ? "loading" : "loaded"
109867
+ style: {
109868
+ flex: 1,
109869
+ width: "100%",
109870
+ maxHeight: props.maxHeight && tableHeight < props.maxHeight ? void 0 : props.maxHeight
109840
109871
  },
109841
- /* @__PURE__ */ React77__default.default.createElement("style", null, `:root {
109872
+ className: cx19("ag-theme-alpine", {
109873
+ "ag-suppress-column-virtualization": suppressColumnVirtualisation
109874
+ }),
109875
+ ref: combinedRef,
109876
+ "data-qa": loadingStatus.loading ? "loading" : "loaded"
109877
+ },
109878
+ /* @__PURE__ */ React77__default.default.createElement("style", null, `:root {
109842
109879
  --viewport-width: ${viewportWidth}px;
109843
109880
  --rowActions-width: ${rowActionsWidth.current}px;
109844
109881
  }`),
109845
- /* @__PURE__ */ React77__default.default.createElement(
109846
- AgGridReact,
109847
- {
109848
- aggFuncs: aggregationFunctions_exports,
109849
- alwaysAggregateAtRootLevel: !onSSDR,
109850
- autoGroupColumnDef: decoratedAutoGroupColDef,
109851
- cacheBlockSize: props.paginationPageSize || defaultPaginationPageSize,
109852
- isGroupOpenByDefault: isClientSideGroupOpenByDefault,
109853
- isServerSideGroupOpenByDefault,
109854
- defaultColDef,
109855
- enableGroupEdit: internalTableContext.enableGroupEditAndValidation,
109856
- enableCellTextSelection: internalTableContext.enableCellTextSelection,
109857
- enableCellEditingOnBackspace: true,
109858
- excelStyles: transformToExcelStyles(props.excelDataTypeFormats),
109859
- components: frameworkComponents.base,
109860
- fullWidthCellRenderer: FullWidthCellRenderer(
109861
- props.fullWidthCellRenderer
109862
- ),
109863
- getRowHeight: getMainTableRowHeight,
109864
- getRowId: internalTableContext.getRowId,
109865
- getRowStyle,
109866
- groupAllowUnbalanced: true,
109867
- groupDefaultExpanded: props.groupsAlwaysExpanded ? -1 : props.groupDefaultExpanded,
109868
- groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
109869
- getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
109870
- groupSelectsChildren: internalTableContext.totalRowCount > 0 && props.groupSelectsChildren || !onSSDR,
109871
- groupSelectsFiltered: true,
109872
- headerHeight: props.headerHeight,
109873
- icons: tableIcons,
109874
- isFullWidthRow: (props2) => {
109875
- const node = props2.rowNode;
109876
- return isFullWidthRow(node);
109877
- },
109878
- initialGroupOrderComparator: props.initialGroupOrderComparator ? (params) => props.initialGroupOrderComparator(
109879
- serializeNode(params.nodeA),
109880
- serializeNode(params.nodeB)
109881
- ) : void 0,
109882
- isRowSelectable,
109883
- loadingOverlayComponent: "loadingOverlayRenderer",
109884
- loadingOverlayComponentParams: {
109885
- loading: true
109886
- },
109887
- maintainColumnOrder: props.maintainColumnOrder,
109888
- modules: [
109889
- ...props.modules,
109890
- MasterDetailModule,
109891
- MenuModule,
109892
- RowGroupingModule,
109893
- SetFilterModule,
109894
- CsvExportModule,
109895
- ExcelExportModule,
109896
- SparklinesModule
109897
- ],
109898
- noRowsOverlayComponent: "emptyStateRenderer",
109899
- noRowsOverlayComponentParams: {
109900
- emptyStateRenderer: props.emptyStateRenderer
109901
- },
109902
- onCellValueChanged: internalOnCellValueChanged,
109903
- onColumnGroupOpened,
109904
- onColumnMoved,
109905
- onColumnPinned,
109906
- onColumnResized,
109907
- onColumnRowGroupChanged,
109908
- onDisplayedColumnsChanged,
109909
- onDragStopped,
109910
- onGridReady,
109911
- onColumnEverythingChanged: props.onColumnEverythingChanged,
109912
- onModelUpdated,
109913
- onCellFocused: props.onCellFocused,
109914
- onRowDragEnd,
109915
- onRowDragMove,
109916
- onRowGroupOpened: internalRowGroupOpened,
109917
- onRowSelected: internalOnRowSelected,
109918
- onSortChanged: onSortEventChanged,
109919
- onFilterChanged,
109920
- onFirstDataRendered: props.onFirstDataRendered,
109921
- paginateChildRows: props.paginateChildRows,
109922
- pagination: props.pagination,
109923
- paginationPageSize: props.paginationPageSize || defaultPaginationPageSize,
109924
- popupParent: props.popupParent,
109925
- pinnedBottomRowData: props.pinnedBottomRowData,
109926
- rowBuffer: props.rowBuffer,
109927
- rowClassRules,
109928
- rowDragManaged: onSSDR ? false : props.rowDragManaged ?? true,
109929
- rowModelType: onSSDR ? "serverSide" : void 0,
109930
- rowSelection: "multiple",
109931
- ...serverSideInfiniteScroll,
109932
- suppressClickEdit: true,
109933
- suppressAggFuncInHeader: true,
109934
- suppressColumnMoveAnimation: true,
109935
- suppressColumnVirtualisation,
109936
- suppressContextMenu: true,
109937
- suppressFieldDotNotation: props.suppressFieldDotNotation,
109938
- suppressGroupRowsSticky: !props.stickyExpandedGroupRows,
109939
- suppressPropertyNamesCheck: true,
109940
- suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
109941
- suppressPaginationPanel: true,
109942
- tabToNextCell: props.tabToNextCell,
109943
- ...clientSideRowData,
109944
- ...detailRowConfigProps,
109945
- ...overrideProps
109946
- }
109947
- )
109882
+ /* @__PURE__ */ React77__default.default.createElement(
109883
+ AgGridReact,
109884
+ {
109885
+ aggFuncs: aggregationFunctions_exports,
109886
+ alwaysAggregateAtRootLevel: !onSSDR,
109887
+ autoGroupColumnDef: decoratedAutoGroupColDef,
109888
+ cacheBlockSize: props.paginationPageSize || defaultPaginationPageSize,
109889
+ isGroupOpenByDefault: isClientSideGroupOpenByDefault,
109890
+ isServerSideGroupOpenByDefault,
109891
+ defaultColDef,
109892
+ enableGroupEdit: internalTableContext.enableGroupEditAndValidation,
109893
+ enableCellTextSelection: internalTableContext.enableCellTextSelection,
109894
+ enableCellEditingOnBackspace: true,
109895
+ excelStyles: transformToExcelStyles(props.excelDataTypeFormats),
109896
+ components: frameworkComponents.base,
109897
+ fullWidthCellRenderer: FullWidthCellRenderer(
109898
+ props.fullWidthCellRenderer
109899
+ ),
109900
+ getRowHeight: getMainTableRowHeight,
109901
+ getRowId: internalTableContext.getRowId,
109902
+ getRowStyle,
109903
+ groupAllowUnbalanced: true,
109904
+ groupDefaultExpanded: props.groupsAlwaysExpanded ? -1 : props.groupDefaultExpanded,
109905
+ groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
109906
+ getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
109907
+ groupSelectsChildren: internalTableContext.totalRowCount > 0 && props.groupSelectsChildren || !onSSDR,
109908
+ groupSelectsFiltered: true,
109909
+ headerHeight: props.headerHeight,
109910
+ icons: tableIcons,
109911
+ isFullWidthRow: (props2) => {
109912
+ const node = props2.rowNode;
109913
+ return isFullWidthRow(node);
109914
+ },
109915
+ initialGroupOrderComparator: props.initialGroupOrderComparator ? (params) => props.initialGroupOrderComparator(
109916
+ serializeNode(params.nodeA),
109917
+ serializeNode(params.nodeB)
109918
+ ) : void 0,
109919
+ isRowSelectable,
109920
+ loadingOverlayComponent: "loadingOverlayRenderer",
109921
+ loadingOverlayComponentParams: {
109922
+ loading: true
109923
+ },
109924
+ maintainColumnOrder: props.maintainColumnOrder,
109925
+ modules: [
109926
+ ...props.modules,
109927
+ MasterDetailModule,
109928
+ MenuModule,
109929
+ RowGroupingModule,
109930
+ SetFilterModule,
109931
+ CsvExportModule,
109932
+ ExcelExportModule,
109933
+ SparklinesModule
109934
+ ],
109935
+ noRowsOverlayComponent: "emptyStateRenderer",
109936
+ noRowsOverlayComponentParams: {
109937
+ emptyStateRenderer: props.emptyStateRenderer
109938
+ },
109939
+ onCellValueChanged: internalOnCellValueChanged,
109940
+ onColumnGroupOpened,
109941
+ onColumnMoved,
109942
+ onColumnPinned,
109943
+ onColumnResized,
109944
+ onColumnRowGroupChanged,
109945
+ onDisplayedColumnsChanged,
109946
+ onDragStopped,
109947
+ onGridReady,
109948
+ onColumnEverythingChanged: props.onColumnEverythingChanged,
109949
+ onModelUpdated,
109950
+ onCellFocused: props.onCellFocused,
109951
+ onRowDragEnd,
109952
+ onRowDragMove,
109953
+ onRowGroupOpened: internalRowGroupOpened,
109954
+ onRowSelected: internalOnRowSelected,
109955
+ onSortChanged: onSortEventChanged,
109956
+ onFilterChanged,
109957
+ onFirstDataRendered: props.onFirstDataRendered,
109958
+ paginateChildRows: props.paginateChildRows,
109959
+ pagination: props.pagination,
109960
+ paginationPageSize: props.paginationPageSize || defaultPaginationPageSize,
109961
+ popupParent: props.popupParent,
109962
+ pinnedBottomRowData: props.pinnedBottomRowData,
109963
+ rowBuffer: props.rowBuffer,
109964
+ rowClassRules,
109965
+ rowDragManaged: onSSDR ? false : props.rowDragManaged ?? true,
109966
+ rowModelType: onSSDR ? "serverSide" : void 0,
109967
+ rowSelection: "multiple",
109968
+ ...serverSideInfiniteScroll,
109969
+ suppressClickEdit: true,
109970
+ suppressAggFuncInHeader: true,
109971
+ suppressColumnMoveAnimation: true,
109972
+ suppressColumnVirtualisation,
109973
+ suppressContextMenu: true,
109974
+ suppressFieldDotNotation: props.suppressFieldDotNotation,
109975
+ suppressGroupRowsSticky: !props.stickyExpandedGroupRows,
109976
+ suppressPropertyNamesCheck: true,
109977
+ suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
109978
+ suppressPaginationPanel: true,
109979
+ tabToNextCell: props.tabToNextCell,
109980
+ ...clientSideRowData,
109981
+ ...detailRowConfigProps,
109982
+ ...overrideProps
109983
+ }
109948
109984
  )
109949
109985
  ),
109950
109986
  props.pagination && gridApi && /* @__PURE__ */ React77__default.default.createElement(
@@ -110092,7 +110128,7 @@ var FILTERS_GROUP_EXPANDABLE_AREA_VERTICAL_MARGIN = coreReact.spacing.md;
110092
110128
  var FILTERS_GROUP_ITEM_HEIGHT = 60;
110093
110129
  var ITEMS_IN_FILTERS_GROUP = 5;
110094
110130
  var FILTERS_GROUP_EXPANDABLE_AREA_HEIGHT = (FILTERS_GROUP_ITEM_HEIGHT + coreReact.spacing.xl) * ITEMS_IN_FILTERS_GROUP + BORDER_WIDTH;
110095
- var StyledPanelSection = styled3__default.default(coreReact.Panel.Section)`
110131
+ var StyledPanelSection = styled4__default.default(coreReact.Panel.Section)`
110096
110132
  // Filters Group container styles
110097
110133
  &.filters-list-group-section {
110098
110134
  padding-bottom: ${FILTERS_GROUP_VERTICAL_MARGIN}px;
@@ -110386,11 +110422,11 @@ var ConfigPanelButton = () => {
110386
110422
  var QuickFilterLabel = React77__default.default.forwardRef(({ enabled, ...props }, ref) => {
110387
110423
  return /* @__PURE__ */ React77__default.default.createElement(StyledQuickFilterLabel, { $enabled: enabled }, /* @__PURE__ */ React77__default.default.createElement(coreReact.SelectButton, { ref, ...props }));
110388
110424
  });
110389
- var StyledQuickFilterLabel = styled3__default.default.div`
110425
+ var StyledQuickFilterLabel = styled4__default.default.div`
110390
110426
  ${coreReact.StyledSelectButton} {
110391
110427
  width: auto;
110392
110428
  max-width: 380px;
110393
- ${({ $enabled }) => $enabled && styled3.css`
110429
+ ${({ $enabled }) => $enabled && styled4.css`
110394
110430
  background: ${coreReact.colors.blue96};
110395
110431
  border-color: ${coreReact.colors.blue96};
110396
110432
  font-weight: ${coreReact.typographyWeights.semibold};
@@ -111018,7 +111054,7 @@ var LocationQuickFilterRenderer = ({
111018
111054
  );
111019
111055
  };
111020
111056
  var LocationQuickFilterRenderer_default = LocationQuickFilterRenderer;
111021
- var StyledFilterPresetPopoverContent = styled3__default.default(coreReact.Popover.Content)`
111057
+ var StyledFilterPresetPopoverContent = styled4__default.default(coreReact.Popover.Content)`
111022
111058
  padding: ${coreReact.spacing.sm}px ${coreReact.spacing.lg}px;
111023
111059
  `;
111024
111060
  var getValueLabel = (isValueEmpty, value, placeholder, filterName) => {
@@ -111102,12 +111138,12 @@ var getSuperSelectFilterPreset = (columnDefinition) => {
111102
111138
  selectionStyle: "highlight"
111103
111139
  };
111104
111140
  };
111105
- var StyledSuperSelectWrapper = styled3__default.default.div`
111141
+ var StyledSuperSelectWrapper = styled4__default.default.div`
111106
111142
  ${coreReact.UNSAFE_StyledSuperSelectTrigger} {
111107
111143
  width: auto;
111108
111144
  }
111109
111145
 
111110
- ${({ $enabled }) => $enabled && styled3.css`
111146
+ ${({ $enabled }) => $enabled && styled4.css`
111111
111147
  ${coreReact.UNSAFE_StyledSuperSelectTrigger} {
111112
111148
  max-width: 360px;
111113
111149
  background: ${coreReact.colors.blue96};
@@ -111573,7 +111609,7 @@ var FilterIcon = () => {
111573
111609
  )
111574
111610
  );
111575
111611
  };
111576
- var StyledFilterTokenWrapper = styled3__default.default.div`
111612
+ var StyledFilterTokenWrapper = styled4__default.default.div`
111577
111613
  ${coreReact.UNSAFE_StyledFilterTokenLabel} {
111578
111614
  font-weight: ${coreReact.typographyWeights.semibold};
111579
111615
  }