@procore/data-table 14.5.1 → 14.6.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 +15 -2
- package/dist/legacy/index.d.mts +16 -3
- package/dist/legacy/index.d.ts +16 -3
- package/dist/legacy/index.js +79 -33
- package/dist/legacy/index.mjs +79 -33
- package/dist/modern/index.d.mts +16 -3
- package/dist/modern/index.d.ts +16 -3
- package/dist/modern/index.js +76 -32
- package/dist/modern/index.mjs +76 -32
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 14.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 2bbf160ec: Prevent filters from resetting to initial state on every columnDefinition changes.
|
|
8
|
+
- 1908a0e84: Expose `groupSelectsChildren` on `TableProps` and `getServerSideSelectionState` on `TableApi` in order to support group row selection on SSRM tables
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- ba88a21d9: Fixes type definitions.
|
|
13
|
+
- Updated dependencies [ba88a21d9]
|
|
14
|
+
- @procore/labs-group-by-select@3.1.2
|
|
15
|
+
|
|
3
16
|
## 14.5.1
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -656,9 +669,9 @@ TextCellColumnDefinition<
|
|
|
656
669
|
'customBottomRowRenderer', // pinned row renderer
|
|
657
670
|
string,
|
|
658
671
|
string
|
|
659
|
-
|
|
672
|
+
>
|
|
660
673
|
// v8
|
|
661
|
-
TextCellColumnDefinition<string, string, string
|
|
674
|
+
TextCellColumnDefinition<string, string, string>
|
|
662
675
|
```
|
|
663
676
|
|
|
664
677
|
### Server Side Row Model Breaking Changes
|
package/dist/legacy/index.d.mts
CHANGED
|
@@ -577,6 +577,10 @@ interface TableApi {
|
|
|
577
577
|
getFilteredAndSortedRowNodes: () => RowNode[];
|
|
578
578
|
getListFilter: (field: string) => Promise<any | undefined>;
|
|
579
579
|
getListFilters: (fields?: string[]) => Promise<ListFilter[]>;
|
|
580
|
+
/**
|
|
581
|
+
* Enables the ability to grab the complete selection state of an SSRM table when some of the selected rows have not yet been fetched.
|
|
582
|
+
*/
|
|
583
|
+
getServerSideSelectionState: () => ReturnType<GridApi['getServerSideSelectionState']> | undefined;
|
|
580
584
|
getTableConfiguration: () => DataTableConfig;
|
|
581
585
|
getBulkEditColumns: () => ColumnDefinition[];
|
|
582
586
|
hideContextPanel: ContextPanelApi['hide'];
|
|
@@ -641,7 +645,7 @@ interface TableApi {
|
|
|
641
645
|
*/
|
|
642
646
|
setIsRowSelectable?(isRowSelectableFunc: IsRowSelectable): void;
|
|
643
647
|
}
|
|
644
|
-
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
648
|
+
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getServerSideSelectionState' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
645
649
|
type AgDomLayout = 'normal' | 'autoHeight' | 'print' | undefined;
|
|
646
650
|
interface IsRowSelectable {
|
|
647
651
|
(node: RowNode): boolean;
|
|
@@ -932,6 +936,7 @@ interface TableProps<TRow = any, TBottomRow = any> {
|
|
|
932
936
|
getSubtotalLabel?: (columnDefinition: ColumnDefinition, rowData: TRow, value: string | number) => string;
|
|
933
937
|
groupDefaultExpanded?: number;
|
|
934
938
|
groupIncludeFooter?: boolean;
|
|
939
|
+
groupSelectsChildren?: boolean;
|
|
935
940
|
headerHeight?: number;
|
|
936
941
|
hideActionsOnGroupedRow?: boolean;
|
|
937
942
|
initialGroupOrderComparator?: (nodeA: RowNode, nodeB: RowNode) => number;
|
|
@@ -1340,7 +1345,11 @@ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDef
|
|
|
1340
1345
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1341
1346
|
}>;
|
|
1342
1347
|
RowGroupSelector: React__default.FC<{
|
|
1343
|
-
localeText:
|
|
1348
|
+
localeText: {
|
|
1349
|
+
reset: string;
|
|
1350
|
+
placeholder: string;
|
|
1351
|
+
selectedItemsPrefix?: string | undefined;
|
|
1352
|
+
};
|
|
1344
1353
|
}>;
|
|
1345
1354
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1346
1355
|
Table: React__default.FC<Omit<TableProps<any, any>, "selectionSSREnabled" | "modules">>;
|
|
@@ -1373,7 +1382,11 @@ declare const _default: (({ analytics, children, columnDefinitions: _columnDefin
|
|
|
1373
1382
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1374
1383
|
}>;
|
|
1375
1384
|
RowGroupSelector: React__default.FC<{
|
|
1376
|
-
localeText:
|
|
1385
|
+
localeText: {
|
|
1386
|
+
reset: string;
|
|
1387
|
+
placeholder: string;
|
|
1388
|
+
selectedItemsPrefix?: string | undefined;
|
|
1389
|
+
};
|
|
1377
1390
|
}>;
|
|
1378
1391
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1379
1392
|
Table: React__default.FC<Omit<TableProps<any, any>, "rows" | "modules">>;
|
package/dist/legacy/index.d.ts
CHANGED
|
@@ -577,6 +577,10 @@ interface TableApi {
|
|
|
577
577
|
getFilteredAndSortedRowNodes: () => RowNode[];
|
|
578
578
|
getListFilter: (field: string) => Promise<any | undefined>;
|
|
579
579
|
getListFilters: (fields?: string[]) => Promise<ListFilter[]>;
|
|
580
|
+
/**
|
|
581
|
+
* Enables the ability to grab the complete selection state of an SSRM table when some of the selected rows have not yet been fetched.
|
|
582
|
+
*/
|
|
583
|
+
getServerSideSelectionState: () => ReturnType<GridApi['getServerSideSelectionState']> | undefined;
|
|
580
584
|
getTableConfiguration: () => DataTableConfig;
|
|
581
585
|
getBulkEditColumns: () => ColumnDefinition[];
|
|
582
586
|
hideContextPanel: ContextPanelApi['hide'];
|
|
@@ -641,7 +645,7 @@ interface TableApi {
|
|
|
641
645
|
*/
|
|
642
646
|
setIsRowSelectable?(isRowSelectableFunc: IsRowSelectable): void;
|
|
643
647
|
}
|
|
644
|
-
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
648
|
+
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getServerSideSelectionState' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
645
649
|
type AgDomLayout = 'normal' | 'autoHeight' | 'print' | undefined;
|
|
646
650
|
interface IsRowSelectable {
|
|
647
651
|
(node: RowNode): boolean;
|
|
@@ -932,6 +936,7 @@ interface TableProps<TRow = any, TBottomRow = any> {
|
|
|
932
936
|
getSubtotalLabel?: (columnDefinition: ColumnDefinition, rowData: TRow, value: string | number) => string;
|
|
933
937
|
groupDefaultExpanded?: number;
|
|
934
938
|
groupIncludeFooter?: boolean;
|
|
939
|
+
groupSelectsChildren?: boolean;
|
|
935
940
|
headerHeight?: number;
|
|
936
941
|
hideActionsOnGroupedRow?: boolean;
|
|
937
942
|
initialGroupOrderComparator?: (nodeA: RowNode, nodeB: RowNode) => number;
|
|
@@ -1340,7 +1345,11 @@ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDef
|
|
|
1340
1345
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1341
1346
|
}>;
|
|
1342
1347
|
RowGroupSelector: React__default.FC<{
|
|
1343
|
-
localeText:
|
|
1348
|
+
localeText: {
|
|
1349
|
+
reset: string;
|
|
1350
|
+
placeholder: string;
|
|
1351
|
+
selectedItemsPrefix?: string | undefined;
|
|
1352
|
+
};
|
|
1344
1353
|
}>;
|
|
1345
1354
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1346
1355
|
Table: React__default.FC<Omit<TableProps<any, any>, "selectionSSREnabled" | "modules">>;
|
|
@@ -1373,7 +1382,11 @@ declare const _default: (({ analytics, children, columnDefinitions: _columnDefin
|
|
|
1373
1382
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1374
1383
|
}>;
|
|
1375
1384
|
RowGroupSelector: React__default.FC<{
|
|
1376
|
-
localeText:
|
|
1385
|
+
localeText: {
|
|
1386
|
+
reset: string;
|
|
1387
|
+
placeholder: string;
|
|
1388
|
+
selectedItemsPrefix?: string | undefined;
|
|
1389
|
+
};
|
|
1377
1390
|
}>;
|
|
1378
1391
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1379
1392
|
Table: React__default.FC<Omit<TableProps<any, any>, "rows" | "modules">>;
|
package/dist/legacy/index.js
CHANGED
|
@@ -56133,6 +56133,14 @@ function findNode(predicate, gridApi) {
|
|
|
56133
56133
|
return searchTarget;
|
|
56134
56134
|
}
|
|
56135
56135
|
|
|
56136
|
+
// src/utils/isServerSideGroupSelectionState.ts
|
|
56137
|
+
function isServerSideGroupSelectionState(value) {
|
|
56138
|
+
if (value === null) {
|
|
56139
|
+
return false;
|
|
56140
|
+
}
|
|
56141
|
+
return value.selectAll === void 0;
|
|
56142
|
+
}
|
|
56143
|
+
|
|
56136
56144
|
// src/GenericHeader/genericHeader.scss
|
|
56137
56145
|
var css7 = `.ag-header-cell .data-table-header-menu {
|
|
56138
56146
|
opacity: 1;
|
|
@@ -56546,13 +56554,22 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56546
56554
|
return;
|
|
56547
56555
|
}
|
|
56548
56556
|
function updateSelectAllCheckbox(e) {
|
|
56557
|
+
var _a2;
|
|
56549
56558
|
if (e.source === "uiSelectAll") {
|
|
56550
56559
|
return;
|
|
56551
56560
|
}
|
|
56561
|
+
const selectionState = props.api.getServerSideSelectionState();
|
|
56562
|
+
const isGroupSelection = isServerSideGroupSelectionState(selectionState);
|
|
56563
|
+
const isSelectionStatePartialSelected = Boolean(
|
|
56564
|
+
(_a2 = selectionState == null ? void 0 : selectionState.toggledNodes) == null ? void 0 : _a2.length
|
|
56565
|
+
);
|
|
56566
|
+
const isSelectionStateSelectAll = !isSelectionStatePartialSelected && Boolean(
|
|
56567
|
+
isGroupSelection ? selectionState.selectAllChildren : selectionState == null ? void 0 : selectionState.selectAll
|
|
56568
|
+
);
|
|
56552
56569
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56553
56570
|
const currentRows = getCurrentRows(props.api, isPagination);
|
|
56554
|
-
const isAllSelected = currentRows.length && currentRows.every(isRowSelected);
|
|
56555
|
-
const isPartialSelected = !isAllSelected && currentRows.some(isRowSelected);
|
|
56571
|
+
const isAllSelected = isPagination ? currentRows.length && currentRows.every(isRowSelected) : isSelectionStateSelectAll;
|
|
56572
|
+
const isPartialSelected = isPagination ? !isAllSelected && currentRows.some(isRowSelected) : isSelectionStatePartialSelected;
|
|
56556
56573
|
if (isAllSelected) {
|
|
56557
56574
|
setSelectAll("all" /* All */);
|
|
56558
56575
|
} else if (isPartialSelected) {
|
|
@@ -56577,24 +56594,28 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56577
56594
|
};
|
|
56578
56595
|
}, [isFirstColumn2, props.selectionSSREnabled, props.api, onSSDR]);
|
|
56579
56596
|
const toggleSelectAll = React83__default.default.useCallback(() => {
|
|
56580
|
-
var _a2, _b, _c;
|
|
56597
|
+
var _a2, _b, _c, _d, _e;
|
|
56581
56598
|
const nextSelectedState = selectAll === "all" /* All */ ? "none" /* None */ : "all" /* All */;
|
|
56582
56599
|
setSelectAll(nextSelectedState);
|
|
56583
56600
|
(_a2 = props.onSelectAll) == null ? void 0 : _a2.call(props, nextSelectedState);
|
|
56584
56601
|
const isSelectAll = nextSelectedState == "all" /* All */;
|
|
56585
56602
|
if (props.selectionSSREnabled) {
|
|
56586
56603
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56587
|
-
|
|
56588
|
-
|
|
56589
|
-
|
|
56590
|
-
|
|
56591
|
-
|
|
56592
|
-
|
|
56593
|
-
|
|
56594
|
-
|
|
56595
|
-
|
|
56596
|
-
|
|
56597
|
-
|
|
56604
|
+
if (isPagination) {
|
|
56605
|
+
const rowsIdsToSelectOrDeselect = getCurrentRows(
|
|
56606
|
+
props.api,
|
|
56607
|
+
isPagination
|
|
56608
|
+
).map((node) => node.id);
|
|
56609
|
+
isSelectAll ? (_b = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _b.selectRows(
|
|
56610
|
+
rowsIdsToSelectOrDeselect,
|
|
56611
|
+
"uiSelectAll"
|
|
56612
|
+
) : (_c = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _c.deselectRows(
|
|
56613
|
+
rowsIdsToSelectOrDeselect,
|
|
56614
|
+
"uiSelectAll"
|
|
56615
|
+
);
|
|
56616
|
+
} else {
|
|
56617
|
+
isSelectAll ? (_d = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _d.selectAll() : (_e = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _e.deselectAll();
|
|
56618
|
+
}
|
|
56598
56619
|
} else {
|
|
56599
56620
|
isSelectAll ? props.api.selectAllFiltered() : props.api.deselectAllFiltered();
|
|
56600
56621
|
}
|
|
@@ -56975,7 +56996,7 @@ function shapeActiveFilters(filters = emptyArray2) {
|
|
|
56975
56996
|
field
|
|
56976
56997
|
};
|
|
56977
56998
|
});
|
|
56978
|
-
return
|
|
56999
|
+
return state;
|
|
56979
57000
|
}
|
|
56980
57001
|
function useFilterStorage({
|
|
56981
57002
|
columnDefinitions,
|
|
@@ -56986,7 +57007,7 @@ function useFilterStorage({
|
|
|
56986
57007
|
filterable: emptyObj,
|
|
56987
57008
|
filterOptions: emptyObj,
|
|
56988
57009
|
possibleFilters: emptyArray2,
|
|
56989
|
-
selectedFilters:
|
|
57010
|
+
selectedFilters: shapeActiveFilters(initialSelectedFilters)
|
|
56990
57011
|
});
|
|
56991
57012
|
function getOptions(field) {
|
|
56992
57013
|
return filtersState.filterOptions[field];
|
|
@@ -57009,16 +57030,25 @@ function useFilterStorage({
|
|
|
57009
57030
|
const filterableColumns = columnDefinitions.filter(
|
|
57010
57031
|
(col) => col.filterRenderer
|
|
57011
57032
|
);
|
|
57012
|
-
const
|
|
57033
|
+
const filterableMap = filterableColumns.reduce((acc, curr) => {
|
|
57034
|
+
return {
|
|
57035
|
+
...acc,
|
|
57036
|
+
[curr.field]: curr
|
|
57037
|
+
};
|
|
57038
|
+
}, {});
|
|
57039
|
+
const selectedFiltersState = Object.entries(
|
|
57040
|
+
filtersState.selectedFilters ?? {}
|
|
57041
|
+
).filter(([field]) => Object.keys(filterableMap).includes(field)).reduce(
|
|
57042
|
+
(acc, [field, filterState]) => ({
|
|
57043
|
+
...acc,
|
|
57044
|
+
[field]: filterState
|
|
57045
|
+
}),
|
|
57046
|
+
{}
|
|
57047
|
+
);
|
|
57013
57048
|
setFiltersState((prev) => ({
|
|
57014
57049
|
...prev,
|
|
57015
|
-
filterable:
|
|
57016
|
-
|
|
57017
|
-
...acc,
|
|
57018
|
-
[curr.field]: curr
|
|
57019
|
-
};
|
|
57020
|
-
}, {}),
|
|
57021
|
-
selectedFilters: state,
|
|
57050
|
+
filterable: filterableMap,
|
|
57051
|
+
selectedFilters: selectedFiltersState,
|
|
57022
57052
|
possibleFilters: filterableColumns.sort(sortColumnDefinitionsByFilterIndex).map(getFieldAttr)
|
|
57023
57053
|
}));
|
|
57024
57054
|
}, [columnDefinitions]);
|
|
@@ -57032,7 +57062,7 @@ function useFilterStorage({
|
|
|
57032
57062
|
(selectedFilters) => {
|
|
57033
57063
|
setFiltersState((prev) => ({
|
|
57034
57064
|
...prev,
|
|
57035
|
-
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
57065
|
+
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
57036
57066
|
}));
|
|
57037
57067
|
},
|
|
57038
57068
|
[]
|
|
@@ -81233,6 +81263,15 @@ var useTableApi = ({
|
|
|
81233
81263
|
}),
|
|
81234
81264
|
[columnApi, gridApi, rowHeight, filterStorage]
|
|
81235
81265
|
);
|
|
81266
|
+
function deselectParentsWithoutChildrenOrSelectAll(state, gridApi2) {
|
|
81267
|
+
var _a, _b, _c;
|
|
81268
|
+
if (state.selectAllChildren === false && !((_a = state.toggledNodes) == null ? void 0 : _a.length)) {
|
|
81269
|
+
(_b = gridApi2.getRowNode(state.nodeId || "")) == null ? void 0 : _b.setSelected(false);
|
|
81270
|
+
}
|
|
81271
|
+
(_c = state.toggledNodes) == null ? void 0 : _c.forEach(
|
|
81272
|
+
(node) => deselectParentsWithoutChildrenOrSelectAll(node, gridApi2)
|
|
81273
|
+
);
|
|
81274
|
+
}
|
|
81236
81275
|
const onSelectionChanged = (rowNode) => {
|
|
81237
81276
|
var _a;
|
|
81238
81277
|
const isGrouped = rowNode.group || ((_a = rowNode.parent) == null ? void 0 : _a.group) && !isNodeRootLevelOfGrid(rowNode.parent);
|
|
@@ -81254,13 +81293,18 @@ var useTableApi = ({
|
|
|
81254
81293
|
currAffectedRows
|
|
81255
81294
|
);
|
|
81256
81295
|
const rowValues = Object.values(rowsToUpdate);
|
|
81257
|
-
|
|
81258
|
-
|
|
81259
|
-
|
|
81260
|
-
|
|
81261
|
-
|
|
81262
|
-
|
|
81263
|
-
|
|
81296
|
+
const selectionState = gridApi == null ? void 0 : gridApi.getServerSideSelectionState();
|
|
81297
|
+
if (selectionState && isServerSideGroupSelectionState(selectionState) && gridApi) {
|
|
81298
|
+
deselectParentsWithoutChildrenOrSelectAll(selectionState, gridApi);
|
|
81299
|
+
} else {
|
|
81300
|
+
rowValues.forEach((row2) => {
|
|
81301
|
+
row2.node.setSelected(
|
|
81302
|
+
row2.selectedState === rowSelectionState.selected,
|
|
81303
|
+
false,
|
|
81304
|
+
"checkboxSelected"
|
|
81305
|
+
);
|
|
81306
|
+
});
|
|
81307
|
+
}
|
|
81264
81308
|
rowSelectionRef.current.affectedRows = {
|
|
81265
81309
|
...currAffectedRows,
|
|
81266
81310
|
...rowsToUpdate
|
|
@@ -81384,6 +81428,7 @@ function buildPartialTableApi({
|
|
|
81384
81428
|
rowSelectionRef
|
|
81385
81429
|
}) : void 0;
|
|
81386
81430
|
};
|
|
81431
|
+
const getServerSideSelectionState = () => gridApi == null ? void 0 : gridApi.getServerSideSelectionState();
|
|
81387
81432
|
const getTableConfiguration = () => {
|
|
81388
81433
|
var _a;
|
|
81389
81434
|
const columnState = (columnApi == null ? void 0 : columnApi.getColumnState().filter(
|
|
@@ -81499,6 +81544,7 @@ function buildPartialTableApi({
|
|
|
81499
81544
|
getRootAggregateData,
|
|
81500
81545
|
getRowData,
|
|
81501
81546
|
getSelectedRows: getSelectedRows2,
|
|
81547
|
+
getServerSideSelectionState,
|
|
81502
81548
|
getTableConfiguration,
|
|
81503
81549
|
refreshCells,
|
|
81504
81550
|
setPinnedBottomRowData,
|
|
@@ -82587,7 +82633,7 @@ var Table = (props) => {
|
|
|
82587
82633
|
groupDefaultExpanded: props.groupDefaultExpanded,
|
|
82588
82634
|
groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
|
|
82589
82635
|
getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
|
|
82590
|
-
groupSelectsChildren: !onSSDR,
|
|
82636
|
+
groupSelectsChildren: props.groupSelectsChildren || !onSSDR,
|
|
82591
82637
|
groupSelectsFiltered: true,
|
|
82592
82638
|
headerHeight: props.headerHeight,
|
|
82593
82639
|
icons: tableIcons,
|
package/dist/legacy/index.mjs
CHANGED
|
@@ -56119,6 +56119,14 @@ function findNode(predicate, gridApi) {
|
|
|
56119
56119
|
return searchTarget;
|
|
56120
56120
|
}
|
|
56121
56121
|
|
|
56122
|
+
// src/utils/isServerSideGroupSelectionState.ts
|
|
56123
|
+
function isServerSideGroupSelectionState(value) {
|
|
56124
|
+
if (value === null) {
|
|
56125
|
+
return false;
|
|
56126
|
+
}
|
|
56127
|
+
return value.selectAll === void 0;
|
|
56128
|
+
}
|
|
56129
|
+
|
|
56122
56130
|
// src/GenericHeader/genericHeader.scss
|
|
56123
56131
|
var css7 = `.ag-header-cell .data-table-header-menu {
|
|
56124
56132
|
opacity: 1;
|
|
@@ -56532,13 +56540,22 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56532
56540
|
return;
|
|
56533
56541
|
}
|
|
56534
56542
|
function updateSelectAllCheckbox(e) {
|
|
56543
|
+
var _a2;
|
|
56535
56544
|
if (e.source === "uiSelectAll") {
|
|
56536
56545
|
return;
|
|
56537
56546
|
}
|
|
56547
|
+
const selectionState = props.api.getServerSideSelectionState();
|
|
56548
|
+
const isGroupSelection = isServerSideGroupSelectionState(selectionState);
|
|
56549
|
+
const isSelectionStatePartialSelected = Boolean(
|
|
56550
|
+
(_a2 = selectionState == null ? void 0 : selectionState.toggledNodes) == null ? void 0 : _a2.length
|
|
56551
|
+
);
|
|
56552
|
+
const isSelectionStateSelectAll = !isSelectionStatePartialSelected && Boolean(
|
|
56553
|
+
isGroupSelection ? selectionState.selectAllChildren : selectionState == null ? void 0 : selectionState.selectAll
|
|
56554
|
+
);
|
|
56538
56555
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56539
56556
|
const currentRows = getCurrentRows(props.api, isPagination);
|
|
56540
|
-
const isAllSelected = currentRows.length && currentRows.every(isRowSelected);
|
|
56541
|
-
const isPartialSelected = !isAllSelected && currentRows.some(isRowSelected);
|
|
56557
|
+
const isAllSelected = isPagination ? currentRows.length && currentRows.every(isRowSelected) : isSelectionStateSelectAll;
|
|
56558
|
+
const isPartialSelected = isPagination ? !isAllSelected && currentRows.some(isRowSelected) : isSelectionStatePartialSelected;
|
|
56542
56559
|
if (isAllSelected) {
|
|
56543
56560
|
setSelectAll("all" /* All */);
|
|
56544
56561
|
} else if (isPartialSelected) {
|
|
@@ -56563,24 +56580,28 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56563
56580
|
};
|
|
56564
56581
|
}, [isFirstColumn2, props.selectionSSREnabled, props.api, onSSDR]);
|
|
56565
56582
|
const toggleSelectAll = React83.useCallback(() => {
|
|
56566
|
-
var _a2, _b, _c;
|
|
56583
|
+
var _a2, _b, _c, _d, _e;
|
|
56567
56584
|
const nextSelectedState = selectAll === "all" /* All */ ? "none" /* None */ : "all" /* All */;
|
|
56568
56585
|
setSelectAll(nextSelectedState);
|
|
56569
56586
|
(_a2 = props.onSelectAll) == null ? void 0 : _a2.call(props, nextSelectedState);
|
|
56570
56587
|
const isSelectAll = nextSelectedState == "all" /* All */;
|
|
56571
56588
|
if (props.selectionSSREnabled) {
|
|
56572
56589
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56573
|
-
|
|
56574
|
-
|
|
56575
|
-
|
|
56576
|
-
|
|
56577
|
-
|
|
56578
|
-
|
|
56579
|
-
|
|
56580
|
-
|
|
56581
|
-
|
|
56582
|
-
|
|
56583
|
-
|
|
56590
|
+
if (isPagination) {
|
|
56591
|
+
const rowsIdsToSelectOrDeselect = getCurrentRows(
|
|
56592
|
+
props.api,
|
|
56593
|
+
isPagination
|
|
56594
|
+
).map((node) => node.id);
|
|
56595
|
+
isSelectAll ? (_b = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _b.selectRows(
|
|
56596
|
+
rowsIdsToSelectOrDeselect,
|
|
56597
|
+
"uiSelectAll"
|
|
56598
|
+
) : (_c = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _c.deselectRows(
|
|
56599
|
+
rowsIdsToSelectOrDeselect,
|
|
56600
|
+
"uiSelectAll"
|
|
56601
|
+
);
|
|
56602
|
+
} else {
|
|
56603
|
+
isSelectAll ? (_d = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _d.selectAll() : (_e = tableRef == null ? void 0 : tableRef.current) == null ? void 0 : _e.deselectAll();
|
|
56604
|
+
}
|
|
56584
56605
|
} else {
|
|
56585
56606
|
isSelectAll ? props.api.selectAllFiltered() : props.api.deselectAllFiltered();
|
|
56586
56607
|
}
|
|
@@ -56961,7 +56982,7 @@ function shapeActiveFilters(filters = emptyArray2) {
|
|
|
56961
56982
|
field
|
|
56962
56983
|
};
|
|
56963
56984
|
});
|
|
56964
|
-
return
|
|
56985
|
+
return state;
|
|
56965
56986
|
}
|
|
56966
56987
|
function useFilterStorage({
|
|
56967
56988
|
columnDefinitions,
|
|
@@ -56972,7 +56993,7 @@ function useFilterStorage({
|
|
|
56972
56993
|
filterable: emptyObj,
|
|
56973
56994
|
filterOptions: emptyObj,
|
|
56974
56995
|
possibleFilters: emptyArray2,
|
|
56975
|
-
selectedFilters:
|
|
56996
|
+
selectedFilters: shapeActiveFilters(initialSelectedFilters)
|
|
56976
56997
|
});
|
|
56977
56998
|
function getOptions(field) {
|
|
56978
56999
|
return filtersState.filterOptions[field];
|
|
@@ -56995,16 +57016,25 @@ function useFilterStorage({
|
|
|
56995
57016
|
const filterableColumns = columnDefinitions.filter(
|
|
56996
57017
|
(col) => col.filterRenderer
|
|
56997
57018
|
);
|
|
56998
|
-
const
|
|
57019
|
+
const filterableMap = filterableColumns.reduce((acc, curr) => {
|
|
57020
|
+
return {
|
|
57021
|
+
...acc,
|
|
57022
|
+
[curr.field]: curr
|
|
57023
|
+
};
|
|
57024
|
+
}, {});
|
|
57025
|
+
const selectedFiltersState = Object.entries(
|
|
57026
|
+
filtersState.selectedFilters ?? {}
|
|
57027
|
+
).filter(([field]) => Object.keys(filterableMap).includes(field)).reduce(
|
|
57028
|
+
(acc, [field, filterState]) => ({
|
|
57029
|
+
...acc,
|
|
57030
|
+
[field]: filterState
|
|
57031
|
+
}),
|
|
57032
|
+
{}
|
|
57033
|
+
);
|
|
56999
57034
|
setFiltersState((prev) => ({
|
|
57000
57035
|
...prev,
|
|
57001
|
-
filterable:
|
|
57002
|
-
|
|
57003
|
-
...acc,
|
|
57004
|
-
[curr.field]: curr
|
|
57005
|
-
};
|
|
57006
|
-
}, {}),
|
|
57007
|
-
selectedFilters: state,
|
|
57036
|
+
filterable: filterableMap,
|
|
57037
|
+
selectedFilters: selectedFiltersState,
|
|
57008
57038
|
possibleFilters: filterableColumns.sort(sortColumnDefinitionsByFilterIndex).map(getFieldAttr)
|
|
57009
57039
|
}));
|
|
57010
57040
|
}, [columnDefinitions]);
|
|
@@ -57018,7 +57048,7 @@ function useFilterStorage({
|
|
|
57018
57048
|
(selectedFilters) => {
|
|
57019
57049
|
setFiltersState((prev) => ({
|
|
57020
57050
|
...prev,
|
|
57021
|
-
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
57051
|
+
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
57022
57052
|
}));
|
|
57023
57053
|
},
|
|
57024
57054
|
[]
|
|
@@ -81219,6 +81249,15 @@ var useTableApi = ({
|
|
|
81219
81249
|
}),
|
|
81220
81250
|
[columnApi, gridApi, rowHeight, filterStorage]
|
|
81221
81251
|
);
|
|
81252
|
+
function deselectParentsWithoutChildrenOrSelectAll(state, gridApi2) {
|
|
81253
|
+
var _a, _b, _c;
|
|
81254
|
+
if (state.selectAllChildren === false && !((_a = state.toggledNodes) == null ? void 0 : _a.length)) {
|
|
81255
|
+
(_b = gridApi2.getRowNode(state.nodeId || "")) == null ? void 0 : _b.setSelected(false);
|
|
81256
|
+
}
|
|
81257
|
+
(_c = state.toggledNodes) == null ? void 0 : _c.forEach(
|
|
81258
|
+
(node) => deselectParentsWithoutChildrenOrSelectAll(node, gridApi2)
|
|
81259
|
+
);
|
|
81260
|
+
}
|
|
81222
81261
|
const onSelectionChanged = (rowNode) => {
|
|
81223
81262
|
var _a;
|
|
81224
81263
|
const isGrouped = rowNode.group || ((_a = rowNode.parent) == null ? void 0 : _a.group) && !isNodeRootLevelOfGrid(rowNode.parent);
|
|
@@ -81240,13 +81279,18 @@ var useTableApi = ({
|
|
|
81240
81279
|
currAffectedRows
|
|
81241
81280
|
);
|
|
81242
81281
|
const rowValues = Object.values(rowsToUpdate);
|
|
81243
|
-
|
|
81244
|
-
|
|
81245
|
-
|
|
81246
|
-
|
|
81247
|
-
|
|
81248
|
-
|
|
81249
|
-
|
|
81282
|
+
const selectionState = gridApi == null ? void 0 : gridApi.getServerSideSelectionState();
|
|
81283
|
+
if (selectionState && isServerSideGroupSelectionState(selectionState) && gridApi) {
|
|
81284
|
+
deselectParentsWithoutChildrenOrSelectAll(selectionState, gridApi);
|
|
81285
|
+
} else {
|
|
81286
|
+
rowValues.forEach((row2) => {
|
|
81287
|
+
row2.node.setSelected(
|
|
81288
|
+
row2.selectedState === rowSelectionState.selected,
|
|
81289
|
+
false,
|
|
81290
|
+
"checkboxSelected"
|
|
81291
|
+
);
|
|
81292
|
+
});
|
|
81293
|
+
}
|
|
81250
81294
|
rowSelectionRef.current.affectedRows = {
|
|
81251
81295
|
...currAffectedRows,
|
|
81252
81296
|
...rowsToUpdate
|
|
@@ -81370,6 +81414,7 @@ function buildPartialTableApi({
|
|
|
81370
81414
|
rowSelectionRef
|
|
81371
81415
|
}) : void 0;
|
|
81372
81416
|
};
|
|
81417
|
+
const getServerSideSelectionState = () => gridApi == null ? void 0 : gridApi.getServerSideSelectionState();
|
|
81373
81418
|
const getTableConfiguration = () => {
|
|
81374
81419
|
var _a;
|
|
81375
81420
|
const columnState = (columnApi == null ? void 0 : columnApi.getColumnState().filter(
|
|
@@ -81485,6 +81530,7 @@ function buildPartialTableApi({
|
|
|
81485
81530
|
getRootAggregateData,
|
|
81486
81531
|
getRowData,
|
|
81487
81532
|
getSelectedRows: getSelectedRows2,
|
|
81533
|
+
getServerSideSelectionState,
|
|
81488
81534
|
getTableConfiguration,
|
|
81489
81535
|
refreshCells,
|
|
81490
81536
|
setPinnedBottomRowData,
|
|
@@ -82573,7 +82619,7 @@ var Table = (props) => {
|
|
|
82573
82619
|
groupDefaultExpanded: props.groupDefaultExpanded,
|
|
82574
82620
|
groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
|
|
82575
82621
|
getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
|
|
82576
|
-
groupSelectsChildren: !onSSDR,
|
|
82622
|
+
groupSelectsChildren: props.groupSelectsChildren || !onSSDR,
|
|
82577
82623
|
groupSelectsFiltered: true,
|
|
82578
82624
|
headerHeight: props.headerHeight,
|
|
82579
82625
|
icons: tableIcons,
|
package/dist/modern/index.d.mts
CHANGED
|
@@ -577,6 +577,10 @@ interface TableApi {
|
|
|
577
577
|
getFilteredAndSortedRowNodes: () => RowNode[];
|
|
578
578
|
getListFilter: (field: string) => Promise<any | undefined>;
|
|
579
579
|
getListFilters: (fields?: string[]) => Promise<ListFilter[]>;
|
|
580
|
+
/**
|
|
581
|
+
* Enables the ability to grab the complete selection state of an SSRM table when some of the selected rows have not yet been fetched.
|
|
582
|
+
*/
|
|
583
|
+
getServerSideSelectionState: () => ReturnType<GridApi['getServerSideSelectionState']> | undefined;
|
|
580
584
|
getTableConfiguration: () => DataTableConfig;
|
|
581
585
|
getBulkEditColumns: () => ColumnDefinition[];
|
|
582
586
|
hideContextPanel: ContextPanelApi['hide'];
|
|
@@ -641,7 +645,7 @@ interface TableApi {
|
|
|
641
645
|
*/
|
|
642
646
|
setIsRowSelectable?(isRowSelectableFunc: IsRowSelectable): void;
|
|
643
647
|
}
|
|
644
|
-
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
648
|
+
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getServerSideSelectionState' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
645
649
|
type AgDomLayout = 'normal' | 'autoHeight' | 'print' | undefined;
|
|
646
650
|
interface IsRowSelectable {
|
|
647
651
|
(node: RowNode): boolean;
|
|
@@ -932,6 +936,7 @@ interface TableProps<TRow = any, TBottomRow = any> {
|
|
|
932
936
|
getSubtotalLabel?: (columnDefinition: ColumnDefinition, rowData: TRow, value: string | number) => string;
|
|
933
937
|
groupDefaultExpanded?: number;
|
|
934
938
|
groupIncludeFooter?: boolean;
|
|
939
|
+
groupSelectsChildren?: boolean;
|
|
935
940
|
headerHeight?: number;
|
|
936
941
|
hideActionsOnGroupedRow?: boolean;
|
|
937
942
|
initialGroupOrderComparator?: (nodeA: RowNode, nodeB: RowNode) => number;
|
|
@@ -1340,7 +1345,11 @@ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDef
|
|
|
1340
1345
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1341
1346
|
}>;
|
|
1342
1347
|
RowGroupSelector: React__default.FC<{
|
|
1343
|
-
localeText:
|
|
1348
|
+
localeText: {
|
|
1349
|
+
reset: string;
|
|
1350
|
+
placeholder: string;
|
|
1351
|
+
selectedItemsPrefix?: string | undefined;
|
|
1352
|
+
};
|
|
1344
1353
|
}>;
|
|
1345
1354
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1346
1355
|
Table: React__default.FC<Omit<TableProps<any, any>, "selectionSSREnabled" | "modules">>;
|
|
@@ -1373,7 +1382,11 @@ declare const _default: (({ analytics, children, columnDefinitions: _columnDefin
|
|
|
1373
1382
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1374
1383
|
}>;
|
|
1375
1384
|
RowGroupSelector: React__default.FC<{
|
|
1376
|
-
localeText:
|
|
1385
|
+
localeText: {
|
|
1386
|
+
reset: string;
|
|
1387
|
+
placeholder: string;
|
|
1388
|
+
selectedItemsPrefix?: string | undefined;
|
|
1389
|
+
};
|
|
1377
1390
|
}>;
|
|
1378
1391
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1379
1392
|
Table: React__default.FC<Omit<TableProps<any, any>, "rows" | "modules">>;
|
package/dist/modern/index.d.ts
CHANGED
|
@@ -577,6 +577,10 @@ interface TableApi {
|
|
|
577
577
|
getFilteredAndSortedRowNodes: () => RowNode[];
|
|
578
578
|
getListFilter: (field: string) => Promise<any | undefined>;
|
|
579
579
|
getListFilters: (fields?: string[]) => Promise<ListFilter[]>;
|
|
580
|
+
/**
|
|
581
|
+
* Enables the ability to grab the complete selection state of an SSRM table when some of the selected rows have not yet been fetched.
|
|
582
|
+
*/
|
|
583
|
+
getServerSideSelectionState: () => ReturnType<GridApi['getServerSideSelectionState']> | undefined;
|
|
580
584
|
getTableConfiguration: () => DataTableConfig;
|
|
581
585
|
getBulkEditColumns: () => ColumnDefinition[];
|
|
582
586
|
hideContextPanel: ContextPanelApi['hide'];
|
|
@@ -641,7 +645,7 @@ interface TableApi {
|
|
|
641
645
|
*/
|
|
642
646
|
setIsRowSelectable?(isRowSelectableFunc: IsRowSelectable): void;
|
|
643
647
|
}
|
|
644
|
-
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
648
|
+
type PartialTableApi = Pick<TableApi, 'applyTransaction' | 'applyServerSideTransaction' | 'collapseAll' | 'deselectAll' | 'expandAll' | 'getColumnDefinitions' | 'getDetailGridTableApi' | 'getFilteredAndSortedRowNodes' | 'getRootAggregateData' | 'getRowData' | 'getSelectedRows' | 'getServerSideSelectionState' | 'getTableConfiguration' | 'refreshCells' | 'scrollToRow' | 'selectAll' | 'setPinnedBottomRowData' | 'setRowData' | 'setRowNodeExpanded' | 'sizeColumnsToFit'>;
|
|
645
649
|
type AgDomLayout = 'normal' | 'autoHeight' | 'print' | undefined;
|
|
646
650
|
interface IsRowSelectable {
|
|
647
651
|
(node: RowNode): boolean;
|
|
@@ -932,6 +936,7 @@ interface TableProps<TRow = any, TBottomRow = any> {
|
|
|
932
936
|
getSubtotalLabel?: (columnDefinition: ColumnDefinition, rowData: TRow, value: string | number) => string;
|
|
933
937
|
groupDefaultExpanded?: number;
|
|
934
938
|
groupIncludeFooter?: boolean;
|
|
939
|
+
groupSelectsChildren?: boolean;
|
|
935
940
|
headerHeight?: number;
|
|
936
941
|
hideActionsOnGroupedRow?: boolean;
|
|
937
942
|
initialGroupOrderComparator?: (nodeA: RowNode, nodeB: RowNode) => number;
|
|
@@ -1340,7 +1345,11 @@ declare const _default$1: (({ analytics, children, columnDefinitions: _columnDef
|
|
|
1340
1345
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1341
1346
|
}>;
|
|
1342
1347
|
RowGroupSelector: React__default.FC<{
|
|
1343
|
-
localeText:
|
|
1348
|
+
localeText: {
|
|
1349
|
+
reset: string;
|
|
1350
|
+
placeholder: string;
|
|
1351
|
+
selectedItemsPrefix?: string | undefined;
|
|
1352
|
+
};
|
|
1344
1353
|
}>;
|
|
1345
1354
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1346
1355
|
Table: React__default.FC<Omit<TableProps<any, any>, "selectionSSREnabled" | "modules">>;
|
|
@@ -1373,7 +1382,11 @@ declare const _default: (({ analytics, children, columnDefinitions: _columnDefin
|
|
|
1373
1382
|
overlayMatchesTriggerWidth?: boolean | undefined;
|
|
1374
1383
|
}>;
|
|
1375
1384
|
RowGroupSelector: React__default.FC<{
|
|
1376
|
-
localeText:
|
|
1385
|
+
localeText: {
|
|
1386
|
+
reset: string;
|
|
1387
|
+
placeholder: string;
|
|
1388
|
+
selectedItemsPrefix?: string | undefined;
|
|
1389
|
+
};
|
|
1377
1390
|
}>;
|
|
1378
1391
|
Search: React__default.FunctionComponent<SearchProps>;
|
|
1379
1392
|
Table: React__default.FC<Omit<TableProps<any, any>, "rows" | "modules">>;
|
package/dist/modern/index.js
CHANGED
|
@@ -56046,6 +56046,14 @@ function findNode(predicate, gridApi) {
|
|
|
56046
56046
|
return searchTarget;
|
|
56047
56047
|
}
|
|
56048
56048
|
|
|
56049
|
+
// src/utils/isServerSideGroupSelectionState.ts
|
|
56050
|
+
function isServerSideGroupSelectionState(value) {
|
|
56051
|
+
if (value === null) {
|
|
56052
|
+
return false;
|
|
56053
|
+
}
|
|
56054
|
+
return value.selectAll === void 0;
|
|
56055
|
+
}
|
|
56056
|
+
|
|
56049
56057
|
// src/GenericHeader/genericHeader.scss
|
|
56050
56058
|
var css7 = `.ag-header-cell .data-table-header-menu {
|
|
56051
56059
|
opacity: 1;
|
|
@@ -56455,10 +56463,18 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56455
56463
|
if (e.source === "uiSelectAll") {
|
|
56456
56464
|
return;
|
|
56457
56465
|
}
|
|
56466
|
+
const selectionState = props.api.getServerSideSelectionState();
|
|
56467
|
+
const isGroupSelection = isServerSideGroupSelectionState(selectionState);
|
|
56468
|
+
const isSelectionStatePartialSelected = Boolean(
|
|
56469
|
+
selectionState?.toggledNodes?.length
|
|
56470
|
+
);
|
|
56471
|
+
const isSelectionStateSelectAll = !isSelectionStatePartialSelected && Boolean(
|
|
56472
|
+
isGroupSelection ? selectionState.selectAllChildren : selectionState?.selectAll
|
|
56473
|
+
);
|
|
56458
56474
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56459
56475
|
const currentRows = getCurrentRows(props.api, isPagination);
|
|
56460
|
-
const isAllSelected = currentRows.length && currentRows.every(isRowSelected);
|
|
56461
|
-
const isPartialSelected = !isAllSelected && currentRows.some(isRowSelected);
|
|
56476
|
+
const isAllSelected = isPagination ? currentRows.length && currentRows.every(isRowSelected) : isSelectionStateSelectAll;
|
|
56477
|
+
const isPartialSelected = isPagination ? !isAllSelected && currentRows.some(isRowSelected) : isSelectionStatePartialSelected;
|
|
56462
56478
|
if (isAllSelected) {
|
|
56463
56479
|
setSelectAll("all" /* All */);
|
|
56464
56480
|
} else if (isPartialSelected) {
|
|
@@ -56489,17 +56505,21 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56489
56505
|
const isSelectAll = nextSelectedState == "all" /* All */;
|
|
56490
56506
|
if (props.selectionSSREnabled) {
|
|
56491
56507
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56492
|
-
|
|
56493
|
-
|
|
56494
|
-
|
|
56495
|
-
|
|
56496
|
-
|
|
56497
|
-
|
|
56498
|
-
|
|
56499
|
-
|
|
56500
|
-
|
|
56501
|
-
|
|
56502
|
-
|
|
56508
|
+
if (isPagination) {
|
|
56509
|
+
const rowsIdsToSelectOrDeselect = getCurrentRows(
|
|
56510
|
+
props.api,
|
|
56511
|
+
isPagination
|
|
56512
|
+
).map((node) => node.id);
|
|
56513
|
+
isSelectAll ? tableRef?.current?.selectRows(
|
|
56514
|
+
rowsIdsToSelectOrDeselect,
|
|
56515
|
+
"uiSelectAll"
|
|
56516
|
+
) : tableRef?.current?.deselectRows(
|
|
56517
|
+
rowsIdsToSelectOrDeselect,
|
|
56518
|
+
"uiSelectAll"
|
|
56519
|
+
);
|
|
56520
|
+
} else {
|
|
56521
|
+
isSelectAll ? tableRef?.current?.selectAll() : tableRef?.current?.deselectAll();
|
|
56522
|
+
}
|
|
56503
56523
|
} else {
|
|
56504
56524
|
isSelectAll ? props.api.selectAllFiltered() : props.api.deselectAllFiltered();
|
|
56505
56525
|
}
|
|
@@ -56872,7 +56892,7 @@ function shapeActiveFilters(filters = emptyArray2) {
|
|
|
56872
56892
|
field
|
|
56873
56893
|
};
|
|
56874
56894
|
});
|
|
56875
|
-
return
|
|
56895
|
+
return state;
|
|
56876
56896
|
}
|
|
56877
56897
|
function useFilterStorage({
|
|
56878
56898
|
columnDefinitions,
|
|
@@ -56883,7 +56903,7 @@ function useFilterStorage({
|
|
|
56883
56903
|
filterable: emptyObj,
|
|
56884
56904
|
filterOptions: emptyObj,
|
|
56885
56905
|
possibleFilters: emptyArray2,
|
|
56886
|
-
selectedFilters:
|
|
56906
|
+
selectedFilters: shapeActiveFilters(initialSelectedFilters)
|
|
56887
56907
|
});
|
|
56888
56908
|
function getOptions(field) {
|
|
56889
56909
|
return filtersState.filterOptions[field];
|
|
@@ -56906,16 +56926,25 @@ function useFilterStorage({
|
|
|
56906
56926
|
const filterableColumns = columnDefinitions.filter(
|
|
56907
56927
|
(col) => col.filterRenderer
|
|
56908
56928
|
);
|
|
56909
|
-
const
|
|
56929
|
+
const filterableMap = filterableColumns.reduce((acc, curr) => {
|
|
56930
|
+
return {
|
|
56931
|
+
...acc,
|
|
56932
|
+
[curr.field]: curr
|
|
56933
|
+
};
|
|
56934
|
+
}, {});
|
|
56935
|
+
const selectedFiltersState = Object.entries(
|
|
56936
|
+
filtersState.selectedFilters ?? {}
|
|
56937
|
+
).filter(([field]) => Object.keys(filterableMap).includes(field)).reduce(
|
|
56938
|
+
(acc, [field, filterState]) => ({
|
|
56939
|
+
...acc,
|
|
56940
|
+
[field]: filterState
|
|
56941
|
+
}),
|
|
56942
|
+
{}
|
|
56943
|
+
);
|
|
56910
56944
|
setFiltersState((prev) => ({
|
|
56911
56945
|
...prev,
|
|
56912
|
-
filterable:
|
|
56913
|
-
|
|
56914
|
-
...acc,
|
|
56915
|
-
[curr.field]: curr
|
|
56916
|
-
};
|
|
56917
|
-
}, {}),
|
|
56918
|
-
selectedFilters: state,
|
|
56946
|
+
filterable: filterableMap,
|
|
56947
|
+
selectedFilters: selectedFiltersState,
|
|
56919
56948
|
possibleFilters: filterableColumns.sort(sortColumnDefinitionsByFilterIndex).map(getFieldAttr)
|
|
56920
56949
|
}));
|
|
56921
56950
|
}, [columnDefinitions]);
|
|
@@ -56929,7 +56958,7 @@ function useFilterStorage({
|
|
|
56929
56958
|
(selectedFilters) => {
|
|
56930
56959
|
setFiltersState((prev) => ({
|
|
56931
56960
|
...prev,
|
|
56932
|
-
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
56961
|
+
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
56933
56962
|
}));
|
|
56934
56963
|
},
|
|
56935
56964
|
[]
|
|
@@ -81069,6 +81098,14 @@ var useTableApi = ({
|
|
|
81069
81098
|
}),
|
|
81070
81099
|
[columnApi, gridApi, rowHeight, filterStorage]
|
|
81071
81100
|
);
|
|
81101
|
+
function deselectParentsWithoutChildrenOrSelectAll(state, gridApi2) {
|
|
81102
|
+
if (state.selectAllChildren === false && !state.toggledNodes?.length) {
|
|
81103
|
+
gridApi2.getRowNode(state.nodeId || "")?.setSelected(false);
|
|
81104
|
+
}
|
|
81105
|
+
state.toggledNodes?.forEach(
|
|
81106
|
+
(node) => deselectParentsWithoutChildrenOrSelectAll(node, gridApi2)
|
|
81107
|
+
);
|
|
81108
|
+
}
|
|
81072
81109
|
const onSelectionChanged = (rowNode) => {
|
|
81073
81110
|
const isGrouped = rowNode.group || rowNode.parent?.group && !isNodeRootLevelOfGrid(rowNode.parent);
|
|
81074
81111
|
const currAffectedRows = rowSelectionRef.current.affectedRows;
|
|
@@ -81089,13 +81126,18 @@ var useTableApi = ({
|
|
|
81089
81126
|
currAffectedRows
|
|
81090
81127
|
);
|
|
81091
81128
|
const rowValues = Object.values(rowsToUpdate);
|
|
81092
|
-
|
|
81093
|
-
|
|
81094
|
-
|
|
81095
|
-
|
|
81096
|
-
|
|
81097
|
-
|
|
81098
|
-
|
|
81129
|
+
const selectionState = gridApi?.getServerSideSelectionState();
|
|
81130
|
+
if (selectionState && isServerSideGroupSelectionState(selectionState) && gridApi) {
|
|
81131
|
+
deselectParentsWithoutChildrenOrSelectAll(selectionState, gridApi);
|
|
81132
|
+
} else {
|
|
81133
|
+
rowValues.forEach((row2) => {
|
|
81134
|
+
row2.node.setSelected(
|
|
81135
|
+
row2.selectedState === rowSelectionState.selected,
|
|
81136
|
+
false,
|
|
81137
|
+
"checkboxSelected"
|
|
81138
|
+
);
|
|
81139
|
+
});
|
|
81140
|
+
}
|
|
81099
81141
|
rowSelectionRef.current.affectedRows = {
|
|
81100
81142
|
...currAffectedRows,
|
|
81101
81143
|
...rowsToUpdate
|
|
@@ -81217,6 +81259,7 @@ function buildPartialTableApi({
|
|
|
81217
81259
|
rowSelectionRef
|
|
81218
81260
|
}) : void 0;
|
|
81219
81261
|
};
|
|
81262
|
+
const getServerSideSelectionState = () => gridApi?.getServerSideSelectionState();
|
|
81220
81263
|
const getTableConfiguration = () => {
|
|
81221
81264
|
const columnState = columnApi?.getColumnState().filter(
|
|
81222
81265
|
(column2) => !["rowActions", "rowActions-pinned"].includes(
|
|
@@ -81330,6 +81373,7 @@ function buildPartialTableApi({
|
|
|
81330
81373
|
getRootAggregateData,
|
|
81331
81374
|
getRowData,
|
|
81332
81375
|
getSelectedRows: getSelectedRows2,
|
|
81376
|
+
getServerSideSelectionState,
|
|
81333
81377
|
getTableConfiguration,
|
|
81334
81378
|
refreshCells,
|
|
81335
81379
|
setPinnedBottomRowData,
|
|
@@ -82381,7 +82425,7 @@ var Table = (props) => {
|
|
|
82381
82425
|
groupDefaultExpanded: props.groupDefaultExpanded,
|
|
82382
82426
|
groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
|
|
82383
82427
|
getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
|
|
82384
|
-
groupSelectsChildren: !onSSDR,
|
|
82428
|
+
groupSelectsChildren: props.groupSelectsChildren || !onSSDR,
|
|
82385
82429
|
groupSelectsFiltered: true,
|
|
82386
82430
|
headerHeight: props.headerHeight,
|
|
82387
82431
|
icons: tableIcons,
|
package/dist/modern/index.mjs
CHANGED
|
@@ -56032,6 +56032,14 @@ function findNode(predicate, gridApi) {
|
|
|
56032
56032
|
return searchTarget;
|
|
56033
56033
|
}
|
|
56034
56034
|
|
|
56035
|
+
// src/utils/isServerSideGroupSelectionState.ts
|
|
56036
|
+
function isServerSideGroupSelectionState(value) {
|
|
56037
|
+
if (value === null) {
|
|
56038
|
+
return false;
|
|
56039
|
+
}
|
|
56040
|
+
return value.selectAll === void 0;
|
|
56041
|
+
}
|
|
56042
|
+
|
|
56035
56043
|
// src/GenericHeader/genericHeader.scss
|
|
56036
56044
|
var css7 = `.ag-header-cell .data-table-header-menu {
|
|
56037
56045
|
opacity: 1;
|
|
@@ -56441,10 +56449,18 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56441
56449
|
if (e.source === "uiSelectAll") {
|
|
56442
56450
|
return;
|
|
56443
56451
|
}
|
|
56452
|
+
const selectionState = props.api.getServerSideSelectionState();
|
|
56453
|
+
const isGroupSelection = isServerSideGroupSelectionState(selectionState);
|
|
56454
|
+
const isSelectionStatePartialSelected = Boolean(
|
|
56455
|
+
selectionState?.toggledNodes?.length
|
|
56456
|
+
);
|
|
56457
|
+
const isSelectionStateSelectAll = !isSelectionStatePartialSelected && Boolean(
|
|
56458
|
+
isGroupSelection ? selectionState.selectAllChildren : selectionState?.selectAll
|
|
56459
|
+
);
|
|
56444
56460
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56445
56461
|
const currentRows = getCurrentRows(props.api, isPagination);
|
|
56446
|
-
const isAllSelected = currentRows.length && currentRows.every(isRowSelected);
|
|
56447
|
-
const isPartialSelected = !isAllSelected && currentRows.some(isRowSelected);
|
|
56462
|
+
const isAllSelected = isPagination ? currentRows.length && currentRows.every(isRowSelected) : isSelectionStateSelectAll;
|
|
56463
|
+
const isPartialSelected = isPagination ? !isAllSelected && currentRows.some(isRowSelected) : isSelectionStatePartialSelected;
|
|
56448
56464
|
if (isAllSelected) {
|
|
56449
56465
|
setSelectAll("all" /* All */);
|
|
56450
56466
|
} else if (isPartialSelected) {
|
|
@@ -56475,17 +56491,21 @@ var GenericHeaderRenderer = (props) => {
|
|
|
56475
56491
|
const isSelectAll = nextSelectedState == "all" /* All */;
|
|
56476
56492
|
if (props.selectionSSREnabled) {
|
|
56477
56493
|
const isPagination = Boolean(props.api.paginationGetRowCount());
|
|
56478
|
-
|
|
56479
|
-
|
|
56480
|
-
|
|
56481
|
-
|
|
56482
|
-
|
|
56483
|
-
|
|
56484
|
-
|
|
56485
|
-
|
|
56486
|
-
|
|
56487
|
-
|
|
56488
|
-
|
|
56494
|
+
if (isPagination) {
|
|
56495
|
+
const rowsIdsToSelectOrDeselect = getCurrentRows(
|
|
56496
|
+
props.api,
|
|
56497
|
+
isPagination
|
|
56498
|
+
).map((node) => node.id);
|
|
56499
|
+
isSelectAll ? tableRef?.current?.selectRows(
|
|
56500
|
+
rowsIdsToSelectOrDeselect,
|
|
56501
|
+
"uiSelectAll"
|
|
56502
|
+
) : tableRef?.current?.deselectRows(
|
|
56503
|
+
rowsIdsToSelectOrDeselect,
|
|
56504
|
+
"uiSelectAll"
|
|
56505
|
+
);
|
|
56506
|
+
} else {
|
|
56507
|
+
isSelectAll ? tableRef?.current?.selectAll() : tableRef?.current?.deselectAll();
|
|
56508
|
+
}
|
|
56489
56509
|
} else {
|
|
56490
56510
|
isSelectAll ? props.api.selectAllFiltered() : props.api.deselectAllFiltered();
|
|
56491
56511
|
}
|
|
@@ -56858,7 +56878,7 @@ function shapeActiveFilters(filters = emptyArray2) {
|
|
|
56858
56878
|
field
|
|
56859
56879
|
};
|
|
56860
56880
|
});
|
|
56861
|
-
return
|
|
56881
|
+
return state;
|
|
56862
56882
|
}
|
|
56863
56883
|
function useFilterStorage({
|
|
56864
56884
|
columnDefinitions,
|
|
@@ -56869,7 +56889,7 @@ function useFilterStorage({
|
|
|
56869
56889
|
filterable: emptyObj,
|
|
56870
56890
|
filterOptions: emptyObj,
|
|
56871
56891
|
possibleFilters: emptyArray2,
|
|
56872
|
-
selectedFilters:
|
|
56892
|
+
selectedFilters: shapeActiveFilters(initialSelectedFilters)
|
|
56873
56893
|
});
|
|
56874
56894
|
function getOptions(field) {
|
|
56875
56895
|
return filtersState.filterOptions[field];
|
|
@@ -56892,16 +56912,25 @@ function useFilterStorage({
|
|
|
56892
56912
|
const filterableColumns = columnDefinitions.filter(
|
|
56893
56913
|
(col) => col.filterRenderer
|
|
56894
56914
|
);
|
|
56895
|
-
const
|
|
56915
|
+
const filterableMap = filterableColumns.reduce((acc, curr) => {
|
|
56916
|
+
return {
|
|
56917
|
+
...acc,
|
|
56918
|
+
[curr.field]: curr
|
|
56919
|
+
};
|
|
56920
|
+
}, {});
|
|
56921
|
+
const selectedFiltersState = Object.entries(
|
|
56922
|
+
filtersState.selectedFilters ?? {}
|
|
56923
|
+
).filter(([field]) => Object.keys(filterableMap).includes(field)).reduce(
|
|
56924
|
+
(acc, [field, filterState]) => ({
|
|
56925
|
+
...acc,
|
|
56926
|
+
[field]: filterState
|
|
56927
|
+
}),
|
|
56928
|
+
{}
|
|
56929
|
+
);
|
|
56896
56930
|
setFiltersState((prev) => ({
|
|
56897
56931
|
...prev,
|
|
56898
|
-
filterable:
|
|
56899
|
-
|
|
56900
|
-
...acc,
|
|
56901
|
-
[curr.field]: curr
|
|
56902
|
-
};
|
|
56903
|
-
}, {}),
|
|
56904
|
-
selectedFilters: state,
|
|
56932
|
+
filterable: filterableMap,
|
|
56933
|
+
selectedFilters: selectedFiltersState,
|
|
56905
56934
|
possibleFilters: filterableColumns.sort(sortColumnDefinitionsByFilterIndex).map(getFieldAttr)
|
|
56906
56935
|
}));
|
|
56907
56936
|
}, [columnDefinitions]);
|
|
@@ -56915,7 +56944,7 @@ function useFilterStorage({
|
|
|
56915
56944
|
(selectedFilters) => {
|
|
56916
56945
|
setFiltersState((prev) => ({
|
|
56917
56946
|
...prev,
|
|
56918
|
-
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
56947
|
+
selectedFilters: shapeActiveFilters(selectedFilters)
|
|
56919
56948
|
}));
|
|
56920
56949
|
},
|
|
56921
56950
|
[]
|
|
@@ -81055,6 +81084,14 @@ var useTableApi = ({
|
|
|
81055
81084
|
}),
|
|
81056
81085
|
[columnApi, gridApi, rowHeight, filterStorage]
|
|
81057
81086
|
);
|
|
81087
|
+
function deselectParentsWithoutChildrenOrSelectAll(state, gridApi2) {
|
|
81088
|
+
if (state.selectAllChildren === false && !state.toggledNodes?.length) {
|
|
81089
|
+
gridApi2.getRowNode(state.nodeId || "")?.setSelected(false);
|
|
81090
|
+
}
|
|
81091
|
+
state.toggledNodes?.forEach(
|
|
81092
|
+
(node) => deselectParentsWithoutChildrenOrSelectAll(node, gridApi2)
|
|
81093
|
+
);
|
|
81094
|
+
}
|
|
81058
81095
|
const onSelectionChanged = (rowNode) => {
|
|
81059
81096
|
const isGrouped = rowNode.group || rowNode.parent?.group && !isNodeRootLevelOfGrid(rowNode.parent);
|
|
81060
81097
|
const currAffectedRows = rowSelectionRef.current.affectedRows;
|
|
@@ -81075,13 +81112,18 @@ var useTableApi = ({
|
|
|
81075
81112
|
currAffectedRows
|
|
81076
81113
|
);
|
|
81077
81114
|
const rowValues = Object.values(rowsToUpdate);
|
|
81078
|
-
|
|
81079
|
-
|
|
81080
|
-
|
|
81081
|
-
|
|
81082
|
-
|
|
81083
|
-
|
|
81084
|
-
|
|
81115
|
+
const selectionState = gridApi?.getServerSideSelectionState();
|
|
81116
|
+
if (selectionState && isServerSideGroupSelectionState(selectionState) && gridApi) {
|
|
81117
|
+
deselectParentsWithoutChildrenOrSelectAll(selectionState, gridApi);
|
|
81118
|
+
} else {
|
|
81119
|
+
rowValues.forEach((row2) => {
|
|
81120
|
+
row2.node.setSelected(
|
|
81121
|
+
row2.selectedState === rowSelectionState.selected,
|
|
81122
|
+
false,
|
|
81123
|
+
"checkboxSelected"
|
|
81124
|
+
);
|
|
81125
|
+
});
|
|
81126
|
+
}
|
|
81085
81127
|
rowSelectionRef.current.affectedRows = {
|
|
81086
81128
|
...currAffectedRows,
|
|
81087
81129
|
...rowsToUpdate
|
|
@@ -81203,6 +81245,7 @@ function buildPartialTableApi({
|
|
|
81203
81245
|
rowSelectionRef
|
|
81204
81246
|
}) : void 0;
|
|
81205
81247
|
};
|
|
81248
|
+
const getServerSideSelectionState = () => gridApi?.getServerSideSelectionState();
|
|
81206
81249
|
const getTableConfiguration = () => {
|
|
81207
81250
|
const columnState = columnApi?.getColumnState().filter(
|
|
81208
81251
|
(column2) => !["rowActions", "rowActions-pinned"].includes(
|
|
@@ -81316,6 +81359,7 @@ function buildPartialTableApi({
|
|
|
81316
81359
|
getRootAggregateData,
|
|
81317
81360
|
getRowData,
|
|
81318
81361
|
getSelectedRows: getSelectedRows2,
|
|
81362
|
+
getServerSideSelectionState,
|
|
81319
81363
|
getTableConfiguration,
|
|
81320
81364
|
refreshCells,
|
|
81321
81365
|
setPinnedBottomRowData,
|
|
@@ -82367,7 +82411,7 @@ var Table = (props) => {
|
|
|
82367
82411
|
groupDefaultExpanded: props.groupDefaultExpanded,
|
|
82368
82412
|
groupIncludeFooter: !onSSDR && props.groupIncludeFooter === void 0 ? true : props.groupIncludeFooter,
|
|
82369
82413
|
getGroupRowAgg: props.getGroupRowAgg ? getGroupRowAgg : void 0,
|
|
82370
|
-
groupSelectsChildren: !onSSDR,
|
|
82414
|
+
groupSelectsChildren: props.groupSelectsChildren || !onSSDR,
|
|
82371
82415
|
groupSelectsFiltered: true,
|
|
82372
82416
|
headerHeight: props.headerHeight,
|
|
82373
82417
|
icons: tableIcons,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@procore/data-table",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.6.0",
|
|
4
4
|
"description": "Complex data grid built on top of ag-grid, with DST components and styles.",
|
|
5
5
|
"main": "dist/modern/index.js",
|
|
6
6
|
"module": "dist/modern/index.mjs",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"cypress:run": "cypress run -b ${CYPRESS_BROWSER-chrome} --spec ${CYPRESS_SPEC-cypress/e2e/**/*.e2e.ts}",
|
|
37
37
|
"cypress:run:all": "start-server-and-test storybook-static:server http://127.0.0.1:6006 'yarn cypress:run'",
|
|
38
38
|
"cypress:install": "cypress install",
|
|
39
|
+
"lint:types": "tsc --noEmit",
|
|
39
40
|
"prettier": "prettier --write",
|
|
40
41
|
"prettier:check": "prettier --check",
|
|
41
42
|
"storybook": "storybook dev -p 6006",
|
|
@@ -75,7 +76,7 @@
|
|
|
75
76
|
},
|
|
76
77
|
"dependencies": {
|
|
77
78
|
"@procore/labs-datetime-select": "0.1.0",
|
|
78
|
-
"@procore/labs-group-by-select": "3.1.
|
|
79
|
+
"@procore/labs-group-by-select": "3.1.2",
|
|
79
80
|
"@procore/toast-alert": "5.1.0",
|
|
80
81
|
"classnames": "2.5.1",
|
|
81
82
|
"date-fns": "2.29.1",
|