@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.
@@ -7,6 +7,7 @@ import { Error as Error$1, Grip, Pencil, Building, ExternalLink, Clear, Calendar
7
7
  import classNames from 'classnames';
8
8
  import { isDate, parseISO, isSameDay, formatISO, isBefore } from 'date-fns';
9
9
  import { formatNumber, formatCurrency, formatPercentage } from '@procore/labs-financials-utils';
10
+ import styled4, { css as css$1 } from 'styled-components';
10
11
  import { format } from '@procore/labs-financials-utils/dist/format';
11
12
  import { detectPrng, factory } from 'ulid';
12
13
  import { useToastAlertContext, ToastAlertProvider } from '@procore/toast-alert';
@@ -14,10 +15,9 @@ import ReactDOM, { createPortal } from 'react-dom';
14
15
  import { renderToString, renderToStaticMarkup } from 'react-dom/server';
15
16
  import { storage } from '@procore/web-sdk-storage';
16
17
  import _isEqual from 'lodash.isequal';
17
- import ReactResizeDetector from 'react-resize-detector';
18
+ import { useResizeDetector } from 'react-resize-detector';
18
19
  import { DateTimeSelectField } from '@procore/labs-datetime-select';
19
20
  import Decimal from 'decimal.js';
20
- import styled3, { css as css$1 } from 'styled-components';
21
21
  import { getDatePlaceholder } from '@procore/globalization-toolkit';
22
22
  import { GroupBySelect } from '@procore/labs-group-by-select';
23
23
 
@@ -8675,6 +8675,9 @@ function getDateObject(date) {
8675
8675
  }
8676
8676
  return date;
8677
8677
  }
8678
+ var StyledDateSelect = styled4(DateSelect)`
8679
+ background-color: #ffffff;
8680
+ `;
8678
8681
  var DateCellValue = ({
8679
8682
  columnDefinition,
8680
8683
  isGroup,
@@ -8725,7 +8728,7 @@ var Editor2 = React77.forwardRef(
8725
8728
  timeZone: (_a = columnDefinition.cellEditorParams) == null ? void 0 : _a.timeZone
8726
8729
  },
8727
8730
  /* @__PURE__ */ React77.createElement(
8728
- DateSelect,
8731
+ StyledDateSelect,
8729
8732
  {
8730
8733
  afterHide,
8731
8734
  className: cx4("input-cell"),
@@ -56571,7 +56574,6 @@ var getMainMenuItems = (props, I18n) => {
56571
56574
  }),
56572
56575
  value: "rowUnGroup",
56573
56576
  action() {
56574
- props.columnApi.resetColumnState();
56575
56577
  props.columnApi.removeRowGroupColumn(props.column);
56576
56578
  }
56577
56579
  };
@@ -56581,7 +56583,6 @@ var getMainMenuItems = (props, I18n) => {
56581
56583
  }),
56582
56584
  value: "rowGroup",
56583
56585
  action() {
56584
- props.columnApi.resetColumnState();
56585
56586
  props.columnApi.addRowGroupColumn(props.column);
56586
56587
  }
56587
56588
  };
@@ -56839,8 +56840,18 @@ var GenericHeaderRenderer = (props) => {
56839
56840
  const onSSDR = Boolean(onServerSideDataRequest);
56840
56841
  const [sortOrder, setSortOrder] = React77.useState(props.column.getSort());
56841
56842
  const [isFirstColumn2, setIsFirstColumn] = React77.useState(false);
56843
+ const [isRowGroupActive, setIsRowGroupActive] = React77.useState(
56844
+ () => props.column.isRowGroupActive()
56845
+ );
56842
56846
  const defaultMenuOptions = getMainMenuItems(
56843
- { ...props, onTableConfigChange },
56847
+ {
56848
+ ...props,
56849
+ menuConfig: {
56850
+ ...props.menuConfig,
56851
+ isRowGroupActive
56852
+ },
56853
+ onTableConfigChange
56854
+ },
56844
56855
  I18n
56845
56856
  );
56846
56857
  const headerCellRef = useRef(null);
@@ -56854,6 +56865,18 @@ var GenericHeaderRenderer = (props) => {
56854
56865
  }) : !!headerCheckboxSelection;
56855
56866
  const checkbox = useRef(null);
56856
56867
  const colId = props.column.getId();
56868
+ React77.useEffect(() => {
56869
+ const onRowGroupChanged = () => {
56870
+ setIsRowGroupActive(props.column.isRowGroupActive());
56871
+ };
56872
+ props.column.addEventListener("columnRowGroupChanged", onRowGroupChanged);
56873
+ return () => {
56874
+ props.column.removeEventListener(
56875
+ "columnRowGroupChanged",
56876
+ onRowGroupChanged
56877
+ );
56878
+ };
56879
+ }, []);
56857
56880
  React77.useEffect(() => {
56858
56881
  function calculatePosition() {
56859
56882
  const columns = props.columnApi.getColumnState();
@@ -105162,6 +105185,19 @@ function getRootRowNode(rowNode) {
105162
105185
  return rowNode.level > 0 && rowNode.parent ? getRootRowNode(rowNode.parent) : rowNode;
105163
105186
  }
105164
105187
 
105188
+ // src/utils/mergeRefs.ts
105189
+ function mergeRefs(...refs) {
105190
+ return (value) => {
105191
+ refs.forEach((ref) => {
105192
+ if (typeof ref === "function") {
105193
+ ref(value);
105194
+ } else if (ref != null) {
105195
+ ref.current = value;
105196
+ }
105197
+ });
105198
+ };
105199
+ }
105200
+
105165
105201
  // src/utils/setSiblingGroupsRowSelection.ts
105166
105202
  function setSiblingGroupsRowSelection(groupIndex, gridApi) {
105167
105203
  gridApi == null ? void 0 : gridApi.forEachNode((node) => {
@@ -109790,6 +109826,15 @@ var Table = (props) => {
109790
109826
  ["onGridReady"],
109791
109827
  props.UNSAFE_internalAGGridOverrides ?? {}
109792
109828
  );
109829
+ const { ref: resizeRef } = useResizeDetector({
109830
+ onResize: onContainerResize,
109831
+ refreshMode: "debounce",
109832
+ refreshRate: 400
109833
+ });
109834
+ const combinedRef = React77.useCallback(
109835
+ mergeRefs(wrapperRef, resizeRef),
109836
+ [wrapperRef, resizeRef]
109837
+ );
109793
109838
  return /* @__PURE__ */ React77.createElement(
109794
109839
  Spinner,
109795
109840
  {
@@ -109804,133 +109849,125 @@ var Table = (props) => {
109804
109849
  }
109805
109850
  },
109806
109851
  /* @__PURE__ */ React77.createElement(
109807
- ReactResizeDetector,
109852
+ "div",
109808
109853
  {
109809
- onResize: onContainerResize,
109810
- refreshMode: "debounce",
109811
- refreshRate: 400
109812
- },
109813
- /* @__PURE__ */ React77.createElement(
109814
- "div",
109815
- {
109816
- style: {
109817
- flex: 1,
109818
- width: "100%",
109819
- maxHeight: props.maxHeight && tableHeight < props.maxHeight ? void 0 : props.maxHeight
109820
- },
109821
- className: cx19("ag-theme-alpine", {
109822
- "ag-suppress-column-virtualization": suppressColumnVirtualisation
109823
- }),
109824
- ref: wrapperRef,
109825
- "data-qa": loadingStatus.loading ? "loading" : "loaded"
109854
+ style: {
109855
+ flex: 1,
109856
+ width: "100%",
109857
+ maxHeight: props.maxHeight && tableHeight < props.maxHeight ? void 0 : props.maxHeight
109826
109858
  },
109827
- /* @__PURE__ */ React77.createElement("style", null, `:root {
109859
+ className: cx19("ag-theme-alpine", {
109860
+ "ag-suppress-column-virtualization": suppressColumnVirtualisation
109861
+ }),
109862
+ ref: combinedRef,
109863
+ "data-qa": loadingStatus.loading ? "loading" : "loaded"
109864
+ },
109865
+ /* @__PURE__ */ React77.createElement("style", null, `:root {
109828
109866
  --viewport-width: ${viewportWidth}px;
109829
109867
  --rowActions-width: ${rowActionsWidth.current}px;
109830
109868
  }`),
109831
- /* @__PURE__ */ React77.createElement(
109832
- AgGridReact,
109833
- {
109834
- aggFuncs: aggregationFunctions_exports,
109835
- alwaysAggregateAtRootLevel: !onSSDR,
109836
- autoGroupColumnDef: decoratedAutoGroupColDef,
109837
- cacheBlockSize: props.paginationPageSize || defaultPaginationPageSize,
109838
- isGroupOpenByDefault: isClientSideGroupOpenByDefault,
109839
- isServerSideGroupOpenByDefault,
109840
- defaultColDef,
109841
- enableGroupEdit: internalTableContext.enableGroupEditAndValidation,
109842
- enableCellTextSelection: internalTableContext.enableCellTextSelection,
109843
- enableCellEditingOnBackspace: true,
109844
- excelStyles: transformToExcelStyles(props.excelDataTypeFormats),
109845
- components: frameworkComponents.base,
109846
- fullWidthCellRenderer: FullWidthCellRenderer(
109847
- props.fullWidthCellRenderer
109848
- ),
109849
- getRowHeight: getMainTableRowHeight,
109850
- getRowId: internalTableContext.getRowId,
109851
- getRowStyle,
109852
- groupAllowUnbalanced: true,
109853
- groupDefaultExpanded: props.groupsAlwaysExpanded ? -1 : props.groupDefaultExpanded,
109854
- groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
109855
- getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
109856
- groupSelectsChildren: internalTableContext.totalRowCount > 0 && props.groupSelectsChildren || !onSSDR,
109857
- groupSelectsFiltered: true,
109858
- headerHeight: props.headerHeight,
109859
- icons: tableIcons,
109860
- isFullWidthRow: (props2) => {
109861
- const node = props2.rowNode;
109862
- return isFullWidthRow(node);
109863
- },
109864
- initialGroupOrderComparator: props.initialGroupOrderComparator ? (params) => props.initialGroupOrderComparator(
109865
- serializeNode(params.nodeA),
109866
- serializeNode(params.nodeB)
109867
- ) : void 0,
109868
- isRowSelectable,
109869
- loadingOverlayComponent: "loadingOverlayRenderer",
109870
- loadingOverlayComponentParams: {
109871
- loading: true
109872
- },
109873
- maintainColumnOrder: props.maintainColumnOrder,
109874
- modules: [
109875
- ...props.modules,
109876
- MasterDetailModule,
109877
- MenuModule,
109878
- RowGroupingModule,
109879
- SetFilterModule,
109880
- CsvExportModule,
109881
- ExcelExportModule,
109882
- SparklinesModule
109883
- ],
109884
- noRowsOverlayComponent: "emptyStateRenderer",
109885
- noRowsOverlayComponentParams: {
109886
- emptyStateRenderer: props.emptyStateRenderer
109887
- },
109888
- onCellValueChanged: internalOnCellValueChanged,
109889
- onColumnGroupOpened,
109890
- onColumnMoved,
109891
- onColumnPinned,
109892
- onColumnResized,
109893
- onColumnRowGroupChanged,
109894
- onDisplayedColumnsChanged,
109895
- onDragStopped,
109896
- onGridReady,
109897
- onColumnEverythingChanged: props.onColumnEverythingChanged,
109898
- onModelUpdated,
109899
- onCellFocused: props.onCellFocused,
109900
- onRowDragEnd,
109901
- onRowDragMove,
109902
- onRowGroupOpened: internalRowGroupOpened,
109903
- onRowSelected: internalOnRowSelected,
109904
- onSortChanged: onSortEventChanged,
109905
- onFilterChanged,
109906
- onFirstDataRendered: props.onFirstDataRendered,
109907
- paginateChildRows: props.paginateChildRows,
109908
- pagination: props.pagination,
109909
- paginationPageSize: props.paginationPageSize || defaultPaginationPageSize,
109910
- popupParent: props.popupParent,
109911
- pinnedBottomRowData: props.pinnedBottomRowData,
109912
- rowBuffer: props.rowBuffer,
109913
- rowClassRules,
109914
- rowDragManaged: onSSDR ? false : props.rowDragManaged ?? true,
109915
- rowModelType: onSSDR ? "serverSide" : void 0,
109916
- rowSelection: "multiple",
109917
- ...serverSideInfiniteScroll,
109918
- suppressClickEdit: true,
109919
- suppressAggFuncInHeader: true,
109920
- suppressColumnMoveAnimation: true,
109921
- suppressColumnVirtualisation,
109922
- suppressContextMenu: true,
109923
- suppressFieldDotNotation: props.suppressFieldDotNotation,
109924
- suppressGroupRowsSticky: !props.stickyExpandedGroupRows,
109925
- suppressPropertyNamesCheck: true,
109926
- suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
109927
- suppressPaginationPanel: true,
109928
- tabToNextCell: props.tabToNextCell,
109929
- ...clientSideRowData,
109930
- ...detailRowConfigProps,
109931
- ...overrideProps
109932
- }
109933
- )
109869
+ /* @__PURE__ */ React77.createElement(
109870
+ AgGridReact,
109871
+ {
109872
+ aggFuncs: aggregationFunctions_exports,
109873
+ alwaysAggregateAtRootLevel: !onSSDR,
109874
+ autoGroupColumnDef: decoratedAutoGroupColDef,
109875
+ cacheBlockSize: props.paginationPageSize || defaultPaginationPageSize,
109876
+ isGroupOpenByDefault: isClientSideGroupOpenByDefault,
109877
+ isServerSideGroupOpenByDefault,
109878
+ defaultColDef,
109879
+ enableGroupEdit: internalTableContext.enableGroupEditAndValidation,
109880
+ enableCellTextSelection: internalTableContext.enableCellTextSelection,
109881
+ enableCellEditingOnBackspace: true,
109882
+ excelStyles: transformToExcelStyles(props.excelDataTypeFormats),
109883
+ components: frameworkComponents.base,
109884
+ fullWidthCellRenderer: FullWidthCellRenderer(
109885
+ props.fullWidthCellRenderer
109886
+ ),
109887
+ getRowHeight: getMainTableRowHeight,
109888
+ getRowId: internalTableContext.getRowId,
109889
+ getRowStyle,
109890
+ groupAllowUnbalanced: true,
109891
+ groupDefaultExpanded: props.groupsAlwaysExpanded ? -1 : props.groupDefaultExpanded,
109892
+ groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
109893
+ getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
109894
+ groupSelectsChildren: internalTableContext.totalRowCount > 0 && props.groupSelectsChildren || !onSSDR,
109895
+ groupSelectsFiltered: true,
109896
+ headerHeight: props.headerHeight,
109897
+ icons: tableIcons,
109898
+ isFullWidthRow: (props2) => {
109899
+ const node = props2.rowNode;
109900
+ return isFullWidthRow(node);
109901
+ },
109902
+ initialGroupOrderComparator: props.initialGroupOrderComparator ? (params) => props.initialGroupOrderComparator(
109903
+ serializeNode(params.nodeA),
109904
+ serializeNode(params.nodeB)
109905
+ ) : void 0,
109906
+ isRowSelectable,
109907
+ loadingOverlayComponent: "loadingOverlayRenderer",
109908
+ loadingOverlayComponentParams: {
109909
+ loading: true
109910
+ },
109911
+ maintainColumnOrder: props.maintainColumnOrder,
109912
+ modules: [
109913
+ ...props.modules,
109914
+ MasterDetailModule,
109915
+ MenuModule,
109916
+ RowGroupingModule,
109917
+ SetFilterModule,
109918
+ CsvExportModule,
109919
+ ExcelExportModule,
109920
+ SparklinesModule
109921
+ ],
109922
+ noRowsOverlayComponent: "emptyStateRenderer",
109923
+ noRowsOverlayComponentParams: {
109924
+ emptyStateRenderer: props.emptyStateRenderer
109925
+ },
109926
+ onCellValueChanged: internalOnCellValueChanged,
109927
+ onColumnGroupOpened,
109928
+ onColumnMoved,
109929
+ onColumnPinned,
109930
+ onColumnResized,
109931
+ onColumnRowGroupChanged,
109932
+ onDisplayedColumnsChanged,
109933
+ onDragStopped,
109934
+ onGridReady,
109935
+ onColumnEverythingChanged: props.onColumnEverythingChanged,
109936
+ onModelUpdated,
109937
+ onCellFocused: props.onCellFocused,
109938
+ onRowDragEnd,
109939
+ onRowDragMove,
109940
+ onRowGroupOpened: internalRowGroupOpened,
109941
+ onRowSelected: internalOnRowSelected,
109942
+ onSortChanged: onSortEventChanged,
109943
+ onFilterChanged,
109944
+ onFirstDataRendered: props.onFirstDataRendered,
109945
+ paginateChildRows: props.paginateChildRows,
109946
+ pagination: props.pagination,
109947
+ paginationPageSize: props.paginationPageSize || defaultPaginationPageSize,
109948
+ popupParent: props.popupParent,
109949
+ pinnedBottomRowData: props.pinnedBottomRowData,
109950
+ rowBuffer: props.rowBuffer,
109951
+ rowClassRules,
109952
+ rowDragManaged: onSSDR ? false : props.rowDragManaged ?? true,
109953
+ rowModelType: onSSDR ? "serverSide" : void 0,
109954
+ rowSelection: "multiple",
109955
+ ...serverSideInfiniteScroll,
109956
+ suppressClickEdit: true,
109957
+ suppressAggFuncInHeader: true,
109958
+ suppressColumnMoveAnimation: true,
109959
+ suppressColumnVirtualisation,
109960
+ suppressContextMenu: true,
109961
+ suppressFieldDotNotation: props.suppressFieldDotNotation,
109962
+ suppressGroupRowsSticky: !props.stickyExpandedGroupRows,
109963
+ suppressPropertyNamesCheck: true,
109964
+ suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
109965
+ suppressPaginationPanel: true,
109966
+ tabToNextCell: props.tabToNextCell,
109967
+ ...clientSideRowData,
109968
+ ...detailRowConfigProps,
109969
+ ...overrideProps
109970
+ }
109934
109971
  )
109935
109972
  ),
109936
109973
  props.pagination && gridApi && /* @__PURE__ */ React77.createElement(
@@ -110078,7 +110115,7 @@ var FILTERS_GROUP_EXPANDABLE_AREA_VERTICAL_MARGIN = spacing.md;
110078
110115
  var FILTERS_GROUP_ITEM_HEIGHT = 60;
110079
110116
  var ITEMS_IN_FILTERS_GROUP = 5;
110080
110117
  var FILTERS_GROUP_EXPANDABLE_AREA_HEIGHT = (FILTERS_GROUP_ITEM_HEIGHT + spacing.xl) * ITEMS_IN_FILTERS_GROUP + BORDER_WIDTH;
110081
- var StyledPanelSection = styled3(Panel.Section)`
110118
+ var StyledPanelSection = styled4(Panel.Section)`
110082
110119
  // Filters Group container styles
110083
110120
  &.filters-list-group-section {
110084
110121
  padding-bottom: ${FILTERS_GROUP_VERTICAL_MARGIN}px;
@@ -110372,7 +110409,7 @@ var ConfigPanelButton = () => {
110372
110409
  var QuickFilterLabel = React77.forwardRef(({ enabled, ...props }, ref) => {
110373
110410
  return /* @__PURE__ */ React77.createElement(StyledQuickFilterLabel, { $enabled: enabled }, /* @__PURE__ */ React77.createElement(SelectButton, { ref, ...props }));
110374
110411
  });
110375
- var StyledQuickFilterLabel = styled3.div`
110412
+ var StyledQuickFilterLabel = styled4.div`
110376
110413
  ${StyledSelectButton} {
110377
110414
  width: auto;
110378
110415
  max-width: 380px;
@@ -111004,7 +111041,7 @@ var LocationQuickFilterRenderer = ({
111004
111041
  );
111005
111042
  };
111006
111043
  var LocationQuickFilterRenderer_default = LocationQuickFilterRenderer;
111007
- var StyledFilterPresetPopoverContent = styled3(Popover.Content)`
111044
+ var StyledFilterPresetPopoverContent = styled4(Popover.Content)`
111008
111045
  padding: ${spacing.sm}px ${spacing.lg}px;
111009
111046
  `;
111010
111047
  var getValueLabel = (isValueEmpty, value, placeholder, filterName) => {
@@ -111088,7 +111125,7 @@ var getSuperSelectFilterPreset = (columnDefinition) => {
111088
111125
  selectionStyle: "highlight"
111089
111126
  };
111090
111127
  };
111091
- var StyledSuperSelectWrapper = styled3.div`
111128
+ var StyledSuperSelectWrapper = styled4.div`
111092
111129
  ${UNSAFE_StyledSuperSelectTrigger} {
111093
111130
  width: auto;
111094
111131
  }
@@ -111559,7 +111596,7 @@ var FilterIcon = () => {
111559
111596
  )
111560
111597
  );
111561
111598
  };
111562
- var StyledFilterTokenWrapper = styled3.div`
111599
+ var StyledFilterTokenWrapper = styled4.div`
111563
111600
  ${UNSAFE_StyledFilterTokenLabel} {
111564
111601
  font-weight: ${typographyWeights.semibold};
111565
111602
  }