@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.
@@ -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;
@@ -8681,6 +8680,9 @@ function getDateObject(date) {
8681
8680
  }
8682
8681
  return date;
8683
8682
  }
8683
+ var StyledDateSelect = styled4__default.default(coreReact.DateSelect)`
8684
+ background-color: #ffffff;
8685
+ `;
8684
8686
  var DateCellValue = ({
8685
8687
  columnDefinition,
8686
8688
  isGroup,
@@ -8728,7 +8730,7 @@ var Editor2 = React77__default.default.forwardRef(
8728
8730
  timeZone: columnDefinition.cellEditorParams?.timeZone
8729
8731
  },
8730
8732
  /* @__PURE__ */ React77__default.default.createElement(
8731
- coreReact.DateSelect,
8733
+ StyledDateSelect,
8732
8734
  {
8733
8735
  afterHide,
8734
8736
  className: cx4("input-cell"),
@@ -56491,7 +56493,6 @@ var getMainMenuItems = (props, I18n) => {
56491
56493
  }),
56492
56494
  value: "rowUnGroup",
56493
56495
  action() {
56494
- props.columnApi.resetColumnState();
56495
56496
  props.columnApi.removeRowGroupColumn(props.column);
56496
56497
  }
56497
56498
  };
@@ -56501,7 +56502,6 @@ var getMainMenuItems = (props, I18n) => {
56501
56502
  }),
56502
56503
  value: "rowGroup",
56503
56504
  action() {
56504
- props.columnApi.resetColumnState();
56505
56505
  props.columnApi.addRowGroupColumn(props.column);
56506
56506
  }
56507
56507
  };
@@ -56757,8 +56757,18 @@ var GenericHeaderRenderer = (props) => {
56757
56757
  const onSSDR = Boolean(onServerSideDataRequest);
56758
56758
  const [sortOrder, setSortOrder] = React77__default.default.useState(props.column.getSort());
56759
56759
  const [isFirstColumn2, setIsFirstColumn] = React77__default.default.useState(false);
56760
+ const [isRowGroupActive, setIsRowGroupActive] = React77__default.default.useState(
56761
+ () => props.column.isRowGroupActive()
56762
+ );
56760
56763
  const defaultMenuOptions = getMainMenuItems(
56761
- { ...props, onTableConfigChange },
56764
+ {
56765
+ ...props,
56766
+ menuConfig: {
56767
+ ...props.menuConfig,
56768
+ isRowGroupActive
56769
+ },
56770
+ onTableConfigChange
56771
+ },
56762
56772
  I18n
56763
56773
  );
56764
56774
  const headerCellRef = React77.useRef(null);
@@ -56772,6 +56782,18 @@ var GenericHeaderRenderer = (props) => {
56772
56782
  }) : !!headerCheckboxSelection;
56773
56783
  const checkbox = React77.useRef(null);
56774
56784
  const colId = props.column.getId();
56785
+ React77__default.default.useEffect(() => {
56786
+ const onRowGroupChanged = () => {
56787
+ setIsRowGroupActive(props.column.isRowGroupActive());
56788
+ };
56789
+ props.column.addEventListener("columnRowGroupChanged", onRowGroupChanged);
56790
+ return () => {
56791
+ props.column.removeEventListener(
56792
+ "columnRowGroupChanged",
56793
+ onRowGroupChanged
56794
+ );
56795
+ };
56796
+ }, []);
56775
56797
  React77__default.default.useEffect(() => {
56776
56798
  function calculatePosition() {
56777
56799
  const columns = props.columnApi.getColumnState();
@@ -105014,6 +105036,19 @@ function getRootRowNode(rowNode) {
105014
105036
  return rowNode.level > 0 && rowNode.parent ? getRootRowNode(rowNode.parent) : rowNode;
105015
105037
  }
105016
105038
 
105039
+ // src/utils/mergeRefs.ts
105040
+ function mergeRefs(...refs) {
105041
+ return (value) => {
105042
+ refs.forEach((ref) => {
105043
+ if (typeof ref === "function") {
105044
+ ref(value);
105045
+ } else if (ref != null) {
105046
+ ref.current = value;
105047
+ }
105048
+ });
105049
+ };
105050
+ }
105051
+
105017
105052
  // src/utils/setSiblingGroupsRowSelection.ts
105018
105053
  function setSiblingGroupsRowSelection(groupIndex, gridApi) {
105019
105054
  gridApi?.forEachNode((node) => {
@@ -109592,6 +109627,15 @@ var Table = (props) => {
109592
109627
  ["onGridReady"],
109593
109628
  props.UNSAFE_internalAGGridOverrides ?? {}
109594
109629
  );
109630
+ const { ref: resizeRef } = reactResizeDetector.useResizeDetector({
109631
+ onResize: onContainerResize,
109632
+ refreshMode: "debounce",
109633
+ refreshRate: 400
109634
+ });
109635
+ const combinedRef = React77__default.default.useCallback(
109636
+ mergeRefs(wrapperRef, resizeRef),
109637
+ [wrapperRef, resizeRef]
109638
+ );
109595
109639
  return /* @__PURE__ */ React77__default.default.createElement(
109596
109640
  Spinner,
109597
109641
  {
@@ -109606,133 +109650,125 @@ var Table = (props) => {
109606
109650
  }
109607
109651
  },
109608
109652
  /* @__PURE__ */ React77__default.default.createElement(
109609
- ReactResizeDetector__default.default,
109653
+ "div",
109610
109654
  {
109611
- onResize: onContainerResize,
109612
- refreshMode: "debounce",
109613
- refreshRate: 400
109614
- },
109615
- /* @__PURE__ */ React77__default.default.createElement(
109616
- "div",
109617
- {
109618
- style: {
109619
- flex: 1,
109620
- width: "100%",
109621
- maxHeight: props.maxHeight && tableHeight < props.maxHeight ? void 0 : props.maxHeight
109622
- },
109623
- className: cx19("ag-theme-alpine", {
109624
- "ag-suppress-column-virtualization": suppressColumnVirtualisation
109625
- }),
109626
- ref: wrapperRef,
109627
- "data-qa": loadingStatus.loading ? "loading" : "loaded"
109655
+ style: {
109656
+ flex: 1,
109657
+ width: "100%",
109658
+ maxHeight: props.maxHeight && tableHeight < props.maxHeight ? void 0 : props.maxHeight
109628
109659
  },
109629
- /* @__PURE__ */ React77__default.default.createElement("style", null, `:root {
109660
+ className: cx19("ag-theme-alpine", {
109661
+ "ag-suppress-column-virtualization": suppressColumnVirtualisation
109662
+ }),
109663
+ ref: combinedRef,
109664
+ "data-qa": loadingStatus.loading ? "loading" : "loaded"
109665
+ },
109666
+ /* @__PURE__ */ React77__default.default.createElement("style", null, `:root {
109630
109667
  --viewport-width: ${viewportWidth}px;
109631
109668
  --rowActions-width: ${rowActionsWidth.current}px;
109632
109669
  }`),
109633
- /* @__PURE__ */ React77__default.default.createElement(
109634
- AgGridReact,
109635
- {
109636
- aggFuncs: aggregationFunctions_exports,
109637
- alwaysAggregateAtRootLevel: !onSSDR,
109638
- autoGroupColumnDef: decoratedAutoGroupColDef,
109639
- cacheBlockSize: props.paginationPageSize || defaultPaginationPageSize,
109640
- isGroupOpenByDefault: isClientSideGroupOpenByDefault,
109641
- isServerSideGroupOpenByDefault,
109642
- defaultColDef,
109643
- enableGroupEdit: internalTableContext.enableGroupEditAndValidation,
109644
- enableCellTextSelection: internalTableContext.enableCellTextSelection,
109645
- enableCellEditingOnBackspace: true,
109646
- excelStyles: transformToExcelStyles(props.excelDataTypeFormats),
109647
- components: frameworkComponents.base,
109648
- fullWidthCellRenderer: FullWidthCellRenderer(
109649
- props.fullWidthCellRenderer
109650
- ),
109651
- getRowHeight: getMainTableRowHeight,
109652
- getRowId: internalTableContext.getRowId,
109653
- getRowStyle,
109654
- groupAllowUnbalanced: true,
109655
- groupDefaultExpanded: props.groupsAlwaysExpanded ? -1 : props.groupDefaultExpanded,
109656
- groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
109657
- getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
109658
- groupSelectsChildren: internalTableContext.totalRowCount > 0 && props.groupSelectsChildren || !onSSDR,
109659
- groupSelectsFiltered: true,
109660
- headerHeight: props.headerHeight,
109661
- icons: tableIcons,
109662
- isFullWidthRow: (props2) => {
109663
- const node = props2.rowNode;
109664
- return isFullWidthRow(node);
109665
- },
109666
- initialGroupOrderComparator: props.initialGroupOrderComparator ? (params) => props.initialGroupOrderComparator(
109667
- serializeNode(params.nodeA),
109668
- serializeNode(params.nodeB)
109669
- ) : void 0,
109670
- isRowSelectable,
109671
- loadingOverlayComponent: "loadingOverlayRenderer",
109672
- loadingOverlayComponentParams: {
109673
- loading: true
109674
- },
109675
- maintainColumnOrder: props.maintainColumnOrder,
109676
- modules: [
109677
- ...props.modules,
109678
- MasterDetailModule,
109679
- MenuModule,
109680
- RowGroupingModule,
109681
- SetFilterModule,
109682
- CsvExportModule,
109683
- ExcelExportModule,
109684
- SparklinesModule
109685
- ],
109686
- noRowsOverlayComponent: "emptyStateRenderer",
109687
- noRowsOverlayComponentParams: {
109688
- emptyStateRenderer: props.emptyStateRenderer
109689
- },
109690
- onCellValueChanged: internalOnCellValueChanged,
109691
- onColumnGroupOpened,
109692
- onColumnMoved,
109693
- onColumnPinned,
109694
- onColumnResized,
109695
- onColumnRowGroupChanged,
109696
- onDisplayedColumnsChanged,
109697
- onDragStopped,
109698
- onGridReady,
109699
- onColumnEverythingChanged: props.onColumnEverythingChanged,
109700
- onModelUpdated,
109701
- onCellFocused: props.onCellFocused,
109702
- onRowDragEnd,
109703
- onRowDragMove,
109704
- onRowGroupOpened: internalRowGroupOpened,
109705
- onRowSelected: internalOnRowSelected,
109706
- onSortChanged: onSortEventChanged,
109707
- onFilterChanged,
109708
- onFirstDataRendered: props.onFirstDataRendered,
109709
- paginateChildRows: props.paginateChildRows,
109710
- pagination: props.pagination,
109711
- paginationPageSize: props.paginationPageSize || defaultPaginationPageSize,
109712
- popupParent: props.popupParent,
109713
- pinnedBottomRowData: props.pinnedBottomRowData,
109714
- rowBuffer: props.rowBuffer,
109715
- rowClassRules,
109716
- rowDragManaged: onSSDR ? false : props.rowDragManaged ?? true,
109717
- rowModelType: onSSDR ? "serverSide" : void 0,
109718
- rowSelection: "multiple",
109719
- ...serverSideInfiniteScroll,
109720
- suppressClickEdit: true,
109721
- suppressAggFuncInHeader: true,
109722
- suppressColumnMoveAnimation: true,
109723
- suppressColumnVirtualisation,
109724
- suppressContextMenu: true,
109725
- suppressFieldDotNotation: props.suppressFieldDotNotation,
109726
- suppressGroupRowsSticky: !props.stickyExpandedGroupRows,
109727
- suppressPropertyNamesCheck: true,
109728
- suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
109729
- suppressPaginationPanel: true,
109730
- tabToNextCell: props.tabToNextCell,
109731
- ...clientSideRowData,
109732
- ...detailRowConfigProps,
109733
- ...overrideProps
109734
- }
109735
- )
109670
+ /* @__PURE__ */ React77__default.default.createElement(
109671
+ AgGridReact,
109672
+ {
109673
+ aggFuncs: aggregationFunctions_exports,
109674
+ alwaysAggregateAtRootLevel: !onSSDR,
109675
+ autoGroupColumnDef: decoratedAutoGroupColDef,
109676
+ cacheBlockSize: props.paginationPageSize || defaultPaginationPageSize,
109677
+ isGroupOpenByDefault: isClientSideGroupOpenByDefault,
109678
+ isServerSideGroupOpenByDefault,
109679
+ defaultColDef,
109680
+ enableGroupEdit: internalTableContext.enableGroupEditAndValidation,
109681
+ enableCellTextSelection: internalTableContext.enableCellTextSelection,
109682
+ enableCellEditingOnBackspace: true,
109683
+ excelStyles: transformToExcelStyles(props.excelDataTypeFormats),
109684
+ components: frameworkComponents.base,
109685
+ fullWidthCellRenderer: FullWidthCellRenderer(
109686
+ props.fullWidthCellRenderer
109687
+ ),
109688
+ getRowHeight: getMainTableRowHeight,
109689
+ getRowId: internalTableContext.getRowId,
109690
+ getRowStyle,
109691
+ groupAllowUnbalanced: true,
109692
+ groupDefaultExpanded: props.groupsAlwaysExpanded ? -1 : props.groupDefaultExpanded,
109693
+ groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
109694
+ getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
109695
+ groupSelectsChildren: internalTableContext.totalRowCount > 0 && props.groupSelectsChildren || !onSSDR,
109696
+ groupSelectsFiltered: true,
109697
+ headerHeight: props.headerHeight,
109698
+ icons: tableIcons,
109699
+ isFullWidthRow: (props2) => {
109700
+ const node = props2.rowNode;
109701
+ return isFullWidthRow(node);
109702
+ },
109703
+ initialGroupOrderComparator: props.initialGroupOrderComparator ? (params) => props.initialGroupOrderComparator(
109704
+ serializeNode(params.nodeA),
109705
+ serializeNode(params.nodeB)
109706
+ ) : void 0,
109707
+ isRowSelectable,
109708
+ loadingOverlayComponent: "loadingOverlayRenderer",
109709
+ loadingOverlayComponentParams: {
109710
+ loading: true
109711
+ },
109712
+ maintainColumnOrder: props.maintainColumnOrder,
109713
+ modules: [
109714
+ ...props.modules,
109715
+ MasterDetailModule,
109716
+ MenuModule,
109717
+ RowGroupingModule,
109718
+ SetFilterModule,
109719
+ CsvExportModule,
109720
+ ExcelExportModule,
109721
+ SparklinesModule
109722
+ ],
109723
+ noRowsOverlayComponent: "emptyStateRenderer",
109724
+ noRowsOverlayComponentParams: {
109725
+ emptyStateRenderer: props.emptyStateRenderer
109726
+ },
109727
+ onCellValueChanged: internalOnCellValueChanged,
109728
+ onColumnGroupOpened,
109729
+ onColumnMoved,
109730
+ onColumnPinned,
109731
+ onColumnResized,
109732
+ onColumnRowGroupChanged,
109733
+ onDisplayedColumnsChanged,
109734
+ onDragStopped,
109735
+ onGridReady,
109736
+ onColumnEverythingChanged: props.onColumnEverythingChanged,
109737
+ onModelUpdated,
109738
+ onCellFocused: props.onCellFocused,
109739
+ onRowDragEnd,
109740
+ onRowDragMove,
109741
+ onRowGroupOpened: internalRowGroupOpened,
109742
+ onRowSelected: internalOnRowSelected,
109743
+ onSortChanged: onSortEventChanged,
109744
+ onFilterChanged,
109745
+ onFirstDataRendered: props.onFirstDataRendered,
109746
+ paginateChildRows: props.paginateChildRows,
109747
+ pagination: props.pagination,
109748
+ paginationPageSize: props.paginationPageSize || defaultPaginationPageSize,
109749
+ popupParent: props.popupParent,
109750
+ pinnedBottomRowData: props.pinnedBottomRowData,
109751
+ rowBuffer: props.rowBuffer,
109752
+ rowClassRules,
109753
+ rowDragManaged: onSSDR ? false : props.rowDragManaged ?? true,
109754
+ rowModelType: onSSDR ? "serverSide" : void 0,
109755
+ rowSelection: "multiple",
109756
+ ...serverSideInfiniteScroll,
109757
+ suppressClickEdit: true,
109758
+ suppressAggFuncInHeader: true,
109759
+ suppressColumnMoveAnimation: true,
109760
+ suppressColumnVirtualisation,
109761
+ suppressContextMenu: true,
109762
+ suppressFieldDotNotation: props.suppressFieldDotNotation,
109763
+ suppressGroupRowsSticky: !props.stickyExpandedGroupRows,
109764
+ suppressPropertyNamesCheck: true,
109765
+ suppressRowClickSelection: props.suppressRowClickSelection || tableRowSelectionEnabled,
109766
+ suppressPaginationPanel: true,
109767
+ tabToNextCell: props.tabToNextCell,
109768
+ ...clientSideRowData,
109769
+ ...detailRowConfigProps,
109770
+ ...overrideProps
109771
+ }
109736
109772
  )
109737
109773
  ),
109738
109774
  props.pagination && gridApi && /* @__PURE__ */ React77__default.default.createElement(
@@ -109876,7 +109912,7 @@ var FILTERS_GROUP_EXPANDABLE_AREA_VERTICAL_MARGIN = coreReact.spacing.md;
109876
109912
  var FILTERS_GROUP_ITEM_HEIGHT = 60;
109877
109913
  var ITEMS_IN_FILTERS_GROUP = 5;
109878
109914
  var FILTERS_GROUP_EXPANDABLE_AREA_HEIGHT = (FILTERS_GROUP_ITEM_HEIGHT + coreReact.spacing.xl) * ITEMS_IN_FILTERS_GROUP + BORDER_WIDTH;
109879
- var StyledPanelSection = styled3__default.default(coreReact.Panel.Section)`
109915
+ var StyledPanelSection = styled4__default.default(coreReact.Panel.Section)`
109880
109916
  // Filters Group container styles
109881
109917
  &.filters-list-group-section {
109882
109918
  padding-bottom: ${FILTERS_GROUP_VERTICAL_MARGIN}px;
@@ -110169,11 +110205,11 @@ var ConfigPanelButton = () => {
110169
110205
  var QuickFilterLabel = React77__default.default.forwardRef(({ enabled, ...props }, ref) => {
110170
110206
  return /* @__PURE__ */ React77__default.default.createElement(StyledQuickFilterLabel, { $enabled: enabled }, /* @__PURE__ */ React77__default.default.createElement(coreReact.SelectButton, { ref, ...props }));
110171
110207
  });
110172
- var StyledQuickFilterLabel = styled3__default.default.div`
110208
+ var StyledQuickFilterLabel = styled4__default.default.div`
110173
110209
  ${coreReact.StyledSelectButton} {
110174
110210
  width: auto;
110175
110211
  max-width: 380px;
110176
- ${({ $enabled }) => $enabled && styled3.css`
110212
+ ${({ $enabled }) => $enabled && styled4.css`
110177
110213
  background: ${coreReact.colors.blue96};
110178
110214
  border-color: ${coreReact.colors.blue96};
110179
110215
  font-weight: ${coreReact.typographyWeights.semibold};
@@ -110796,7 +110832,7 @@ var LocationQuickFilterRenderer = ({
110796
110832
  );
110797
110833
  };
110798
110834
  var LocationQuickFilterRenderer_default = LocationQuickFilterRenderer;
110799
- var StyledFilterPresetPopoverContent = styled3__default.default(coreReact.Popover.Content)`
110835
+ var StyledFilterPresetPopoverContent = styled4__default.default(coreReact.Popover.Content)`
110800
110836
  padding: ${coreReact.spacing.sm}px ${coreReact.spacing.lg}px;
110801
110837
  `;
110802
110838
  var getValueLabel = (isValueEmpty, value, placeholder, filterName) => {
@@ -110878,12 +110914,12 @@ var getSuperSelectFilterPreset = (columnDefinition) => {
110878
110914
  selectionStyle: "highlight"
110879
110915
  };
110880
110916
  };
110881
- var StyledSuperSelectWrapper = styled3__default.default.div`
110917
+ var StyledSuperSelectWrapper = styled4__default.default.div`
110882
110918
  ${coreReact.UNSAFE_StyledSuperSelectTrigger} {
110883
110919
  width: auto;
110884
110920
  }
110885
110921
 
110886
- ${({ $enabled }) => $enabled && styled3.css`
110922
+ ${({ $enabled }) => $enabled && styled4.css`
110887
110923
  ${coreReact.UNSAFE_StyledSuperSelectTrigger} {
110888
110924
  max-width: 360px;
110889
110925
  background: ${coreReact.colors.blue96};
@@ -111331,7 +111367,7 @@ var FilterIcon = () => {
111331
111367
  )
111332
111368
  );
111333
111369
  };
111334
- var StyledFilterTokenWrapper = styled3__default.default.div`
111370
+ var StyledFilterTokenWrapper = styled4__default.default.div`
111335
111371
  ${coreReact.UNSAFE_StyledFilterTokenLabel} {
111336
111372
  font-weight: ${coreReact.typographyWeights.semibold};
111337
111373
  }