beautiful-grid 1.0.5 → 1.0.6
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/README.md +47 -4
- package/cjs/BGrid.js +167 -39
- package/cjs/components/Table.js +9 -5
- package/cjs/components/TableHeadColumn.js +4 -1
- package/cjs/components/toolbox/TableHeadToolbox.js +8 -3
- package/cjs/components/toolbox/ToolboxColumnVisibilitySection.js +131 -0
- package/cjs/components/toolbox/index.js +1 -0
- package/cjs/store/createAppStore.js +2 -0
- package/cjs/utils/columnVisibility.js +114 -0
- package/cjs/utils/index.js +1 -0
- package/esm/BGrid.js +168 -50
- package/esm/components/Table.js +7 -3
- package/esm/components/TableHeadColumn.js +4 -1
- package/esm/components/toolbox/TableHeadToolbox.js +8 -3
- package/esm/components/toolbox/ToolboxColumnVisibilitySection.js +68 -0
- package/esm/components/toolbox/index.js +1 -0
- package/esm/store/createAppStore.js +2 -0
- package/esm/utils/columnVisibility.js +89 -0
- package/esm/utils/index.js +1 -0
- package/package.json +1 -1
- package/style.css +68 -0
- package/types/BGrid.d.ts +1 -1
- package/types/components/Table.d.ts +2 -1
- package/types/components/toolbox/ToolboxColumnVisibilitySection.d.ts +11 -0
- package/types/components/toolbox/index.d.ts +1 -0
- package/types/store/createAppStore.d.ts +1 -1
- package/types/types.d.ts +38 -0
- package/types/utils/columnVisibility.d.ts +21 -0
- package/types/utils/index.d.ts +1 -0
package/README.md
CHANGED
|
@@ -2,12 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
**Beautiful. Powerful. Naturally React.**
|
|
4
4
|
|
|
5
|
-
[](https://npmjs.org/package/beautiful-grid)
|
|
6
|
+
[](https://npmjs.org/package/beautiful-grid)
|
|
7
|
+
[](https://bgrid.axisj.com)
|
|
8
|
+
[](https://www.npmjs.com/package/beautiful-grid)
|
|
9
|
+
[](https://github.com/axisj/beautiful-grid/actions/workflows/tests.yml)
|
|
10
|
+
<br />
|
|
7
11
|
[](LICENSE)
|
|
8
|
-
[](https://www.npmjs.com/package/beautiful-grid)
|
|
13
|
+
[](https://react.dev/)
|
|
14
|
+
[](https://nodejs.org)
|
|
15
|
+
[](https://github.com/axisj/beautiful-grid/commits/main)
|
|
16
|
+
<br />
|
|
17
|
+
[](https://github.com/axisj/beautiful-grid/stargazers)
|
|
18
|
+
[](https://github.com/axisj/beautiful-grid/pulls)
|
|
19
|
+
[](https://bgrid.axisj.com)
|
|
9
20
|
|
|
10
|
-
BeautifulGrid is a high-performance, feature-packed, and beautifully designed open-source React Data Grid for data-heavy business applications. It combines zero-runtime-CSS styling with virtual scrolling, spreadsheet-like cell selection and clipboard operations, built-in and plugin cell editing, multi-level grouped headers, filtering & sorting toolboxes, server/client pagination, pivot table transforms, row reordering, and flexible theming.
|
|
21
|
+
BeautifulGrid is a high-performance, feature-packed, and beautifully designed open-source React Data Grid for data-heavy business applications. It combines zero-runtime-CSS styling with virtual scrolling, spreadsheet-like cell selection and clipboard operations, built-in and plugin cell editing, multi-level grouped headers, filtering & sorting toolboxes, recoverable column visibility, server/client pagination, pivot table transforms, row reordering, and flexible theming.
|
|
11
22
|
|
|
12
23
|
Explore live interactive examples and in-depth documentation at [bgrid.axisj.com](https://bgrid.axisj.com).
|
|
13
24
|
|
|
@@ -33,6 +44,7 @@ Explore live interactive examples and in-depth documentation at [bgrid.axisj.com
|
|
|
33
44
|
- [11. Summary Row](#11-summary-row)
|
|
34
45
|
- [12. Cell Merging](#12-cell-merging)
|
|
35
46
|
- [13. Pivot Table](#13-pivot-table)
|
|
47
|
+
- [14. Column Visibility](#14-column-visibility)
|
|
36
48
|
- [Props Reference](#props-reference)
|
|
37
49
|
- [BGridProps](#bgridprops)
|
|
38
50
|
- [BGridColumn](#bgridcolumn)
|
|
@@ -846,6 +858,35 @@ const pivotConfig: BGridProps<SalesRecord>['pivot'] = {
|
|
|
846
858
|
|
|
847
859
|
---
|
|
848
860
|
|
|
861
|
+
### 14. Column Visibility
|
|
862
|
+
|
|
863
|
+
Available since BeautifulGrid `1.0.6`.
|
|
864
|
+
|
|
865
|
+
Enable recoverable column hiding through the existing header toolbox. Use controlled state to persist a user's visible-column preferences.
|
|
866
|
+
|
|
867
|
+
```typescript jsx
|
|
868
|
+
function OrdersGrid({ data, columns }) {
|
|
869
|
+
const [hiddenColumnIds, setHiddenColumnIds] = React.useState(['owner']);
|
|
870
|
+
|
|
871
|
+
return (
|
|
872
|
+
<BGrid
|
|
873
|
+
width={800}
|
|
874
|
+
height={420}
|
|
875
|
+
data={data}
|
|
876
|
+
columns={columns}
|
|
877
|
+
columnVisibility={{
|
|
878
|
+
hiddenColumnIds,
|
|
879
|
+
onChange: setHiddenColumnIds,
|
|
880
|
+
}}
|
|
881
|
+
/>
|
|
882
|
+
);
|
|
883
|
+
}
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
Set `hideable: false` on columns that must remain available. The final visible column cannot be hidden, and active sort/filter conditions remain intact while their column is hidden.
|
|
887
|
+
|
|
888
|
+
---
|
|
889
|
+
|
|
849
890
|
## Props Reference
|
|
850
891
|
|
|
851
892
|
### BGridProps
|
|
@@ -919,6 +960,7 @@ Below is a categorized reference of `<BGrid>` props. For exact TypeScript types,
|
|
|
919
960
|
| `summary` | `{ position: 'top' \| 'bottom'; columns: BGridSummaryColumn<T>[] }` | Static summary row configuration. |
|
|
920
961
|
| `cellMergeOptions` | `{ columnsMap: Record<number, BGridCellMergeColumn> }` | Vertical cell merge rules. |
|
|
921
962
|
| `pivot` | `BGridPivotOptions<T>` | Pivot table dimensions, aggregation rules, and metrics. |
|
|
963
|
+
| `columnVisibility` | `boolean \| BGridColumnVisibilityOptions<T>` | Enables controlled or uncontrolled column hiding and restore controls (since `1.0.6`). |
|
|
922
964
|
| `loading` | `boolean` | Displays full-grid loading overlay. |
|
|
923
965
|
| `spinning` | `boolean` | Displays body-area spinner. |
|
|
924
966
|
| `msg` | `{ emptyList?: string }` | Custom empty state text. |
|
|
@@ -950,6 +992,7 @@ Below is a categorized reference of `<BGrid>` props. For exact TypeScript types,
|
|
|
950
992
|
| `searchable` | `boolean` | Whether this column participates in grid search (defaults to `true`). |
|
|
951
993
|
| `getSearchText` | `(params: BGridSearchCellParams<T>) => unknown` | Custom string extractor for grid search matching. |
|
|
952
994
|
| `toolbox` | `boolean \| BGridToolboxConfig<T>` | Enables header sort/filter toolbox popup. |
|
|
995
|
+
| `hideable` | `boolean` | Allows this column to be hidden through the visibility menu (defaults to `true`, since `1.0.6`). |
|
|
953
996
|
| `filter` | `false \| BGridColumnFilterConfig<T>` | Column filter configuration (`type: 'values' \| 'text' \| 'number'`). |
|
|
954
997
|
| `sortComparator` | `(a, b, params) => number` | Custom comparator function for sorting. |
|
|
955
998
|
|
package/cjs/BGrid.js
CHANGED
|
@@ -77,10 +77,28 @@ var React = __importStar(require("react"));
|
|
|
77
77
|
var Table_1 = __importDefault(require("./components/Table"));
|
|
78
78
|
var utils_1 = require("./utils");
|
|
79
79
|
var store_1 = require("./store");
|
|
80
|
+
function computeModelColumns(columns, frozenColumnIndex, duplicateToolboxColumnIds) {
|
|
81
|
+
var left = 0;
|
|
82
|
+
var previousWidth = 0;
|
|
83
|
+
return columns.map(function (column, columnIndex) {
|
|
84
|
+
var _a, _b;
|
|
85
|
+
var columnId = (0, utils_1.getColumnId)(column);
|
|
86
|
+
if (columnIndex >= frozenColumnIndex) {
|
|
87
|
+
left += previousWidth;
|
|
88
|
+
previousWidth = (_a = column.width) !== null && _a !== void 0 ? _a : 100;
|
|
89
|
+
}
|
|
90
|
+
return __assign(__assign({}, column), { columnId: columnId, keyToken: (0, utils_1.getColumnKeyToken)(column.key), toolbox: duplicateToolboxColumnIds.has(columnId) ? false : column.toolbox, left: columnIndex < frozenColumnIndex ? -1 : left, width: (_b = column.width) !== null && _b !== void 0 ? _b : 100 });
|
|
91
|
+
});
|
|
92
|
+
}
|
|
80
93
|
function BGrid(_a) {
|
|
81
94
|
var _b, _c, _d;
|
|
82
|
-
var ref = _a.ref, width = _a.width, height = _a.height, _e = _a.headerHeight, headerHeight = _e === void 0 ? 30 : _e, footerHeight = _a.footerHeight, _f = _a.summaryHeight, summaryHeight = _f === void 0 ? 30 : _f, _g = _a.itemHeight, itemHeight = _g === void 0 ? 15 : _g, _h = _a.itemPadding, itemPadding = _h === void 0 ? 7 : _h, columns = _a.columns, columnsGroup = _a.columnsGroup, columnGroups = _a.columnGroups, onChangeColumns = _a.onChangeColumns, _j = _a.frozenColumnIndex, frozenColumnIndex = _j === void 0 ? 0 : _j, _k = _a.frozenRowCount, frozenRowCount = _k === void 0 ? 0 : _k, _l = _a.data, data = _l === void 0 ? [] : _l, page = _a.page, scrollbar = _a.scrollbar, status = _a.status, pagination = _a.pagination, bottomBarHeight = _a.bottomBarHeight, _m = _a.scrollTop, scrollTop = _m === void 0 ? 0 : _m, _o = _a.scrollLeft, scrollLeft = _o === void 0 ? 0 : _o, className = _a.className, style = _a.style, rowChecked = _a.rowChecked, sort = _a.sort, onClick = _a.onClick, _p = _a.loading, loading = _p === void 0 ? false : _p, spinning = _a.spinning, rowKey = _a.rowKey, selectedRowKey = _a.selectedRowKey, editable = _a.editable, onChangeData = _a.onChangeData, showLineNumber = _a.showLineNumber, msg = _a.msg, getRowClassName = _a.getRowClassName, _q = _a.editTrigger, editTrigger = _q === void 0 ? 'dblclick' : _q, cellMergeOptions = _a.cellMergeOptions, cellSelectionOptions = _a.cellSelectionOptions, cellNavigationOptions = _a.cellNavigationOptions, variant = _a.variant, summary = _a.summary, columnSortable = _a.columnSortable, reorder = _a.reorder, pivot = _a.pivot, dataControl = _a.dataControl, icons = _a.icons, searchOptions = _a.searchOptions, contextMenuOptions = _a.contextMenuOptions;
|
|
83
|
-
var warnedSearchControlledRef = React.useRef({
|
|
95
|
+
var ref = _a.ref, width = _a.width, height = _a.height, _e = _a.headerHeight, headerHeight = _e === void 0 ? 30 : _e, footerHeight = _a.footerHeight, _f = _a.summaryHeight, summaryHeight = _f === void 0 ? 30 : _f, _g = _a.itemHeight, itemHeight = _g === void 0 ? 15 : _g, _h = _a.itemPadding, itemPadding = _h === void 0 ? 7 : _h, columns = _a.columns, columnsGroup = _a.columnsGroup, columnGroups = _a.columnGroups, onChangeColumns = _a.onChangeColumns, _j = _a.frozenColumnIndex, frozenColumnIndex = _j === void 0 ? 0 : _j, _k = _a.frozenRowCount, frozenRowCount = _k === void 0 ? 0 : _k, _l = _a.data, data = _l === void 0 ? [] : _l, page = _a.page, scrollbar = _a.scrollbar, status = _a.status, pagination = _a.pagination, bottomBarHeight = _a.bottomBarHeight, _m = _a.scrollTop, scrollTop = _m === void 0 ? 0 : _m, _o = _a.scrollLeft, scrollLeft = _o === void 0 ? 0 : _o, className = _a.className, style = _a.style, rowChecked = _a.rowChecked, sort = _a.sort, onClick = _a.onClick, _p = _a.loading, loading = _p === void 0 ? false : _p, spinning = _a.spinning, rowKey = _a.rowKey, selectedRowKey = _a.selectedRowKey, editable = _a.editable, onChangeData = _a.onChangeData, showLineNumber = _a.showLineNumber, msg = _a.msg, getRowClassName = _a.getRowClassName, _q = _a.editTrigger, editTrigger = _q === void 0 ? 'dblclick' : _q, cellMergeOptions = _a.cellMergeOptions, cellSelectionOptions = _a.cellSelectionOptions, cellNavigationOptions = _a.cellNavigationOptions, variant = _a.variant, summary = _a.summary, columnSortable = _a.columnSortable, reorder = _a.reorder, pivot = _a.pivot, dataControl = _a.dataControl, icons = _a.icons, columnVisibility = _a.columnVisibility, searchOptions = _a.searchOptions, contextMenuOptions = _a.contextMenuOptions;
|
|
96
|
+
var warnedSearchControlledRef = React.useRef({
|
|
97
|
+
open: false,
|
|
98
|
+
query: false,
|
|
99
|
+
pivotContextMenu: false,
|
|
100
|
+
columnVisibility: false,
|
|
101
|
+
});
|
|
84
102
|
var pivotData = React.useMemo(function () {
|
|
85
103
|
return (0, utils_1.createPivotData)({
|
|
86
104
|
data: data,
|
|
@@ -88,26 +106,63 @@ function BGrid(_a) {
|
|
|
88
106
|
});
|
|
89
107
|
}, [data, pivot]);
|
|
90
108
|
var pivotEnabled = !!pivotData;
|
|
91
|
-
var resolvedColumns = (_b = pivotData === null || pivotData === void 0 ? void 0 : pivotData.columns) !== null && _b !== void 0 ? _b : columns;
|
|
109
|
+
var resolvedColumns = ((_b = pivotData === null || pivotData === void 0 ? void 0 : pivotData.columns) !== null && _b !== void 0 ? _b : columns);
|
|
110
|
+
var visibilityOptions = typeof columnVisibility === 'object' ? columnVisibility : undefined;
|
|
111
|
+
var visibilityEnabled = columnVisibility === true || (visibilityOptions !== undefined && visibilityOptions.enabled !== false);
|
|
112
|
+
var _r = __read(React.useState(function () { var _a; return Array.from(new Set((_a = visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.defaultHiddenColumnIds) !== null && _a !== void 0 ? _a : [])); }), 2), uncontrolledHiddenColumnIds = _r[0], setUncontrolledHiddenColumnIds = _r[1];
|
|
113
|
+
var hiddenColumnIds = React.useMemo(function () {
|
|
114
|
+
var _a;
|
|
115
|
+
if (!visibilityEnabled)
|
|
116
|
+
return [];
|
|
117
|
+
var requestedIds = Array.from(new Set((_a = visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.hiddenColumnIds) !== null && _a !== void 0 ? _a : uncontrolledHiddenColumnIds));
|
|
118
|
+
if (resolvedColumns.length > 0 &&
|
|
119
|
+
resolvedColumns.every(function (column) { return requestedIds.includes((0, utils_1.getColumnId)(column)); })) {
|
|
120
|
+
var firstColumnId_1 = (0, utils_1.getColumnId)(resolvedColumns[0]);
|
|
121
|
+
return requestedIds.filter(function (columnId) { return columnId !== firstColumnId_1; });
|
|
122
|
+
}
|
|
123
|
+
return requestedIds;
|
|
124
|
+
}, [resolvedColumns, uncontrolledHiddenColumnIds, visibilityEnabled, visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.hiddenColumnIds]);
|
|
125
|
+
var hiddenColumnIdSet = React.useMemo(function () { return new Set(hiddenColumnIds); }, [hiddenColumnIds]);
|
|
92
126
|
var resolvedColumnGroups = React.useMemo(function () { return (pivotEnabled ? [] : columnGroups !== null && columnGroups !== void 0 ? columnGroups : []); }, [columnGroups, pivotEnabled]);
|
|
93
127
|
var resolvedColumnsGroup = React.useMemo(function () { var _a; return (_a = pivotData === null || pivotData === void 0 ? void 0 : pivotData.columnsGroup) !== null && _a !== void 0 ? _a : (resolvedColumnGroups.length ? [] : columnsGroup !== null && columnsGroup !== void 0 ? columnsGroup : []); }, [columnsGroup, pivotData === null || pivotData === void 0 ? void 0 : pivotData.columnsGroup, resolvedColumnGroups.length]);
|
|
128
|
+
var visibilityProjection = React.useMemo(function () {
|
|
129
|
+
return (0, utils_1.projectColumnVisibility)({
|
|
130
|
+
columns: resolvedColumns,
|
|
131
|
+
hiddenColumnIds: hiddenColumnIdSet,
|
|
132
|
+
frozenColumnIndex: pivotEnabled ? 0 : frozenColumnIndex,
|
|
133
|
+
columnsGroup: resolvedColumnsGroup,
|
|
134
|
+
columnGroups: resolvedColumnGroups,
|
|
135
|
+
cellMergeOptions: pivotEnabled ? undefined : cellMergeOptions,
|
|
136
|
+
summary: pivotEnabled ? undefined : summary,
|
|
137
|
+
});
|
|
138
|
+
}, [
|
|
139
|
+
cellMergeOptions,
|
|
140
|
+
frozenColumnIndex,
|
|
141
|
+
hiddenColumnIdSet,
|
|
142
|
+
pivotEnabled,
|
|
143
|
+
resolvedColumnGroups,
|
|
144
|
+
resolvedColumns,
|
|
145
|
+
resolvedColumnsGroup,
|
|
146
|
+
summary,
|
|
147
|
+
]);
|
|
94
148
|
var resolvedData = (_c = pivotData === null || pivotData === void 0 ? void 0 : pivotData.data) !== null && _c !== void 0 ? _c : data;
|
|
95
149
|
var resolvedPage = pivotEnabled ? undefined : page;
|
|
96
|
-
var resolvedFrozenColumnIndex =
|
|
150
|
+
var resolvedFrozenColumnIndex = visibilityProjection.frozenColumnIndex;
|
|
97
151
|
var resolvedRowChecked = pivotEnabled ? undefined : rowChecked;
|
|
98
152
|
var resolvedSort = pivotEnabled ? undefined : sort;
|
|
99
153
|
var resolvedOnClick = pivotEnabled ? undefined : onClick;
|
|
100
|
-
var
|
|
154
|
+
var baseOnChangeColumns = pivotEnabled ? undefined : onChangeColumns;
|
|
101
155
|
var resolvedOnChangeData = pivotEnabled ? undefined : onChangeData;
|
|
102
156
|
var resolvedRowKey = pivotEnabled ? undefined : rowKey;
|
|
103
157
|
var resolvedSelectedRowKey = pivotEnabled ? undefined : selectedRowKey;
|
|
104
158
|
var resolvedEditable = pivotEnabled ? false : editable;
|
|
105
159
|
var resolvedShowLineNumber = pivotEnabled ? false : showLineNumber;
|
|
106
160
|
var resolvedGetRowClassName = pivotEnabled ? undefined : getRowClassName;
|
|
107
|
-
var resolvedCellMergeOptions =
|
|
161
|
+
var resolvedCellMergeOptions = visibilityProjection.cellMergeOptions;
|
|
108
162
|
var resolvedCellSelectionOptions = cellSelectionOptions;
|
|
109
|
-
var resolvedSummary =
|
|
110
|
-
var
|
|
163
|
+
var resolvedSummary = visibilityProjection.summary;
|
|
164
|
+
var hasHiddenColumns = visibilityProjection.columns.length < resolvedColumns.length;
|
|
165
|
+
var resolvedColumnSortable = pivotEnabled || hasHiddenColumns ? false : columnSortable;
|
|
111
166
|
var resolvedDataControl = pivotEnabled ? undefined : dataControl;
|
|
112
167
|
var resolvedSearchOptions = pivotEnabled ? undefined : searchOptions;
|
|
113
168
|
var resolvedContextMenuOptions = pivotEnabled ? undefined : contextMenuOptions;
|
|
@@ -148,6 +203,15 @@ function BGrid(_a) {
|
|
|
148
203
|
warnedSearchControlledRef.current.pivotContextMenu = true;
|
|
149
204
|
console.warn('[BGrid] contextMenuOptions is disabled while pivot mode is active.');
|
|
150
205
|
}
|
|
206
|
+
if (hasHiddenColumns && columnSortable) {
|
|
207
|
+
console.warn('[BGrid] Column reordering is disabled while columns are hidden.');
|
|
208
|
+
}
|
|
209
|
+
if ((visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.hiddenColumnIds) !== undefined &&
|
|
210
|
+
!visibilityOptions.onChange &&
|
|
211
|
+
!warnedSearchControlledRef.current.columnVisibility) {
|
|
212
|
+
warnedSearchControlledRef.current.columnVisibility = true;
|
|
213
|
+
console.warn('[BGrid] Controlled columnVisibility.hiddenColumnIds requires onChange to respond to user actions.');
|
|
214
|
+
}
|
|
151
215
|
if ((searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.open) !== undefined &&
|
|
152
216
|
!searchOptions.onOpenChange &&
|
|
153
217
|
!warnedSearchControlledRef.current.open) {
|
|
@@ -173,8 +237,18 @@ function BGrid(_a) {
|
|
|
173
237
|
resolvedSort,
|
|
174
238
|
contextMenuOptions,
|
|
175
239
|
searchOptions,
|
|
240
|
+
columnSortable,
|
|
241
|
+
hasHiddenColumns,
|
|
242
|
+
visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.hiddenColumnIds,
|
|
243
|
+
visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.onChange,
|
|
176
244
|
]);
|
|
177
|
-
var duplicateToolboxColumnIds = React.useMemo(function () {
|
|
245
|
+
var duplicateToolboxColumnIds = React.useMemo(function () {
|
|
246
|
+
var duplicates = (0, utils_1.findDuplicateColumnIds)(resolvedColumns, true);
|
|
247
|
+
if (visibilityEnabled) {
|
|
248
|
+
(0, utils_1.findDuplicateColumnIds)(resolvedColumns).forEach(function (columnId) { return duplicates.add(columnId); });
|
|
249
|
+
}
|
|
250
|
+
return duplicates;
|
|
251
|
+
}, [resolvedColumns, visibilityEnabled]);
|
|
178
252
|
var warnedDuplicateIdsRef = React.useRef(new Set());
|
|
179
253
|
React.useEffect(function () {
|
|
180
254
|
if (process.env.NODE_ENV === 'production')
|
|
@@ -183,30 +257,82 @@ function BGrid(_a) {
|
|
|
183
257
|
if (newDuplicateIds.length === 0)
|
|
184
258
|
return;
|
|
185
259
|
newDuplicateIds.forEach(function (id) { return warnedDuplicateIdsRef.current.add(id); });
|
|
186
|
-
console.warn("[BGrid] Duplicate column IDs detected: ".concat(newDuplicateIds.join(', '), ". Toolbox is disabled for those columns; specify an explicit unique 'id'."));
|
|
187
|
-
}, [duplicateToolboxColumnIds]);
|
|
260
|
+
console.warn("[BGrid] Duplicate column IDs detected: ".concat(newDuplicateIds.join(', '), ". Toolbox").concat(visibilityEnabled ? ' and column visibility are' : ' is', " disabled for those columns; specify an explicit unique 'id'."));
|
|
261
|
+
}, [duplicateToolboxColumnIds, visibilityEnabled]);
|
|
262
|
+
var requestColumnVisibilityChange = React.useCallback(function (nextHiddenColumnIds, event) {
|
|
263
|
+
var _a;
|
|
264
|
+
var uniqueIds = Array.from(new Set(nextHiddenColumnIds));
|
|
265
|
+
if (event.type === 'hide') {
|
|
266
|
+
var visibleCount = resolvedColumns.reduce(function (count, column) { return count + (uniqueIds.includes((0, utils_1.getColumnId)(column)) ? 0 : 1); }, 0);
|
|
267
|
+
if (visibleCount === 0)
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
if ((visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.hiddenColumnIds) === undefined) {
|
|
271
|
+
setUncontrolledHiddenColumnIds(uniqueIds);
|
|
272
|
+
}
|
|
273
|
+
(_a = visibilityOptions === null || visibilityOptions === void 0 ? void 0 : visibilityOptions.onChange) === null || _a === void 0 ? void 0 : _a.call(visibilityOptions, uniqueIds, event);
|
|
274
|
+
}, [resolvedColumns, visibilityOptions]);
|
|
275
|
+
var columnVisibilityState = React.useMemo(function () {
|
|
276
|
+
return visibilityEnabled
|
|
277
|
+
? {
|
|
278
|
+
items: resolvedColumns.map(function (column) {
|
|
279
|
+
var columnId = (0, utils_1.getColumnId)(column);
|
|
280
|
+
return {
|
|
281
|
+
column: column,
|
|
282
|
+
columnId: columnId,
|
|
283
|
+
hidden: hiddenColumnIdSet.has(columnId),
|
|
284
|
+
hideable: column.hideable !== false && !duplicateToolboxColumnIds.has(columnId),
|
|
285
|
+
};
|
|
286
|
+
}),
|
|
287
|
+
hiddenColumnIds: hiddenColumnIds,
|
|
288
|
+
onChange: requestColumnVisibilityChange,
|
|
289
|
+
}
|
|
290
|
+
: undefined;
|
|
291
|
+
}, [
|
|
292
|
+
duplicateToolboxColumnIds,
|
|
293
|
+
hiddenColumnIdSet,
|
|
294
|
+
hiddenColumnIds,
|
|
295
|
+
requestColumnVisibilityChange,
|
|
296
|
+
resolvedColumns,
|
|
297
|
+
visibilityEnabled,
|
|
298
|
+
]);
|
|
188
299
|
var computedColumns = React.useMemo(function () {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
300
|
+
return computeModelColumns(visibilityProjection.columns, resolvedFrozenColumnIndex, duplicateToolboxColumnIds);
|
|
301
|
+
}, [duplicateToolboxColumnIds, resolvedFrozenColumnIndex, visibilityProjection.columns]);
|
|
302
|
+
var queryColumns = React.useMemo(function () { return computeModelColumns(resolvedColumns, pivotEnabled ? 0 : frozenColumnIndex, duplicateToolboxColumnIds); }, [duplicateToolboxColumnIds, frozenColumnIndex, pivotEnabled, resolvedColumns]);
|
|
303
|
+
var projectedOnChangeColumns = React.useCallback(function (visibleColumnIndex, info) {
|
|
304
|
+
var _a;
|
|
305
|
+
if (!baseOnChangeColumns)
|
|
306
|
+
return;
|
|
307
|
+
if (!hasHiddenColumns) {
|
|
308
|
+
baseOnChangeColumns(visibleColumnIndex, info);
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
var nextColumns = __spreadArray([], __read(resolvedColumns), false);
|
|
312
|
+
visibilityProjection.visibleOriginalIndexes.forEach(function (originalIndex, visibleIndex) {
|
|
313
|
+
var updatedColumn = info.columns[visibleIndex];
|
|
314
|
+
if (updatedColumn)
|
|
315
|
+
nextColumns[originalIndex] = updatedColumn;
|
|
316
|
+
});
|
|
317
|
+
baseOnChangeColumns(visibleColumnIndex === null
|
|
318
|
+
? null
|
|
319
|
+
: (_a = visibilityProjection.visibleOriginalIndexes[visibleColumnIndex]) !== null && _a !== void 0 ? _a : null, __assign(__assign({}, info), { columns: nextColumns, columnsGroup: resolvedColumnsGroup, columnGroups: resolvedColumnGroups }));
|
|
320
|
+
}, [
|
|
321
|
+
baseOnChangeColumns,
|
|
322
|
+
hasHiddenColumns,
|
|
323
|
+
resolvedColumnGroups,
|
|
324
|
+
resolvedColumns,
|
|
325
|
+
resolvedColumnsGroup,
|
|
326
|
+
visibilityProjection.visibleOriginalIndexes,
|
|
327
|
+
]);
|
|
328
|
+
var resolvedOnChangeColumns = baseOnChangeColumns ? projectedOnChangeColumns : undefined;
|
|
203
329
|
var headerMatrixDiagnostics = React.useMemo(function () {
|
|
204
330
|
return (0, utils_1.buildHeaderMatrix)({
|
|
205
331
|
columns: computedColumns,
|
|
206
|
-
columnsGroup:
|
|
207
|
-
columnGroups:
|
|
332
|
+
columnsGroup: visibilityProjection.columnsGroup,
|
|
333
|
+
columnGroups: visibilityProjection.columnGroups,
|
|
208
334
|
});
|
|
209
|
-
}, [computedColumns,
|
|
335
|
+
}, [computedColumns, visibilityProjection.columnGroups, visibilityProjection.columnsGroup]);
|
|
210
336
|
React.useEffect(function () {
|
|
211
337
|
if (process.env.NODE_ENV === 'production')
|
|
212
338
|
return;
|
|
@@ -221,9 +347,9 @@ function BGrid(_a) {
|
|
|
221
347
|
var unknownQueryColumnIds = React.useMemo(function () {
|
|
222
348
|
if (!resolvedDataControl)
|
|
223
349
|
return [];
|
|
224
|
-
var knownIds = new Set(
|
|
350
|
+
var knownIds = new Set(queryColumns.map(function (column) { return column.columnId; }));
|
|
225
351
|
return Array.from(new Set(__spreadArray(__spreadArray([], __read(resolvedDataControl.query.sortParams.map(function (param) { var _a; return (_a = param.columnId) !== null && _a !== void 0 ? _a : param.key; })), false), __read(resolvedDataControl.query.filterParams.map(function (param) { return param.columnId; })), false).filter(function (id) { return !!id && !knownIds.has(id); })));
|
|
226
|
-
}, [
|
|
352
|
+
}, [queryColumns, resolvedDataControl]);
|
|
227
353
|
var warnedUnknownQueryIdsRef = React.useRef(new Set());
|
|
228
354
|
React.useEffect(function () {
|
|
229
355
|
if (process.env.NODE_ENV === 'production')
|
|
@@ -257,7 +383,7 @@ function BGrid(_a) {
|
|
|
257
383
|
if ((resolvedDataControl === null || resolvedDataControl === void 0 ? void 0 : resolvedDataControl.mode) === 'client') {
|
|
258
384
|
return (0, utils_1.processDataQuery)({
|
|
259
385
|
data: resolvedData,
|
|
260
|
-
columns:
|
|
386
|
+
columns: queryColumns,
|
|
261
387
|
query: resolvedDataQuery,
|
|
262
388
|
rowKey: resolvedRowKey,
|
|
263
389
|
includeRows: false,
|
|
@@ -271,7 +397,7 @@ function BGrid(_a) {
|
|
|
271
397
|
sourceIndexByVisibleIndex: sourceIndexByVisibleIndex,
|
|
272
398
|
visibleIndexBySourceIndex: visibleIndexBySourceIndex,
|
|
273
399
|
};
|
|
274
|
-
}, [
|
|
400
|
+
}, [queryColumns, resolvedData, resolvedDataControl === null || resolvedDataControl === void 0 ? void 0 : resolvedDataControl.mode, resolvedDataQuery, resolvedRowKey]);
|
|
275
401
|
var displayData = processedResult.data;
|
|
276
402
|
var resolvedFrozenRowCount = pivotEnabled
|
|
277
403
|
? 0
|
|
@@ -376,8 +502,8 @@ function BGrid(_a) {
|
|
|
376
502
|
reorderable: (_a = resolvedReorder === null || resolvedReorder === void 0 ? void 0 : resolvedReorder.enabled) !== null && _a !== void 0 ? _a : false,
|
|
377
503
|
}),
|
|
378
504
|
columns: computedColumns,
|
|
379
|
-
columnsGroup:
|
|
380
|
-
columnGroups:
|
|
505
|
+
columnsGroup: visibilityProjection.columnsGroup,
|
|
506
|
+
columnGroups: visibilityProjection.columnGroups,
|
|
381
507
|
data: displayData,
|
|
382
508
|
sourceData: resolvedData,
|
|
383
509
|
sourceIndexByVisibleIndex: processedResult.sourceIndexByVisibleIndex,
|
|
@@ -392,6 +518,7 @@ function BGrid(_a) {
|
|
|
392
518
|
dataQuery: resolvedDataQuery,
|
|
393
519
|
dataControl: resolvedDataControl,
|
|
394
520
|
icons: icons,
|
|
521
|
+
columnVisibilityState: columnVisibilityState,
|
|
395
522
|
searchOptions: resolvedSearchOptions,
|
|
396
523
|
contextMenuOptions: resolvedContextMenuOptions,
|
|
397
524
|
page: resolvedPage,
|
|
@@ -445,13 +572,14 @@ function BGrid(_a) {
|
|
|
445
572
|
resolvedRowChecked,
|
|
446
573
|
computedColumns,
|
|
447
574
|
resolvedReorder,
|
|
448
|
-
|
|
449
|
-
|
|
575
|
+
visibilityProjection.columnsGroup,
|
|
576
|
+
visibilityProjection.columnGroups,
|
|
450
577
|
resolvedSort,
|
|
451
578
|
sortParams,
|
|
452
579
|
resolvedDataQuery,
|
|
453
580
|
resolvedDataControl,
|
|
454
581
|
icons,
|
|
582
|
+
columnVisibilityState,
|
|
455
583
|
resolvedSearchOptions,
|
|
456
584
|
resolvedContextMenuOptions,
|
|
457
585
|
loading,
|
|
@@ -476,15 +604,15 @@ function BGrid(_a) {
|
|
|
476
604
|
]);
|
|
477
605
|
return (React.createElement(store_1.AppStoreProvider, { initialState: initialStoreState },
|
|
478
606
|
React.createElement(Table_1.default, { ref: ref, columns: computedColumns,
|
|
479
|
-
columnsGroup:
|
|
480
|
-
columnGroups:
|
|
607
|
+
columnsGroup: visibilityProjection.columnsGroup,
|
|
608
|
+
columnGroups: visibilityProjection.columnGroups,
|
|
481
609
|
onChangeColumns: resolvedOnChangeColumns, width: width, height: height, className: className, style: style, loading: loading, spinning: spinning, scrollLeft: scrollLeft, scrollTop: scrollTop, headerHeight: headerHeight, footerHeight: footerHeight, bottomBarHeight: resolvedBottomBarHeight,
|
|
482
610
|
scrollbar: resolvedScrollbar,
|
|
483
611
|
status: resolvedStatus,
|
|
484
612
|
pagination: resolvedPagination, summaryHeight: summaryHeight, itemHeight: itemHeight, itemPadding: itemPadding, frozenColumnIndex: resolvedFrozenColumnIndex,
|
|
485
613
|
frozenRowCount: resolvedFrozenRowCount,
|
|
486
614
|
rowChecked: resolvedRowChecked, checkedIndexesMap: checkedIndexesMap, sort: resolvedSort, sortParams: sortParams, dataQuery: resolvedDataQuery,
|
|
487
|
-
dataControl: resolvedDataControl, icons: icons, searchOptions: resolvedSearchOptions,
|
|
615
|
+
dataControl: resolvedDataControl, icons: icons, columnVisibilityState: columnVisibilityState, searchOptions: resolvedSearchOptions,
|
|
488
616
|
contextMenuOptions: resolvedContextMenuOptions,
|
|
489
617
|
page: resolvedPage,
|
|
490
618
|
data: displayData,
|
package/cjs/components/Table.js
CHANGED
|
@@ -269,6 +269,7 @@ function Table(props) {
|
|
|
269
269
|
setDataQuery: s.setDataQuery,
|
|
270
270
|
setDataControl: s.setDataControl,
|
|
271
271
|
setIcons: s.setIcons,
|
|
272
|
+
setColumnVisibilityState: s.setColumnVisibilityState,
|
|
272
273
|
setActiveToolbox: s.setActiveToolbox,
|
|
273
274
|
setRowKey: s.setRowKey,
|
|
274
275
|
setFocusedRowKey: s.setSelectedRowKey,
|
|
@@ -278,7 +279,7 @@ function Table(props) {
|
|
|
278
279
|
requestSearchOpen: s.requestSearchOpen,
|
|
279
280
|
openContextMenu: s.openContextMenu,
|
|
280
281
|
commitCheckboxCell: s.commitCheckboxCell,
|
|
281
|
-
}); })), setRowChecked = _16.setRowChecked, setCheckedIndexesMap = _16.setCheckedIndexesMap, setSort = _16.setSort, setSortParams = _16.setSortParams, setDataQuery = _16.setDataQuery, setDataControl = _16.setDataControl, setIcons = _16.setIcons, setActiveToolbox = _16.setActiveToolbox, setRowKey = _16.setRowKey, setFocusedRowKey = _16.setFocusedRowKey, setEditItem = _16.setEditItem, setSearchOptions = _16.setSearchOptions, setContextMenuOptions = _16.setContextMenuOptions, requestSearchOpen = _16.requestSearchOpen, openContextMenu = _16.openContextMenu, commitCheckboxCell = _16.commitCheckboxCell;
|
|
282
|
+
}); })), setRowChecked = _16.setRowChecked, setCheckedIndexesMap = _16.setCheckedIndexesMap, setSort = _16.setSort, setSortParams = _16.setSortParams, setDataQuery = _16.setDataQuery, setDataControl = _16.setDataControl, setIcons = _16.setIcons, setColumnVisibilityState = _16.setColumnVisibilityState, setActiveToolbox = _16.setActiveToolbox, setRowKey = _16.setRowKey, setFocusedRowKey = _16.setFocusedRowKey, setEditItem = _16.setEditItem, setSearchOptions = _16.setSearchOptions, setContextMenuOptions = _16.setContextMenuOptions, requestSearchOpen = _16.requestSearchOpen, openContextMenu = _16.openContextMenu, commitCheckboxCell = _16.commitCheckboxCell;
|
|
282
283
|
// [Selector Group 9] Pagination & Display Setters - 페이지/표시 설정자
|
|
283
284
|
var _17 = (0, store_1.useAppStore)((0, shallow_1.useShallow)(function (s) { return ({
|
|
284
285
|
setPage: s.setPage,
|
|
@@ -443,16 +444,16 @@ function Table(props) {
|
|
|
443
444
|
}, offsetTop: !topQuadrant && virtualScrollWindowMetrics.enabled ? virtualScrollBase : 0 }));
|
|
444
445
|
};
|
|
445
446
|
var visibleScrollableRows = React.useMemo(function () {
|
|
446
|
-
var _a;
|
|
447
|
+
var _a, _b, _c;
|
|
447
448
|
return (0, utils_1.getVisibleScrollableRowRange)({
|
|
448
449
|
scrollTop: scrollTop,
|
|
449
450
|
viewportHeight: scrollableBodyHeight,
|
|
450
451
|
rowHeight: trHeight,
|
|
451
452
|
frozenRowCount: frozenRowCount,
|
|
452
453
|
totalRowCount: data.length,
|
|
453
|
-
overscan: scrollOverscanRows,
|
|
454
|
-
leadingOverscan: scrollOverscanRows,
|
|
455
|
-
windowSize: ((
|
|
454
|
+
overscan: ((_a = props.reorder) === null || _a === void 0 ? void 0 : _a.enabled) ? 1 : scrollOverscanRows,
|
|
455
|
+
leadingOverscan: ((_b = props.reorder) === null || _b === void 0 ? void 0 : _b.enabled) ? 0 : scrollOverscanRows,
|
|
456
|
+
windowSize: ((_c = props.reorder) === null || _c === void 0 ? void 0 : _c.enabled) ? 1 : KEYBOARD_NAVIGATION_ROW_WINDOW_SIZE,
|
|
456
457
|
});
|
|
457
458
|
}, [data.length, frozenRowCount, (_c = props.reorder) === null || _c === void 0 ? void 0 : _c.enabled, scrollOverscanRows, scrollTop, scrollableBodyHeight, trHeight]);
|
|
458
459
|
var frozenRowRange = React.useMemo(function () { return ({ startRowIndex: 0, endRowIndex: frozenRowCount }); }, [frozenRowCount]);
|
|
@@ -1568,6 +1569,7 @@ function Table(props) {
|
|
|
1568
1569
|
setSortParams(props.sortParams);
|
|
1569
1570
|
setDataControl(props.dataControl);
|
|
1570
1571
|
setIcons(props.icons);
|
|
1572
|
+
setColumnVisibilityState(props.columnVisibilityState);
|
|
1571
1573
|
setSearchOptions(props.searchOptions);
|
|
1572
1574
|
setContextMenuOptions(props.contextMenuOptions);
|
|
1573
1575
|
}, [
|
|
@@ -1576,6 +1578,7 @@ function Table(props) {
|
|
|
1576
1578
|
props.sortParams,
|
|
1577
1579
|
props.dataControl,
|
|
1578
1580
|
props.icons,
|
|
1581
|
+
props.columnVisibilityState,
|
|
1579
1582
|
props.searchOptions,
|
|
1580
1583
|
props.contextMenuOptions,
|
|
1581
1584
|
setRowChecked,
|
|
@@ -1583,6 +1586,7 @@ function Table(props) {
|
|
|
1583
1586
|
setSortParams,
|
|
1584
1587
|
setDataControl,
|
|
1585
1588
|
setIcons,
|
|
1589
|
+
setColumnVisibilityState,
|
|
1586
1590
|
setSearchOptions,
|
|
1587
1591
|
setContextMenuOptions,
|
|
1588
1592
|
]);
|
|
@@ -57,12 +57,15 @@ function TableHeadColumn(_a) {
|
|
|
57
57
|
var activeToolboxColumnId = (0, store_1.useAppStore)(function (s) { return s.activeToolboxColumnId; });
|
|
58
58
|
var setActiveToolbox = (0, store_1.useAppStore)(function (s) { return s.setActiveToolbox; });
|
|
59
59
|
var globalIcons = (0, store_1.useAppStore)(function (s) { return s.icons; });
|
|
60
|
+
var columnVisibilityState = (0, store_1.useAppStore)(function (s) { return s.columnVisibilityState; });
|
|
60
61
|
var columnId = (_b = column.columnId) !== null && _b !== void 0 ? _b : (0, utils_1.getColumnId)(column);
|
|
61
62
|
var buttonRef = (0, react_1.useRef)(null);
|
|
62
63
|
var reactId = React.useId().replace(/:/g, '');
|
|
63
64
|
var triggerId = "bgrid-toolbox-btn-".concat(reactId);
|
|
64
65
|
var dialogId = "bgrid-toolbox-dialog-".concat(reactId);
|
|
65
|
-
var
|
|
66
|
+
var visibilityItem = columnVisibilityState === null || columnVisibilityState === void 0 ? void 0 : columnVisibilityState.items.find(function (item) { return item.columnId === columnId; });
|
|
67
|
+
var isVisibilityMenuEnabled = !!columnVisibilityState && (!!(visibilityItem === null || visibilityItem === void 0 ? void 0 : visibilityItem.hideable) || columnVisibilityState.items.some(function (item) { return item.hidden; }));
|
|
68
|
+
var isToolboxEnabled = !!column.toolbox || isVisibilityMenuEnabled;
|
|
66
69
|
var isToolboxOpen = activeToolboxColumnId === columnId;
|
|
67
70
|
var columnIcons = typeof column.toolbox === 'object' ? column.toolbox.icons : undefined;
|
|
68
71
|
var hasCheckboxHeader = ((_c = column.editor) === null || _c === void 0 ? void 0 : _c.type) === 'checkbox' && !!column.editor.header;
|
|
@@ -75,11 +75,13 @@ exports.TableHeadToolbox = TableHeadToolbox;
|
|
|
75
75
|
var React = __importStar(require("react"));
|
|
76
76
|
var react_1 = require("react");
|
|
77
77
|
var react_dom_1 = require("react-dom");
|
|
78
|
+
var store_1 = require("../../store");
|
|
78
79
|
var ToolboxSortSection_1 = require("./ToolboxSortSection");
|
|
79
80
|
var ToolboxValueFilterSection_1 = require("./ToolboxValueFilterSection");
|
|
80
81
|
var ToolboxTextFilterSection_1 = require("./ToolboxTextFilterSection");
|
|
81
82
|
var ToolboxNumberFilterSection_1 = require("./ToolboxNumberFilterSection");
|
|
82
83
|
var ToolboxCustomSection_1 = require("./ToolboxCustomSection");
|
|
84
|
+
var ToolboxColumnVisibilitySection_1 = require("./ToolboxColumnVisibilitySection");
|
|
83
85
|
var EditorPortalRoot_1 = require("../EditorPortalRoot");
|
|
84
86
|
function readToolboxTheme(anchorEl) {
|
|
85
87
|
var e_1, _a;
|
|
@@ -155,6 +157,7 @@ function TableHeadToolbox(_a) {
|
|
|
155
157
|
var popoverRef = (0, react_1.useRef)(null);
|
|
156
158
|
var floatingPortal = React.useContext(EditorPortalRoot_1.EditorPortalContext);
|
|
157
159
|
var _d = __read((0, react_1.useState)({ top: -9999, left: -9999 }), 2), position = _d[0], setPosition = _d[1];
|
|
160
|
+
var _e = __read((0, react_1.useState)('menu'), 2), visibilityMode = _e[0], setVisibilityMode = _e[1];
|
|
158
161
|
var toolboxThemeStyle = React.useMemo(function () { return readToolboxTheme(anchorEl); }, [anchorEl]);
|
|
159
162
|
var toolboxConfig = typeof column.toolbox === 'object' ? column.toolbox : undefined;
|
|
160
163
|
var showSort = column.sortDisable !== true &&
|
|
@@ -162,6 +165,7 @@ function TableHeadToolbox(_a) {
|
|
|
162
165
|
var filterType = typeof column.filter === 'object' && ((_b = column.filter) === null || _b === void 0 ? void 0 : _b.type) ? column.filter.type : 'values';
|
|
163
166
|
var showFilter = column.filter !== false &&
|
|
164
167
|
(column.toolbox === true || (toolboxConfig === null || toolboxConfig === void 0 ? void 0 : toolboxConfig.filter) === true);
|
|
168
|
+
var showColumnVisibility = !!(0, store_1.useAppStore)(function (s) { return s.columnVisibilityState; });
|
|
165
169
|
// Position calculation with boundary adjustments
|
|
166
170
|
var updatePosition = React.useCallback(function () {
|
|
167
171
|
if (!anchorEl || !anchorEl.isConnected || !popoverRef.current) {
|
|
@@ -299,10 +303,11 @@ function TableHeadToolbox(_a) {
|
|
|
299
303
|
if (typeof document === 'undefined')
|
|
300
304
|
return null;
|
|
301
305
|
return (0, react_dom_1.createPortal)(React.createElement("div", { ref: popoverRef, id: dialogId, role: "dialog", "aria-modal": "true", "aria-labelledby": triggerId, className: "bgrid-toolbox-popover", style: __assign(__assign({}, toolboxThemeStyle), { top: "".concat(position.top, "px"), left: "".concat(position.left, "px") }), onClick: function (e) { return e.stopPropagation(); } },
|
|
302
|
-
showSort && React.createElement(ToolboxSortSection_1.ToolboxSortSection, { column: column, columnId: columnId }),
|
|
303
|
-
showFilter && (React.createElement(React.Fragment, null,
|
|
306
|
+
visibilityMode === 'menu' && showSort && React.createElement(ToolboxSortSection_1.ToolboxSortSection, { column: column, columnId: columnId }),
|
|
307
|
+
visibilityMode === 'menu' && showFilter && (React.createElement(React.Fragment, null,
|
|
304
308
|
filterType === 'values' && (React.createElement(ToolboxValueFilterSection_1.ToolboxValueFilterSection, { column: column, columnId: columnId })),
|
|
305
309
|
filterType === 'text' && (React.createElement(ToolboxTextFilterSection_1.ToolboxTextFilterSection, { column: column, columnId: columnId })),
|
|
306
310
|
filterType === 'number' && (React.createElement(ToolboxNumberFilterSection_1.ToolboxNumberFilterSection, { column: column, columnId: columnId })))),
|
|
307
|
-
toolboxConfig && (React.createElement(ToolboxCustomSection_1.ToolboxCustomSection, { column: column, columnId: columnId, columnIndex: columnIndex, config: toolboxConfig, close: onClose }))
|
|
311
|
+
visibilityMode === 'menu' && toolboxConfig && (React.createElement(ToolboxCustomSection_1.ToolboxCustomSection, { column: column, columnId: columnId, columnIndex: columnIndex, config: toolboxConfig, close: onClose })),
|
|
312
|
+
showColumnVisibility && (React.createElement(ToolboxColumnVisibilitySection_1.ToolboxColumnVisibilitySection, { column: column, columnId: columnId, mode: visibilityMode, onModeChange: setVisibilityMode, close: onClose }))), (_c = floatingPortal === null || floatingPortal === void 0 ? void 0 : floatingPortal.portalRef.current) !== null && _c !== void 0 ? _c : document.body);
|
|
308
313
|
}
|