impact-ui 4.0.15-alpha.2 → 4.0.16

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.
Files changed (57) hide show
  1. package/dist/_virtual/index4.js +2 -4
  2. package/dist/_virtual/index5.js +3 -3
  3. package/dist/_virtual/index6.js +4 -2
  4. package/dist/components/Input/index.d.ts.map +1 -1
  5. package/dist/components/Input/index.js +2 -3
  6. package/dist/components/Notification/NotificationBody/NotificationList/NotificationListItem.d.ts.map +1 -1
  7. package/dist/components/Notification/NotificationBody/NotificationList/NotificationListItem.js +6 -31
  8. package/dist/components/Notification/NotificationBody/NotificationPanelContent.js +2 -2
  9. package/dist/components/Notification/NotificationBody/NotificationTaskList.js +1 -2
  10. package/dist/components/Notification/index.js +1 -1
  11. package/dist/components/Table/Table.types.d.ts +4 -0
  12. package/dist/components/Table/Table.types.d.ts.map +1 -1
  13. package/dist/components/Table/index.d.ts.map +1 -1
  14. package/dist/components/Table/index.js +11 -4
  15. package/dist/components/Table/tableFunctions.d.ts +1 -0
  16. package/dist/components/Table/tableFunctions.d.ts.map +1 -1
  17. package/dist/components/Table/tableHeader.d.ts +2 -1
  18. package/dist/components/Table/tableHeader.d.ts.map +1 -1
  19. package/dist/components/Table/tableHeader.js +2 -0
  20. package/dist/components/Table/tableMoreOptions.d.ts +2 -1
  21. package/dist/components/Table/tableMoreOptions.d.ts.map +1 -1
  22. package/dist/components/Table/tableMoreOptions.js +46 -2
  23. package/dist/components/Table/tableSettings.d.ts.map +1 -1
  24. package/dist/components/Table/tableSettings.js +3 -2
  25. package/dist/components/TableOld/index.d.ts.map +1 -1
  26. package/dist/components/TableOld/index.js +23 -9
  27. package/dist/components/TableOld/tableFunctions.d.ts +1 -0
  28. package/dist/components/TableOld/tableFunctions.d.ts.map +1 -1
  29. package/dist/components/TableOld/tableHeader.d.ts +2 -1
  30. package/dist/components/TableOld/tableHeader.d.ts.map +1 -1
  31. package/dist/components/TableOld/tableHeader.js +2 -0
  32. package/dist/components/shared/tableColumnSettings/agGridColumnSettingsApi.d.ts +17 -0
  33. package/dist/components/shared/tableColumnSettings/agGridColumnSettingsApi.d.ts.map +1 -0
  34. package/dist/components/shared/tableColumnSettings/agGridColumnSettingsApi.js +52 -0
  35. package/dist/components/shared/tableColumnSettings/columnsSettingsColumnRow.d.ts +12 -0
  36. package/dist/components/shared/tableColumnSettings/columnsSettingsColumnRow.d.ts.map +1 -0
  37. package/dist/components/shared/tableColumnSettings/columnsSettingsColumnRow.js +262 -0
  38. package/dist/components/shared/tableColumnSettings/columnsSettingsVirtualList.d.ts +39 -0
  39. package/dist/components/shared/tableColumnSettings/columnsSettingsVirtualList.d.ts.map +1 -0
  40. package/dist/components/shared/tableColumnSettings/columnsSettingsVirtualList.js +294 -0
  41. package/dist/components/shared/tableColumnSettings/columnsTabV36.d.ts +4 -0
  42. package/dist/components/shared/tableColumnSettings/columnsTabV36.d.ts.map +1 -0
  43. package/dist/components/shared/tableColumnSettings/columnsTabV36.js +1523 -0
  44. package/dist/components/shared/tableColumnSettings/index.d.ts +4 -0
  45. package/dist/components/shared/tableColumnSettings/index.d.ts.map +1 -0
  46. package/dist/components/shared/tableColumnSettings/tableSettingsV36.d.ts +41 -0
  47. package/dist/components/shared/tableColumnSettings/tableSettingsV36.d.ts.map +1 -0
  48. package/dist/components/shared/tableColumnSettings/tableSettingsV36.js +327 -0
  49. package/dist/mcp-component-registry.json +7 -1
  50. package/dist/node_modules/@impactsmartsuite/impact-icons/dist/index.js +128 -75
  51. package/dist/node_modules/@mui/system/colorManipulator.js +2 -2
  52. package/dist/node_modules/prop-types/node_modules/react-is/index.js +1 -1
  53. package/dist/stories/tableStoryDefaults.d.ts +18 -0
  54. package/dist/stories/tableStoryDefaults.d.ts.map +1 -0
  55. package/dist/stories/tableStoryManyColumns.d.ts +44 -0
  56. package/dist/stories/tableStoryManyColumns.d.ts.map +1 -0
  57. package/package.json +1 -1
@@ -0,0 +1,1523 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { forwardRef, useState, useRef, useMemo, useEffect, useLayoutEffect, useCallback } from "react";
3
+ import { useSensors, useSensor, MouseSensor, TouchSensor, DndContext, closestCenter, DragOverlay } from "@dnd-kit/core";
4
+ import { arrayMove, SortableContext } from "@dnd-kit/sortable";
5
+ import { PersonUser as PersonUser_default, Globe as Globe_default } from "../../../node_modules/@impactsmartsuite/impact-icons/dist/index.js";
6
+ import default_1$1 from "../../../node_modules/@mui/icons-material/KeyboardArrowDown.js";
7
+ import default_1$3 from "../../../node_modules/@mui/icons-material/KeyboardArrowRight.js";
8
+ import default_1 from "../../../node_modules/@mui/icons-material/KeyboardArrowUp.js";
9
+ import default_1$2 from "../../../node_modules/@mui/icons-material/Search.js";
10
+ import { getAssetUrl } from "../../../utils/assetBase.js";
11
+ import { applyVisibilityMapToGrid, resolveColumnStateApi } from "./agGridColumnSettingsApi.js";
12
+ import { SortableColumnItem, NestedColumnItem, capitalizeHeader } from "./columnsSettingsColumnRow.js";
13
+ import { flattenColumnRows, SETTINGS_VIRTUALIZE_THRESHOLD, computeSettingsListHeights, buildCheckStateMap, scrollListTowardPointer, VirtualColumnList, FrozenListOuter, ScrollableListOuter } from "./columnsSettingsVirtualList.js";
14
+ import { debounce } from "../../../utils/debounce.js";
15
+ import { isViewNameUnique } from "../../../utils/helper.js";
16
+ import { Badge } from "../../Badge/index.js";
17
+ import { Button } from "../../Button/index.js";
18
+ import { Checkbox } from "../../Checkbox/index.js";
19
+ import { Input } from "../../Input/index.js";
20
+ import { Modal } from "../../Modal/index.js";
21
+ import { Prompt } from "../../Prompt/index.js";
22
+ import { RadioButtonGroup } from "../../RadioButtonGroup/index.js";
23
+ import { Select } from "../../Select/index.js";
24
+ import IconButton from "../../../node_modules/@mui/material/IconButton/IconButton.js";
25
+ import DragIndicator from "../../../node_modules/@mui/icons-material/esm/DragIndicator.js";
26
+ const saveViewIcon = getAssetUrl("icons/saveViewIcon.svg");
27
+ const saveViewEditIcon = getAssetUrl("icons/saveViewEditIcon.svg");
28
+ const saveViewDeleteIcon = getAssetUrl("icons/saveViewDeleteIcon.svg");
29
+ const defaultViewIcon = getAssetUrl("icons/defaultViewIcon.svg");
30
+ const defaultViewActiveIcon = getAssetUrl("icons/defaultViewIconActive.svg");
31
+ const DEFAULT_VIEW_TYPE_ICONS = {
32
+ global: /* @__PURE__ */ jsx(Globe_default, { height: 16, width: 16 }),
33
+ personal: /* @__PURE__ */ jsx(PersonUser_default, { height: 16, width: 16 })
34
+ };
35
+ const getViewTypeIcon = (viewType, viewTypeOptions) => {
36
+ var _a;
37
+ const customIcon = (_a = viewTypeOptions == null ? void 0 : viewTypeOptions.find((option) => option.value === viewType)) == null ? void 0 : _a.icon;
38
+ return customIcon || DEFAULT_VIEW_TYPE_ICONS[viewType] || null;
39
+ };
40
+ const filterColumnsBySearch = (columns, searchText) => {
41
+ if (!searchText) return columns;
42
+ return columns.map((column) => {
43
+ const matches = column.headerName.toLowerCase().includes(searchText);
44
+ const filteredChildren = column.children ? filterColumnsBySearch(column.children, searchText) : null;
45
+ if (matches || (filteredChildren == null ? void 0 : filteredChildren.length) > 0) {
46
+ return {
47
+ ...column,
48
+ children: filteredChildren
49
+ };
50
+ }
51
+ return null;
52
+ }).filter(Boolean);
53
+ };
54
+ const getDirectColumnIds = (columns) => (columns || []).map((col) => col.colId).filter(Boolean);
55
+ const getTopLevelColumnIds = getDirectColumnIds;
56
+ const findColumnById = (columns, colId) => {
57
+ var _a;
58
+ for (const col of columns || []) {
59
+ if (col.colId === colId) return col;
60
+ if ((_a = col.children) == null ? void 0 : _a.length) {
61
+ const found = findColumnById(col.children, colId);
62
+ if (found) return found;
63
+ }
64
+ }
65
+ return null;
66
+ };
67
+ const findColumnLocation = (columns, colId, parent = null) => {
68
+ var _a;
69
+ for (const col of columns || []) {
70
+ if (col.colId === colId) {
71
+ return { column: col, parent, siblings: columns };
72
+ }
73
+ if ((_a = col.children) == null ? void 0 : _a.length) {
74
+ const found = findColumnLocation(col.children, colId, col);
75
+ if (found) return found;
76
+ }
77
+ }
78
+ return null;
79
+ };
80
+ const reorderSiblingsInTree = (columns, parentId, siblingOrder) => (columns || []).map((col) => {
81
+ var _a, _b;
82
+ if (col.colId === parentId && ((_a = col.children) == null ? void 0 : _a.length)) {
83
+ const byId = new Map(col.children.map((c) => [c.colId, c]));
84
+ const ordered = siblingOrder.map((id) => byId.get(id)).filter(Boolean);
85
+ const orderedSet = new Set(siblingOrder);
86
+ const rest = col.children.filter((c) => !orderedSet.has(c.colId));
87
+ return { ...col, children: [...ordered, ...rest] };
88
+ }
89
+ if ((_b = col.children) == null ? void 0 : _b.length) {
90
+ return {
91
+ ...col,
92
+ children: reorderSiblingsInTree(col.children, parentId, siblingOrder)
93
+ };
94
+ }
95
+ return col;
96
+ });
97
+ const collectLeafColIds = (column) => {
98
+ var _a;
99
+ if (!((_a = column == null ? void 0 : column.children) == null ? void 0 : _a.length)) {
100
+ return (column == null ? void 0 : column.colId) ? [column.colId] : [];
101
+ }
102
+ return column.children.flatMap((child) => collectLeafColIds(child));
103
+ };
104
+ const buildOrderedLeafIds = (topLevelColumns, topLevelOrder) => {
105
+ const byId = new Map(topLevelColumns.map((c) => [c.colId, c]));
106
+ return topLevelOrder.flatMap((id) => {
107
+ const col = byId.get(id);
108
+ return col ? collectLeafColIds(col) : [id];
109
+ });
110
+ };
111
+ const applyColumnReorderToGrid = (gridApi, { allColumns, frozenOrder, scrollableOrder, pinChanges, childReorder }, gridRef) => {
112
+ if (!gridApi) return;
113
+ const stateApi = resolveColumnStateApi(gridApi, gridRef) ?? gridApi;
114
+ let columns = allColumns;
115
+ if ((childReorder == null ? void 0 : childReorder.parentId) && (childReorder == null ? void 0 : childReorder.siblingOrder)) {
116
+ columns = reorderSiblingsInTree(columns, childReorder.parentId, childReorder.siblingOrder);
117
+ }
118
+ const byId = new Map(columns.map((c) => [c.colId, c]));
119
+ if (pinChanges == null ? void 0 : pinChanges.length) {
120
+ const pinState = [];
121
+ pinChanges.forEach(({ colId, pinned }) => {
122
+ const col = byId.get(colId) || findColumnById(columns, colId);
123
+ const leafIds = col ? collectLeafColIds(col) : [colId];
124
+ leafIds.forEach((leafId) => {
125
+ pinState.push({ colId: leafId, pinned });
126
+ });
127
+ });
128
+ stateApi.applyColumnState({ state: pinState });
129
+ }
130
+ const orderedLeafIds = [
131
+ ...buildOrderedLeafIds(columns, frozenOrder),
132
+ ...buildOrderedLeafIds(columns, scrollableOrder)
133
+ ];
134
+ const seen = /* @__PURE__ */ new Set();
135
+ const uniqueLeafIds = orderedLeafIds.filter((id) => {
136
+ if (seen.has(id)) return false;
137
+ seen.add(id);
138
+ return true;
139
+ });
140
+ stateApi.applyColumnState({
141
+ state: uniqueLeafIds.map((colId) => ({ colId })),
142
+ applyOrder: true
143
+ });
144
+ };
145
+ const collectLeafVisibility = (columns) => {
146
+ const leaves = [];
147
+ const walk = (cols) => {
148
+ cols.forEach((col) => {
149
+ var _a;
150
+ if (((_a = col.children) == null ? void 0 : _a.length) > 0) {
151
+ walk(col.children);
152
+ } else {
153
+ leaves.push(!!col.isVisible);
154
+ }
155
+ });
156
+ };
157
+ walk(columns);
158
+ return leaves;
159
+ };
160
+ const getCheckState = (columns) => {
161
+ const leaves = collectLeafVisibility(columns);
162
+ if (leaves.length === 0) {
163
+ return { checked: false, indeterminate: false };
164
+ }
165
+ const visibleCount = leaves.filter(Boolean).length;
166
+ if (visibleCount === 0) {
167
+ return { checked: false, indeterminate: false };
168
+ }
169
+ if (visibleCount === leaves.length) {
170
+ return { checked: true, indeterminate: false };
171
+ }
172
+ return { checked: true, indeterminate: true };
173
+ };
174
+ const applyVisibilityToggle = (columns, colId) => {
175
+ const visibilityMap = /* @__PURE__ */ new Map();
176
+ const updateChildren = (children, visibility) => children.map((column) => {
177
+ visibilityMap.set(column.colId, visibility);
178
+ return {
179
+ ...column,
180
+ isVisible: visibility,
181
+ children: column.children ? updateChildren(column.children, visibility) : null
182
+ };
183
+ });
184
+ const update = (cols) => {
185
+ let changed = false;
186
+ const next = cols.map((column) => {
187
+ if (column.colId === colId) {
188
+ changed = true;
189
+ const newVisibility = !column.isVisible;
190
+ visibilityMap.set(column.colId, newVisibility);
191
+ return {
192
+ ...column,
193
+ isVisible: newVisibility,
194
+ children: column.children ? updateChildren(column.children, newVisibility) : null
195
+ };
196
+ }
197
+ if (column.children) {
198
+ const updatedChildren = update(column.children);
199
+ if (updatedChildren === column.children) return column;
200
+ changed = true;
201
+ const isAnyChildVisible = updatedChildren.some((child) => child.isVisible);
202
+ visibilityMap.set(column.colId, isAnyChildVisible);
203
+ return {
204
+ ...column,
205
+ isVisible: isAnyChildVisible,
206
+ children: updatedChildren
207
+ };
208
+ }
209
+ return column;
210
+ });
211
+ return changed ? next : cols;
212
+ };
213
+ return { columns: update(columns), visibilityMap };
214
+ };
215
+ const applyVisibilityToAll = (columns, visibility) => {
216
+ const visibilityMap = /* @__PURE__ */ new Map();
217
+ const update = (cols) => cols.map((column) => {
218
+ visibilityMap.set(column.colId, visibility);
219
+ return {
220
+ ...column,
221
+ isVisible: visibility,
222
+ children: column.children ? update(column.children) : null
223
+ };
224
+ });
225
+ return { columns: update(columns), visibilityMap };
226
+ };
227
+ const mouseSensorOptions = { activationConstraint: { distance: 5 } };
228
+ const touchSensorOptions = { activationConstraint: { delay: 200, tolerance: 5 } };
229
+ const ColumnsV36 = forwardRef((props, ref) => {
230
+ var _a, _b, _c, _d, _e, _f;
231
+ const [frozenColumn, setFrozenColumn] = useState([]);
232
+ const [scrollableColumn, setScrollableColumn] = useState([]);
233
+ const [searchInputValue, setSearchInputValue] = useState("");
234
+ const [debouncedSearchText, setDebouncedSearchText] = useState("");
235
+ const [collapsedScrollable, setCollapsedScrollable] = useState(false);
236
+ const [collapsedColumn, setCollapsedcolumn] = useState(false);
237
+ const [collapsedScrollColumns, setCollapsedScrollColumns] = useState({});
238
+ const [collapsedFrozenColumns, setCollapsedFrozenColumns] = useState({});
239
+ const [activeDragId, setActiveDragId] = useState(null);
240
+ const reorderLiveRegionRef = useRef(null);
241
+ const [openSaveViewModal, setOpenSaveViewModal] = useState(false);
242
+ const [isDefaultView, setIsDefaultView] = useState(false);
243
+ const [selectedViewType, setSelectedViewType] = useState(
244
+ (_a = props.saveViewCustomFilter) == null ? void 0 : _a.selectedOption
245
+ );
246
+ const [savedViewsOptions, setSavedViewsOptions] = useState(props.savedViewsOptions || []);
247
+ const [filteredSavedViewsOptions, setFilteredSavedViewsOptions] = useState(
248
+ props.savedViewsOptions || []
249
+ );
250
+ const [currentSaveViewOptions, setCurrentSaveViewOptions] = useState([]);
251
+ const [selectedSavedView, setSelectedSavedView] = useState(null);
252
+ const [inputValue, setInputValue] = useState("");
253
+ const [isOpen, setIsOpen] = useState(false);
254
+ const [openSaveViewMenu, setOpenSaveViewMenu] = useState(false);
255
+ const [selectedBadge, setSelectedBadge] = useState("All");
256
+ const [isEditView, setIsEditView] = useState(false);
257
+ const [editedView, setEditedView] = useState(null);
258
+ const [saveViewSearchText, setSaveViewSearchText] = useState("");
259
+ const [openDeletePrompt, setOpenDeletePrompt] = useState(false);
260
+ const [deleteView, setDeleteView] = useState(null);
261
+ const [selectedView, setSelectedView] = useState(null);
262
+ const isDraggingRef = useRef(false);
263
+ const isInternalUpdateRef = useRef(false);
264
+ const isColumnPinnedRef = useRef(false);
265
+ const frozenListRef = useRef(null);
266
+ const scrollableListRef = useRef(null);
267
+ const collapseContainerRef = useRef(null);
268
+ const autoScrollRafRef = useRef(null);
269
+ const dragPointerYRef = useRef(null);
270
+ const debouncedSetSearchText = useMemo(
271
+ () => debounce((value) => {
272
+ setDebouncedSearchText(value);
273
+ }, 150),
274
+ []
275
+ );
276
+ useEffect(
277
+ () => () => {
278
+ debouncedSetSearchText.cancel();
279
+ if (autoScrollRafRef.current != null) {
280
+ cancelAnimationFrame(autoScrollRafRef.current);
281
+ autoScrollRafRef.current = null;
282
+ }
283
+ },
284
+ [debouncedSetSearchText]
285
+ );
286
+ const filteredFrozenColumns = useMemo(
287
+ () => filterColumnsBySearch(frozenColumn, debouncedSearchText),
288
+ [frozenColumn, debouncedSearchText]
289
+ );
290
+ const filteredScrollableColumns = useMemo(
291
+ () => filterColumnsBySearch(scrollableColumn, debouncedSearchText),
292
+ [scrollableColumn, debouncedSearchText]
293
+ );
294
+ const frozenColumnOrder = useMemo(
295
+ () => getTopLevelColumnIds(
296
+ filteredFrozenColumns.filter((c) => c.headerName !== "N/A" && c.isVisible !== false)
297
+ ),
298
+ [filteredFrozenColumns]
299
+ );
300
+ const scrollableColumnOrder = useMemo(
301
+ () => getTopLevelColumnIds(
302
+ filteredScrollableColumns.filter((c) => c.headerName !== "N/A" && c.isVisible !== false)
303
+ ),
304
+ [filteredScrollableColumns]
305
+ );
306
+ const fullFrozenOrder = useMemo(
307
+ () => getTopLevelColumnIds(frozenColumn.filter((c) => c.headerName !== "N/A")),
308
+ [frozenColumn]
309
+ );
310
+ const fullScrollableOrder = useMemo(
311
+ () => getTopLevelColumnIds(scrollableColumn.filter((c) => c.headerName !== "N/A")),
312
+ [scrollableColumn]
313
+ );
314
+ const frozenRows = useMemo(
315
+ () => flattenColumnRows(filteredFrozenColumns, collapsedFrozenColumns, "frozen"),
316
+ [filteredFrozenColumns, collapsedFrozenColumns]
317
+ );
318
+ const scrollableRows = useMemo(
319
+ () => collapsedScrollable ? [] : flattenColumnRows(filteredScrollableColumns, collapsedScrollColumns, "scrollable"),
320
+ [filteredScrollableColumns, collapsedScrollColumns, collapsedScrollable]
321
+ );
322
+ const shouldVirtualize = frozenRows.length + scrollableRows.length > SETTINGS_VIRTUALIZE_THRESHOLD;
323
+ const [listViewportHeight, setListViewportHeight] = useState(0);
324
+ useLayoutEffect(() => {
325
+ const el = collapseContainerRef.current;
326
+ if (!el || !shouldVirtualize) return void 0;
327
+ const measure = () => {
328
+ setListViewportHeight(el.clientHeight);
329
+ };
330
+ measure();
331
+ if (typeof ResizeObserver === "undefined") {
332
+ window.addEventListener("resize", measure);
333
+ return () => {
334
+ window.removeEventListener("resize", measure);
335
+ };
336
+ }
337
+ const observer = new ResizeObserver(measure);
338
+ observer.observe(el);
339
+ return () => {
340
+ observer.disconnect();
341
+ };
342
+ }, [shouldVirtualize, collapsedColumn, props.isSaveViewEnabled]);
343
+ const listHeights = useMemo(
344
+ () => computeSettingsListHeights({
345
+ shouldVirtualize,
346
+ listViewportHeight,
347
+ frozenRowCount: frozenRows.length,
348
+ scrollableRowCount: scrollableRows.length
349
+ }),
350
+ [shouldVirtualize, listViewportHeight, frozenRows.length, scrollableRows.length]
351
+ );
352
+ const checkStateMap = useMemo(
353
+ () => buildCheckStateMap([filteredFrozenColumns, filteredScrollableColumns]),
354
+ [filteredFrozenColumns, filteredScrollableColumns]
355
+ );
356
+ const sortableItems = useMemo(() => {
357
+ if (!shouldVirtualize) {
358
+ return [...scrollableColumnOrder, ...frozenColumnOrder];
359
+ }
360
+ return [...scrollableRows, ...frozenRows].filter((row) => row.column.isVisible !== false).map((row) => row.column.colId);
361
+ }, [shouldVirtualize, scrollableColumnOrder, frozenColumnOrder, scrollableRows, frozenRows]);
362
+ const allColumnsForLookup = useMemo(
363
+ () => [...frozenColumn, ...scrollableColumn],
364
+ [frozenColumn, scrollableColumn]
365
+ );
366
+ const activeDragColumn = useMemo(
367
+ () => activeDragId ? findColumnById(allColumnsForLookup, activeDragId) : null,
368
+ [activeDragId, allColumnsForLookup]
369
+ );
370
+ const mainCheckState = useMemo(
371
+ () => getCheckState(filteredScrollableColumns),
372
+ [filteredScrollableColumns]
373
+ );
374
+ const allCheckState = useMemo(
375
+ () => getCheckState([...filteredFrozenColumns, ...filteredScrollableColumns]),
376
+ [filteredFrozenColumns, filteredScrollableColumns]
377
+ );
378
+ const mainChecked = mainCheckState.checked;
379
+ const allColumnVisibility = allCheckState.checked;
380
+ const sensors = useSensors(
381
+ useSensor(MouseSensor, mouseSensorOptions),
382
+ useSensor(TouchSensor, touchSensorOptions)
383
+ );
384
+ useEffect(() => {
385
+ const views = props.savedViewsOptions ?? [];
386
+ setSavedViewsOptions(views);
387
+ setFilteredSavedViewsOptions(views);
388
+ setSelectedView(views.filter((view) => view.isActive));
389
+ if (views.length === 0) {
390
+ setOpenSaveViewMenu(false);
391
+ setSaveViewSearchText("");
392
+ }
393
+ const matchingViews = views.filter(
394
+ (view) => !selectedViewType || view.viewType === selectedViewType
395
+ );
396
+ setCurrentSaveViewOptions(
397
+ views.map((view) => {
398
+ var _a2;
399
+ return {
400
+ label: /* @__PURE__ */ jsxs("span", { className: "save-view-select-option-label", children: [
401
+ /* @__PURE__ */ jsx("span", { className: "save-view-select-option-icon", children: getViewTypeIcon(view.viewType, (_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.options) }),
402
+ view.viewName
403
+ ] }),
404
+ value: view.viewName,
405
+ disabled: view == null ? void 0 : view.isDisabled,
406
+ viewType: view.viewType,
407
+ isDefaultView: view.isDefaultView
408
+ };
409
+ })
410
+ );
411
+ setSelectedSavedView(
412
+ (prev) => (prev == null ? void 0 : prev.value) && matchingViews.some((view) => view.viewName === prev.value) ? prev : null
413
+ );
414
+ }, [props.savedViewsOptions, selectedViewType]);
415
+ useEffect(() => {
416
+ if (selectedSavedView == null ? void 0 : selectedSavedView.value) {
417
+ setInputValue(selectedSavedView.value);
418
+ setSelectedViewType(selectedSavedView.viewType);
419
+ setIsDefaultView(!!selectedSavedView.isDefaultView);
420
+ } else {
421
+ setInputValue("");
422
+ setIsDefaultView(false);
423
+ }
424
+ }, [selectedSavedView]);
425
+ const isReplaceViewSelected = !!(selectedSavedView == null ? void 0 : selectedSavedView.value);
426
+ const isInputValueEmpty = !inputValue.trim();
427
+ const getColumnDefs = useCallback((columns) => {
428
+ return columns.map((column) => {
429
+ if (column.children) {
430
+ const updatedChildren = getColumnDefs(column.children);
431
+ const allChildrenHidden = updatedChildren.every((child) => child.hide === true);
432
+ return {
433
+ ...column,
434
+ children: updatedChildren,
435
+ hide: allChildrenHidden
436
+ };
437
+ }
438
+ return column;
439
+ });
440
+ }, []);
441
+ const updateColumnState = useCallback(() => {
442
+ var _a2, _b2;
443
+ const getColumnState = (columns) => columns.map((column) => {
444
+ var _a3;
445
+ return {
446
+ colId: column.colId || column.field || column.headerName,
447
+ headerName: column.headerName || column.field || "N/A",
448
+ isVisible: !(column == null ? void 0 : column.hide),
449
+ isPinned: column.pinned ? true : false,
450
+ children: ((_a3 = column == null ? void 0 : column.children) == null ? void 0 : _a3.length) > 0 ? getColumnState(column.children) : null,
451
+ disabled: column == null ? void 0 : column.disableColumnCheckboxInSettings
452
+ };
453
+ });
454
+ const columnDefs = getColumnDefs(((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api) == null ? void 0 : _b2.getColumnDefs()) || props.column);
455
+ const columnState = getColumnState(columnDefs);
456
+ const { frozColumn, scrollColumn } = (columnState || []).reduce(
457
+ (acc, column) => {
458
+ if (column.isPinned) {
459
+ acc.frozColumn.push(column);
460
+ } else {
461
+ acc.scrollColumn.push(column);
462
+ }
463
+ return acc;
464
+ },
465
+ { frozColumn: [], scrollColumn: [] }
466
+ );
467
+ setFrozenColumn(frozColumn);
468
+ setScrollableColumn(scrollColumn);
469
+ }, [getColumnDefs, ref, props.column]);
470
+ const debouncedUpdateColumnState = useMemo(
471
+ () => debounce(updateColumnState, 100),
472
+ [updateColumnState]
473
+ );
474
+ const isColumnsPanelOpen = props.showTableSetting ?? props.showMenu;
475
+ useEffect(() => {
476
+ var _a2, _b2, _c2, _d2, _e2, _f2;
477
+ if (isColumnsPanelOpen || isColumnPinnedRef.current) {
478
+ isColumnPinnedRef.current = false;
479
+ updateColumnState();
480
+ const onColumnEvent = () => {
481
+ if (isDraggingRef.current || isInternalUpdateRef.current) {
482
+ return;
483
+ }
484
+ isColumnPinnedRef.current = true;
485
+ debouncedUpdateColumnState();
486
+ };
487
+ if (ref == null ? void 0 : ref.current) {
488
+ (_b2 = (_a2 = ref.current) == null ? void 0 : _a2.api) == null ? void 0 : _b2.addEventListener("columnPinned", onColumnEvent);
489
+ (_d2 = (_c2 = ref.current) == null ? void 0 : _c2.api) == null ? void 0 : _d2.addEventListener("columnMoved", onColumnEvent);
490
+ (_f2 = (_e2 = ref.current) == null ? void 0 : _e2.api) == null ? void 0 : _f2.addEventListener("columnVisible", onColumnEvent);
491
+ }
492
+ return () => {
493
+ var _a3, _b3, _c3, _d3, _e3, _f3;
494
+ if (ref == null ? void 0 : ref.current) {
495
+ (_b3 = (_a3 = ref.current) == null ? void 0 : _a3.api) == null ? void 0 : _b3.removeEventListener("columnPinned", onColumnEvent);
496
+ (_d3 = (_c3 = ref.current) == null ? void 0 : _c3.api) == null ? void 0 : _d3.removeEventListener("columnMoved", onColumnEvent);
497
+ (_f3 = (_e3 = ref.current) == null ? void 0 : _e3.api) == null ? void 0 : _f3.removeEventListener("columnVisible", onColumnEvent);
498
+ }
499
+ };
500
+ }
501
+ }, [isColumnsPanelOpen, updateColumnState, debouncedUpdateColumnState, ref]);
502
+ const handleSearchChange = useCallback(
503
+ (e) => {
504
+ const value = e.target.value;
505
+ setSearchInputValue(value);
506
+ debouncedSetSearchText(value.toLowerCase());
507
+ },
508
+ [debouncedSetSearchText]
509
+ );
510
+ const toggleColumnVisibility = useCallback(
511
+ (colId, section) => {
512
+ var _a2;
513
+ const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
514
+ const setter = section === "frozen" ? setFrozenColumn : setScrollableColumn;
515
+ setter((prev) => {
516
+ const { columns, visibilityMap } = applyVisibilityToggle(prev, colId);
517
+ isInternalUpdateRef.current = true;
518
+ applyVisibilityMapToGrid(api, visibilityMap, ref);
519
+ queueMicrotask(() => {
520
+ isInternalUpdateRef.current = false;
521
+ });
522
+ return columns;
523
+ });
524
+ },
525
+ [ref]
526
+ );
527
+ const toggleColumnVisibilityFrozen = useCallback(
528
+ (colId) => {
529
+ toggleColumnVisibility(colId, "frozen");
530
+ },
531
+ [toggleColumnVisibility]
532
+ );
533
+ const toggleColumnVisibilityScroll = useCallback(
534
+ (colId) => {
535
+ toggleColumnVisibility(colId, "scrollable");
536
+ },
537
+ [toggleColumnVisibility]
538
+ );
539
+ const onMainCheckboxChange = useCallback(() => {
540
+ var _a2;
541
+ const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
542
+ const nextVisible = !mainChecked;
543
+ const filteredIds = debouncedSearchText ? new Set(getTopLevelColumnIds(filteredScrollableColumns)) : null;
544
+ setScrollableColumn((prev) => {
545
+ let result;
546
+ if (filteredIds) {
547
+ const visibilityMap = /* @__PURE__ */ new Map();
548
+ const update = (cols) => cols.map((column) => {
549
+ var _a3;
550
+ const inFilter = filteredIds.has(column.colId) || ((_a3 = column.children) == null ? void 0 : _a3.some((c) => filteredIds.has(c.colId)));
551
+ if (!inFilter) return column;
552
+ visibilityMap.set(column.colId, nextVisible);
553
+ return {
554
+ ...column,
555
+ isVisible: nextVisible,
556
+ children: column.children ? update(column.children) : null
557
+ };
558
+ });
559
+ result = { columns: update(prev), visibilityMap };
560
+ } else {
561
+ result = applyVisibilityToAll(prev, nextVisible);
562
+ }
563
+ isInternalUpdateRef.current = true;
564
+ applyVisibilityMapToGrid(api, result.visibilityMap, ref);
565
+ queueMicrotask(() => {
566
+ isInternalUpdateRef.current = false;
567
+ });
568
+ return result.columns;
569
+ });
570
+ }, [ref, mainChecked, filteredScrollableColumns, debouncedSearchText]);
571
+ const onAllColumnCheckBoxChange = useCallback(() => {
572
+ var _a2;
573
+ const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
574
+ const nextVisible = !allColumnVisibility;
575
+ const frozenResult = applyVisibilityToAll(frozenColumn, nextVisible);
576
+ const scrollResult = applyVisibilityToAll(scrollableColumn, nextVisible);
577
+ const combinedMap = new Map([...frozenResult.visibilityMap, ...scrollResult.visibilityMap]);
578
+ isInternalUpdateRef.current = true;
579
+ applyVisibilityMapToGrid(api, combinedMap, ref);
580
+ setFrozenColumn(frozenResult.columns);
581
+ setScrollableColumn(scrollResult.columns);
582
+ queueMicrotask(() => {
583
+ isInternalUpdateRef.current = false;
584
+ });
585
+ }, [ref, allColumnVisibility, frozenColumn, scrollableColumn]);
586
+ const toggleScrollableCollapse = useCallback((e) => {
587
+ e.stopPropagation();
588
+ setCollapsedScrollable((prev) => !prev);
589
+ }, []);
590
+ const toggleColumnCollapse = useCallback((e) => {
591
+ e.stopPropagation();
592
+ setCollapsedcolumn((prev) => !prev);
593
+ }, []);
594
+ const toggleScrollColumnCollapse = useCallback((colId) => {
595
+ setCollapsedScrollColumns((prev) => ({
596
+ ...prev,
597
+ [colId]: !prev[colId]
598
+ }));
599
+ }, []);
600
+ const toggleFrozenColumnCollapse = useCallback((colId) => {
601
+ setCollapsedFrozenColumns((prev) => ({
602
+ ...prev,
603
+ [colId]: !prev[colId]
604
+ }));
605
+ }, []);
606
+ const announceReorder = useCallback((colId, direction) => {
607
+ const el = reorderLiveRegionRef.current;
608
+ if (!el) return;
609
+ el.textContent = `Moved ${colId} ${direction === -1 ? "up" : "down"}`;
610
+ }, []);
611
+ const commitColumnReorder = useCallback(
612
+ ({ frozenOrder, scrollableOrder, pinChanges, childReorder, announce }) => {
613
+ var _a2;
614
+ const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
615
+ if (!api) return;
616
+ isInternalUpdateRef.current = true;
617
+ isDraggingRef.current = true;
618
+ applyColumnReorderToGrid(
619
+ api,
620
+ {
621
+ allColumns: allColumnsForLookup,
622
+ frozenOrder,
623
+ scrollableOrder,
624
+ pinChanges,
625
+ childReorder
626
+ },
627
+ ref
628
+ );
629
+ updateColumnState();
630
+ if (announce) {
631
+ announceReorder(announce.colId, announce.direction);
632
+ }
633
+ queueMicrotask(() => {
634
+ isDraggingRef.current = false;
635
+ isInternalUpdateRef.current = false;
636
+ });
637
+ },
638
+ [ref, allColumnsForLookup, updateColumnState, announceReorder]
639
+ );
640
+ const stopSettingsListAutoScroll = useCallback(() => {
641
+ if (autoScrollRafRef.current != null) {
642
+ cancelAnimationFrame(autoScrollRafRef.current);
643
+ autoScrollRafRef.current = null;
644
+ }
645
+ dragPointerYRef.current = null;
646
+ }, []);
647
+ const tickSettingsListAutoScroll = useCallback(() => {
648
+ autoScrollRafRef.current = null;
649
+ const y = dragPointerYRef.current;
650
+ if (y == null) return;
651
+ const moved = scrollListTowardPointer(frozenListRef.current, y) || scrollListTowardPointer(scrollableListRef.current, y);
652
+ if (moved) {
653
+ autoScrollRafRef.current = requestAnimationFrame(tickSettingsListAutoScroll);
654
+ }
655
+ }, []);
656
+ const handleDragStart = useCallback((event) => {
657
+ isDraggingRef.current = true;
658
+ setActiveDragId(event.active.id);
659
+ }, []);
660
+ const handleDragMove = useCallback(
661
+ (event) => {
662
+ var _a2, _b2, _c2, _d2;
663
+ if (!shouldVirtualize) return;
664
+ const translated = (_c2 = (_b2 = (_a2 = event.active) == null ? void 0 : _a2.rect) == null ? void 0 : _b2.current) == null ? void 0 : _c2.translated;
665
+ const y = translated ? translated.top + translated.height / 2 : (_d2 = event.activatorEvent) == null ? void 0 : _d2.clientY;
666
+ if (y == null) return;
667
+ dragPointerYRef.current = y;
668
+ if (autoScrollRafRef.current == null) {
669
+ autoScrollRafRef.current = requestAnimationFrame(tickSettingsListAutoScroll);
670
+ }
671
+ },
672
+ [shouldVirtualize, tickSettingsListAutoScroll]
673
+ );
674
+ const handleDragCancel = useCallback(() => {
675
+ stopSettingsListAutoScroll();
676
+ setActiveDragId(null);
677
+ isDraggingRef.current = false;
678
+ }, [stopSettingsListAutoScroll]);
679
+ const handleDragEnd = useCallback(
680
+ (event) => {
681
+ const { active, over } = event;
682
+ stopSettingsListAutoScroll();
683
+ setActiveDragId(null);
684
+ if (!over || active.id === over.id) {
685
+ isDraggingRef.current = false;
686
+ return;
687
+ }
688
+ const activeId = active.id;
689
+ const overId = over.id;
690
+ const activeLoc = findColumnLocation(frozenColumn, activeId) || findColumnLocation(scrollableColumn, activeId);
691
+ if (!activeLoc) {
692
+ isDraggingRef.current = false;
693
+ return;
694
+ }
695
+ if (activeLoc.parent) {
696
+ const overLoc = findColumnLocation(frozenColumn, overId) || findColumnLocation(scrollableColumn, overId);
697
+ if (!(overLoc == null ? void 0 : overLoc.parent) || overLoc.parent.colId !== activeLoc.parent.colId) {
698
+ isDraggingRef.current = false;
699
+ return;
700
+ }
701
+ const siblingIds = getDirectColumnIds(activeLoc.siblings);
702
+ const oldIndex = siblingIds.indexOf(activeId);
703
+ const newIndex = siblingIds.indexOf(overId);
704
+ if (oldIndex === -1 || newIndex === -1) {
705
+ isDraggingRef.current = false;
706
+ return;
707
+ }
708
+ commitColumnReorder({
709
+ frozenOrder: fullFrozenOrder,
710
+ scrollableOrder: fullScrollableOrder,
711
+ childReorder: {
712
+ parentId: activeLoc.parent.colId,
713
+ siblingOrder: arrayMove(siblingIds, oldIndex, newIndex)
714
+ }
715
+ });
716
+ return;
717
+ }
718
+ const isFrozenSource = fullFrozenOrder.includes(activeId);
719
+ const isScrollableSource = fullScrollableOrder.includes(activeId);
720
+ if (!isFrozenSource && !isScrollableSource) {
721
+ isDraggingRef.current = false;
722
+ return;
723
+ }
724
+ const isFrozenTarget = fullFrozenOrder.includes(overId) || frozenColumnOrder.includes(overId);
725
+ const isScrollableTarget = fullScrollableOrder.includes(overId) || scrollableColumnOrder.includes(overId);
726
+ const visibleScrollable = scrollableColumnOrder.length ? scrollableColumnOrder : fullScrollableOrder;
727
+ let nextFrozen = [...fullFrozenOrder];
728
+ let nextScrollable = [...fullScrollableOrder];
729
+ let pinChanges = null;
730
+ if (isFrozenSource && isFrozenTarget) {
731
+ const oldIndex = nextFrozen.indexOf(activeId);
732
+ const newIndex = nextFrozen.indexOf(overId);
733
+ if (oldIndex === -1 || newIndex === -1) {
734
+ isDraggingRef.current = false;
735
+ return;
736
+ }
737
+ nextFrozen = arrayMove(nextFrozen, oldIndex, newIndex);
738
+ } else if (isScrollableSource && isScrollableTarget) {
739
+ const oldIndex = nextScrollable.indexOf(activeId);
740
+ const newIndex = nextScrollable.indexOf(overId);
741
+ if (oldIndex === -1 || newIndex === -1) {
742
+ isDraggingRef.current = false;
743
+ return;
744
+ }
745
+ nextScrollable = arrayMove(nextScrollable, oldIndex, newIndex);
746
+ } else if (isFrozenSource && isScrollableTarget) {
747
+ nextFrozen = nextFrozen.filter((id) => id !== activeId);
748
+ const overIndex = visibleScrollable.indexOf(overId);
749
+ const insertAt = overIndex === -1 ? nextScrollable.length : !nextScrollable.includes(overId) ? nextScrollable.length : nextScrollable.indexOf(overId);
750
+ nextScrollable = [...nextScrollable];
751
+ nextScrollable.splice(insertAt, 0, activeId);
752
+ pinChanges = [{ colId: activeId, pinned: null }];
753
+ } else if (isScrollableSource && isFrozenTarget) {
754
+ nextScrollable = nextScrollable.filter((id) => id !== activeId);
755
+ const insertAt = !nextFrozen.includes(overId) ? nextFrozen.length : nextFrozen.indexOf(overId);
756
+ nextFrozen = [...nextFrozen];
757
+ nextFrozen.splice(insertAt, 0, activeId);
758
+ pinChanges = [{ colId: activeId, pinned: "left" }];
759
+ } else {
760
+ isDraggingRef.current = false;
761
+ return;
762
+ }
763
+ commitColumnReorder({
764
+ frozenOrder: nextFrozen,
765
+ scrollableOrder: nextScrollable,
766
+ pinChanges
767
+ });
768
+ },
769
+ [
770
+ frozenColumn,
771
+ scrollableColumn,
772
+ fullFrozenOrder,
773
+ fullScrollableOrder,
774
+ frozenColumnOrder,
775
+ scrollableColumnOrder,
776
+ commitColumnReorder,
777
+ stopSettingsListAutoScroll
778
+ ]
779
+ );
780
+ const handleKeyboardReorder = useCallback(
781
+ (colId, direction) => {
782
+ const loc = findColumnLocation(frozenColumn, colId) || findColumnLocation(scrollableColumn, colId);
783
+ if (!loc) return;
784
+ if (loc.parent) {
785
+ const siblingIds = getDirectColumnIds(loc.siblings);
786
+ const oldIndex = siblingIds.indexOf(colId);
787
+ const newIndex = oldIndex + direction;
788
+ if (oldIndex === -1 || newIndex < 0 || newIndex >= siblingIds.length) return;
789
+ commitColumnReorder({
790
+ frozenOrder: fullFrozenOrder,
791
+ scrollableOrder: fullScrollableOrder,
792
+ childReorder: {
793
+ parentId: loc.parent.colId,
794
+ siblingOrder: arrayMove(siblingIds, oldIndex, newIndex)
795
+ },
796
+ announce: { colId, direction }
797
+ });
798
+ } else {
799
+ const isFrozen = fullFrozenOrder.includes(colId);
800
+ const isScrollable = fullScrollableOrder.includes(colId);
801
+ if (!isFrozen && !isScrollable) return;
802
+ const order = isFrozen ? [...fullFrozenOrder] : [...fullScrollableOrder];
803
+ const oldIndex = order.indexOf(colId);
804
+ const newIndex = oldIndex + direction;
805
+ if (oldIndex === -1 || newIndex < 0 || newIndex >= order.length) return;
806
+ const newOrder = arrayMove(order, oldIndex, newIndex);
807
+ commitColumnReorder({
808
+ frozenOrder: isFrozen ? newOrder : fullFrozenOrder,
809
+ scrollableOrder: isScrollable ? newOrder : fullScrollableOrder,
810
+ announce: { colId, direction }
811
+ });
812
+ }
813
+ requestAnimationFrame(() => {
814
+ var _a2, _b2;
815
+ const escaped = CSS.escape ? CSS.escape(colId) : colId.replace(/"/g, '\\"');
816
+ (_b2 = (_a2 = document.querySelector(`.table-setting-columns-settings [data-col-id="${escaped}"]`)) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
817
+ });
818
+ },
819
+ [frozenColumn, scrollableColumn, fullFrozenOrder, fullScrollableOrder, commitColumnReorder]
820
+ );
821
+ const renderColumnRow = useCallback(
822
+ (column, level, section) => {
823
+ const isFrozen = section === "frozen";
824
+ const collapsedMap = isFrozen ? collapsedFrozenColumns : collapsedScrollColumns;
825
+ const isCollapsed = !!collapsedMap[column.colId];
826
+ const hasChildren = Array.isArray(column.children) && column.children.length > 0;
827
+ const onToggleCollapse = isFrozen ? toggleFrozenColumnCollapse : toggleScrollColumnCollapse;
828
+ const onToggleVisibility = isFrozen ? toggleColumnVisibilityFrozen : toggleColumnVisibilityScroll;
829
+ const checkState = checkStateMap.get(column.colId) || {
830
+ checked: !!column.isVisible,
831
+ indeterminate: false
832
+ };
833
+ const reserveCollapseSlot = isFrozen ? hasChildren : true;
834
+ const rowClassName = isFrozen ? "table-setting-frozen-columns-list-item" : "table-setting-scroll-inner-column";
835
+ const dragIconClass = isFrozen ? "table-setting-frozen-columns-list-drag-icon" : "table-setting-scroll-columns-list-drag-icon";
836
+ const nestedSortableIds = hasChildren ? getDirectColumnIds(
837
+ column.children.filter((c) => c.headerName !== "N/A" && c.isVisible !== false)
838
+ ) : [];
839
+ const childNodes = hasChildren && !isCollapsed ? /* @__PURE__ */ jsx(SortableContext, { items: nestedSortableIds, children: /* @__PURE__ */ jsx("div", { className: "table-setting-column-children", role: "group", children: column.children.map((child) => renderColumnRow(child, level + 1, section)) }) }) : null;
840
+ if (column.isVisible !== false) {
841
+ return /* @__PURE__ */ jsx(
842
+ SortableColumnItem,
843
+ {
844
+ checkboxChecked: checkState.checked,
845
+ column,
846
+ dragIconClass,
847
+ hasChildren,
848
+ isCollapsed,
849
+ isIndeterminate: checkState.indeterminate,
850
+ level,
851
+ reserveCollapseSlot,
852
+ rowClassName,
853
+ onKeyboardReorder: handleKeyboardReorder,
854
+ onToggleCollapse,
855
+ onToggleVisibility,
856
+ children: childNodes
857
+ },
858
+ column.colId
859
+ );
860
+ }
861
+ return /* @__PURE__ */ jsx(
862
+ NestedColumnItem,
863
+ {
864
+ checkboxChecked: checkState.checked,
865
+ column,
866
+ dragIconClass,
867
+ hasChildren,
868
+ isCollapsed,
869
+ isIndeterminate: checkState.indeterminate,
870
+ level,
871
+ reserveCollapseSlot,
872
+ rowClassName,
873
+ onToggleCollapse,
874
+ onToggleVisibility,
875
+ children: childNodes
876
+ },
877
+ column.colId
878
+ );
879
+ },
880
+ [
881
+ checkStateMap,
882
+ collapsedFrozenColumns,
883
+ collapsedScrollColumns,
884
+ toggleFrozenColumnCollapse,
885
+ toggleScrollColumnCollapse,
886
+ toggleColumnVisibilityFrozen,
887
+ toggleColumnVisibilityScroll,
888
+ handleKeyboardReorder
889
+ ]
890
+ );
891
+ const virtualRowHandlers = useMemo(
892
+ () => ({
893
+ checkStateMap,
894
+ onToggleFrozenCollapse: toggleFrozenColumnCollapse,
895
+ onToggleScrollCollapse: toggleScrollColumnCollapse,
896
+ onToggleVisibilityFrozen: toggleColumnVisibilityFrozen,
897
+ onToggleVisibilityScroll: toggleColumnVisibilityScroll,
898
+ onKeyboardReorder: handleKeyboardReorder
899
+ }),
900
+ [
901
+ checkStateMap,
902
+ toggleFrozenColumnCollapse,
903
+ toggleScrollColumnCollapse,
904
+ toggleColumnVisibilityFrozen,
905
+ toggleColumnVisibilityScroll,
906
+ handleKeyboardReorder
907
+ ]
908
+ );
909
+ const frozenItemData = useMemo(
910
+ () => ({ ...virtualRowHandlers, rows: frozenRows }),
911
+ [virtualRowHandlers, frozenRows]
912
+ );
913
+ const scrollableItemData = useMemo(
914
+ () => ({ ...virtualRowHandlers, rows: scrollableRows }),
915
+ [virtualRowHandlers, scrollableRows]
916
+ );
917
+ const handleSaveAndApply = () => {
918
+ var _a2, _b2;
919
+ if (isEditView) {
920
+ const newView2 = {
921
+ ...editedView,
922
+ viewName: inputValue,
923
+ viewType: selectedViewType,
924
+ isDefaultView,
925
+ isActive: false
926
+ };
927
+ props.handleEditSaveView(newView2, editedView);
928
+ if (!props.isSavingViewLoading) {
929
+ setIsEditView(false);
930
+ setEditedView(null);
931
+ setOpenSaveViewModal(false);
932
+ setInputValue("");
933
+ setSelectedViewType((_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.selectedOption);
934
+ setIsDefaultView(false);
935
+ }
936
+ return;
937
+ }
938
+ const replaceViewName = selectedSavedView == null ? void 0 : selectedSavedView.value;
939
+ const isReplacing = isInputValueEmpty && !!replaceViewName;
940
+ const newView = {
941
+ viewName: isReplacing ? replaceViewName : inputValue,
942
+ viewType: selectedViewType,
943
+ isDefaultView,
944
+ isActive: true
945
+ };
946
+ const applyToViews = (prev) => isReplacing ? prev.map(
947
+ (view) => view.viewName === replaceViewName && view.viewType === selectedViewType ? { ...view, ...newView } : { ...view, isActive: false }
948
+ ) : [...prev.map((view) => ({ ...view, isActive: false })), newView];
949
+ setSavedViewsOptions(applyToViews);
950
+ setFilteredSavedViewsOptions(applyToViews);
951
+ (_b2 = props.handleSaveAndApply) == null ? void 0 : _b2.call(props, newView, replaceViewName);
952
+ };
953
+ useEffect(() => {
954
+ var _a2;
955
+ if (!props.isSavingViewLoading) {
956
+ setOpenSaveViewModal(false);
957
+ setSelectedSavedView(null);
958
+ setInputValue("");
959
+ setSelectedViewType((_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.selectedOption);
960
+ setIsDefaultView(false);
961
+ setOpenDeletePrompt(false);
962
+ setDeleteView(null);
963
+ setEditedView(null);
964
+ }
965
+ }, [props.isSavingViewLoading]);
966
+ const handleEditView = (view, e) => {
967
+ e.stopPropagation();
968
+ e.preventDefault();
969
+ setIsEditView(true);
970
+ setOpenSaveViewModal(true);
971
+ setInputValue(view.viewName);
972
+ setSelectedViewType(view.viewType);
973
+ setIsDefaultView(view.isDefaultView);
974
+ setEditedView(view);
975
+ };
976
+ const handleCloseSaveViewModal = () => {
977
+ var _a2;
978
+ setOpenSaveViewModal(false);
979
+ setSelectedSavedView(null);
980
+ setInputValue("");
981
+ setSelectedViewType((_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.selectedOption);
982
+ setIsDefaultView(false);
983
+ setIsEditView(false);
984
+ };
985
+ const handleSaveViewSearchChange = (e) => {
986
+ setSaveViewSearchText(e.target.value);
987
+ const filteredViews = savedViewsOptions.filter(
988
+ (view) => view.viewName.toLowerCase().includes(e.target.value.toLowerCase())
989
+ );
990
+ setFilteredSavedViewsOptions(filteredViews);
991
+ };
992
+ const handleDeleteView = (view, e) => {
993
+ e.stopPropagation();
994
+ e.preventDefault();
995
+ setOpenDeletePrompt(true);
996
+ setDeleteView(view);
997
+ };
998
+ useEffect(() => {
999
+ if (!props.isDeleteViewLoading) {
1000
+ setOpenDeletePrompt(false);
1001
+ }
1002
+ }, [props.isDeleteViewLoading]);
1003
+ useEffect(() => {
1004
+ if (selectedBadge === "All") {
1005
+ setFilteredSavedViewsOptions([...savedViewsOptions]);
1006
+ } else {
1007
+ setFilteredSavedViewsOptions(
1008
+ savedViewsOptions.filter((view) => view.viewType === selectedBadge)
1009
+ );
1010
+ }
1011
+ }, [selectedBadge, savedViewsOptions]);
1012
+ const handleSaveViewClick = (view) => {
1013
+ setFilteredSavedViewsOptions(
1014
+ (prev) => prev.map((item) => {
1015
+ if (item.viewName === view.viewName) {
1016
+ return {
1017
+ ...item,
1018
+ isActive: true
1019
+ };
1020
+ }
1021
+ return {
1022
+ ...item,
1023
+ isActive: false
1024
+ };
1025
+ })
1026
+ );
1027
+ setSelectedView(view);
1028
+ };
1029
+ const nameConflictExcludeView = isEditView ? editedView : (selectedSavedView == null ? void 0 : selectedSavedView.value) ? {
1030
+ viewName: selectedSavedView.value,
1031
+ viewType: selectedSavedView.viewType
1032
+ } : null;
1033
+ const nameConflict = !props.isSavingViewLoading && !isInputValueEmpty && !isViewNameUnique(
1034
+ inputValue,
1035
+ selectedViewType,
1036
+ isDefaultView,
1037
+ savedViewsOptions,
1038
+ nameConflictExcludeView,
1039
+ props.isViewNameUniqueAcrossTypes
1040
+ );
1041
+ return /* @__PURE__ */ jsxs("div", { className: "table-setting-columns-settings", children: [
1042
+ /* @__PURE__ */ jsx(
1043
+ "div",
1044
+ {
1045
+ ref: reorderLiveRegionRef,
1046
+ "aria-live": "polite",
1047
+ className: "table-setting-reorder-live-region"
1048
+ }
1049
+ ),
1050
+ props.isSaveViewEnabled && /* @__PURE__ */ jsxs("div", { className: "table-setting-save-view-container", children: [
1051
+ savedViewsOptions.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "save-view-icon-title", children: [
1052
+ /* @__PURE__ */ jsx("img", { alt: "save-view-icon", src: saveViewIcon }),
1053
+ /* @__PURE__ */ jsx("span", { className: "save-view-title", children: "No views saved yet" })
1054
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "save-view-container-active-view", children: [
1055
+ /* @__PURE__ */ jsx(
1056
+ Badge,
1057
+ {
1058
+ color: "success",
1059
+ label: `${((_b = savedViewsOptions.find((view) => view.isActive)) == null ? void 0 : _b.viewName) || "Not Applicable"}`,
1060
+ variant: "stroke"
1061
+ }
1062
+ ),
1063
+ /* @__PURE__ */ jsx(
1064
+ Button,
1065
+ {
1066
+ icon: openSaveViewMenu ? /* @__PURE__ */ jsx(default_1, {}) : /* @__PURE__ */ jsx(default_1$1, {}),
1067
+ size: "small",
1068
+ variant: "tertiary",
1069
+ onClick: () => {
1070
+ setOpenSaveViewMenu(!openSaveViewMenu);
1071
+ setFilteredSavedViewsOptions([...savedViewsOptions]);
1072
+ }
1073
+ }
1074
+ )
1075
+ ] }),
1076
+ /* @__PURE__ */ jsx(
1077
+ Button,
1078
+ {
1079
+ size: "small",
1080
+ variant: "tertiary",
1081
+ onClick: () => {
1082
+ setOpenSaveViewModal(true);
1083
+ },
1084
+ children: "Save View"
1085
+ }
1086
+ )
1087
+ ] }),
1088
+ openSaveViewMenu && /* @__PURE__ */ jsxs("div", { className: "save-view-menu", children: [
1089
+ /* @__PURE__ */ jsxs("div", { className: "save-view-menu-title", children: [
1090
+ /* @__PURE__ */ jsx("span", { children: "Saved views" }),
1091
+ /* @__PURE__ */ jsxs("div", { className: "save-view-menu-default-view", children: [
1092
+ /* @__PURE__ */ jsx("img", { alt: "default-view-icon", src: defaultViewActiveIcon }),
1093
+ /* @__PURE__ */ jsx("span", { className: "save-view-menu-default-view-text", children: "Default" })
1094
+ ] })
1095
+ ] }),
1096
+ /* @__PURE__ */ jsxs("div", { className: "save-view-menu-view-type", children: [
1097
+ /* @__PURE__ */ jsx(
1098
+ Badge,
1099
+ {
1100
+ color: selectedBadge === "All" ? "info" : "default",
1101
+ label: "All",
1102
+ size: "small",
1103
+ variant: "stroke",
1104
+ onClick: () => {
1105
+ setSelectedBadge("All");
1106
+ setFilteredSavedViewsOptions([...savedViewsOptions]);
1107
+ }
1108
+ }
1109
+ ),
1110
+ (_d = (_c = props.saveViewCustomFilter) == null ? void 0 : _c.options) == null ? void 0 : _d.map((option) => /* @__PURE__ */ jsx(
1111
+ Badge,
1112
+ {
1113
+ isIcon: true,
1114
+ color: selectedBadge === option.value ? "info" : "default",
1115
+ icon: getViewTypeIcon(option.value),
1116
+ label: option.label,
1117
+ size: "small",
1118
+ variant: "stroke",
1119
+ onClick: () => {
1120
+ setSelectedBadge(option.value);
1121
+ setFilteredSavedViewsOptions(
1122
+ savedViewsOptions.filter((view) => view.viewType === option.value)
1123
+ );
1124
+ }
1125
+ },
1126
+ option.value
1127
+ ))
1128
+ ] }),
1129
+ /* @__PURE__ */ jsx("div", { className: "save-view-menu-search-container", children: /* @__PURE__ */ jsx(
1130
+ Input,
1131
+ {
1132
+ leftIcon: /* @__PURE__ */ jsx(default_1$2, {}),
1133
+ placeholder: "Search here...",
1134
+ value: saveViewSearchText,
1135
+ onChange: handleSaveViewSearchChange
1136
+ }
1137
+ ) }),
1138
+ /* @__PURE__ */ jsx("div", { className: "save-view-menu-view-list-container", children: props.customRenderSaveViewContent ? props.customRenderSaveViewContent : filteredSavedViewsOptions.length > 0 && filteredSavedViewsOptions.map((view, idx) => {
1139
+ var _a2;
1140
+ return /* @__PURE__ */ jsxs(
1141
+ "div",
1142
+ {
1143
+ "aria-label": `Saved view ${view.viewName}`,
1144
+ className: `save-view-menu-view-list-item ${view.isActive ? "active" : ""}`,
1145
+ role: "button",
1146
+ tabIndex: idx === 0 ? 0 : -1,
1147
+ onClick: () => {
1148
+ handleSaveViewClick(view);
1149
+ },
1150
+ onKeyDown: (e) => {
1151
+ var _a3, _b2;
1152
+ const current = e.currentTarget;
1153
+ switch (e.key) {
1154
+ case "Enter":
1155
+ case " ":
1156
+ e.preventDefault();
1157
+ handleSaveViewClick(view);
1158
+ break;
1159
+ case "ArrowDown": {
1160
+ e.preventDefault();
1161
+ (_a3 = current.nextElementSibling) == null ? void 0 : _a3.focus();
1162
+ break;
1163
+ }
1164
+ case "ArrowUp": {
1165
+ e.preventDefault();
1166
+ (_b2 = current.previousElementSibling) == null ? void 0 : _b2.focus();
1167
+ break;
1168
+ }
1169
+ }
1170
+ },
1171
+ children: [
1172
+ /* @__PURE__ */ jsxs("span", { className: "save-view-menu-view-list-item-name", children: [
1173
+ /* @__PURE__ */ jsx(
1174
+ "span",
1175
+ {
1176
+ "aria-hidden": "true",
1177
+ className: "save-view-menu-view-list-item-type-icon",
1178
+ title: view.viewType,
1179
+ children: getViewTypeIcon(view.viewType, (_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.options)
1180
+ }
1181
+ ),
1182
+ /* @__PURE__ */ jsx("span", { className: "save-view-menu-view-list-item-name-text", children: view.viewName })
1183
+ ] }),
1184
+ /* @__PURE__ */ jsxs("div", { className: "save-view-menu-view-list-item-actions", children: [
1185
+ (view == null ? void 0 : view.isEditable) && /* @__PURE__ */ jsx(
1186
+ "img",
1187
+ {
1188
+ alt: "save-view-edit-icon",
1189
+ src: saveViewEditIcon,
1190
+ onClick: (e) => {
1191
+ handleEditView(view, e);
1192
+ }
1193
+ }
1194
+ ),
1195
+ (view == null ? void 0 : view.isDeletable) && /* @__PURE__ */ jsx(
1196
+ "img",
1197
+ {
1198
+ alt: "save-view-delete-icon",
1199
+ src: saveViewDeleteIcon,
1200
+ onClick: (e) => {
1201
+ handleDeleteView(view, e);
1202
+ }
1203
+ }
1204
+ ),
1205
+ !(view == null ? void 0 : view.notReqDefaultView) && ((view == null ? void 0 : view.isDefaultView) ? /* @__PURE__ */ jsx(
1206
+ "img",
1207
+ {
1208
+ alt: "default-view-icon",
1209
+ className: "default-view-active-icon",
1210
+ src: defaultViewActiveIcon,
1211
+ onClick: (e) => {
1212
+ e.stopPropagation();
1213
+ e.preventDefault();
1214
+ props.handleSetDefaultView(view);
1215
+ }
1216
+ }
1217
+ ) : /* @__PURE__ */ jsx(
1218
+ "img",
1219
+ {
1220
+ alt: "default-view-icon",
1221
+ src: defaultViewIcon,
1222
+ onClick: (e) => {
1223
+ e.stopPropagation();
1224
+ e.preventDefault();
1225
+ props.handleSetDefaultView(view);
1226
+ }
1227
+ }
1228
+ ))
1229
+ ] })
1230
+ ]
1231
+ },
1232
+ view.viewName + idx
1233
+ );
1234
+ }) }),
1235
+ /* @__PURE__ */ jsx("hr", { className: "save-view-menu-view-list-item-divider" }),
1236
+ /* @__PURE__ */ jsxs("div", { className: "save-view-menu-footer", children: [
1237
+ /* @__PURE__ */ jsx(
1238
+ Button,
1239
+ {
1240
+ size: "medium",
1241
+ variant: "tertiary",
1242
+ onClick: () => {
1243
+ setOpenSaveViewMenu(false);
1244
+ setFilteredSavedViewsOptions([...savedViewsOptions]);
1245
+ },
1246
+ children: "Cancel"
1247
+ }
1248
+ ),
1249
+ /* @__PURE__ */ jsx(
1250
+ Button,
1251
+ {
1252
+ disabled: props.customRenderSaveViewContent,
1253
+ size: "medium",
1254
+ variant: "primary",
1255
+ onClick: () => {
1256
+ var _a2;
1257
+ (_a2 = props.handleSavedViewClick) == null ? void 0 : _a2.call(props, selectedView);
1258
+ updateColumnState();
1259
+ setOpenSaveViewMenu(false);
1260
+ },
1261
+ children: "Apply"
1262
+ }
1263
+ )
1264
+ ] })
1265
+ ] }),
1266
+ /* @__PURE__ */ jsx(
1267
+ Modal,
1268
+ {
1269
+ className: "save-view-modal",
1270
+ height: "542px",
1271
+ open: openSaveViewModal,
1272
+ primaryButtonLabel: props.isSavingViewLoading ? "Saving..." : "Save",
1273
+ primaryButtonProps: {
1274
+ disabled: (isInputValueEmpty || props.maxSavedViews != null && savedViewsOptions.length >= props.maxSavedViews) && !isReplaceViewSelected || nameConflict || props.isSavingViewLoading,
1275
+ loading: props.isSavingViewLoading,
1276
+ iconPlacement: "right"
1277
+ },
1278
+ secondaryButtonLabel: "Cancel",
1279
+ title: isEditView ? "Edit view" : "Save view",
1280
+ width: "422px",
1281
+ onClose: handleCloseSaveViewModal,
1282
+ onPrimaryButtonClick: handleSaveAndApply,
1283
+ onSecondaryButtonClick: handleCloseSaveViewModal,
1284
+ children: /* @__PURE__ */ jsxs("div", { className: "save-view-modal-children", children: [
1285
+ props.maxSavedViews != null && /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-header", children: /* @__PURE__ */ jsx("span", { className: "save-view-modal-children-header-text", children: `${props.maxSavedViews - savedViewsOptions.length}/${props.maxSavedViews} views remaining` }) }),
1286
+ /* @__PURE__ */ jsxs(
1287
+ "div",
1288
+ {
1289
+ className: `save-view-modal-children-body${props.maxSavedViews == null ? " save-view-modal-children-body-no-header" : ""}`,
1290
+ children: [
1291
+ /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-input", children: /* @__PURE__ */ jsx(
1292
+ Input,
1293
+ {
1294
+ helperText: nameConflict ? "A view with this name already exists" : "",
1295
+ isDisabled: isReplaceViewSelected,
1296
+ isError: nameConflict,
1297
+ isHelperText: nameConflict,
1298
+ label: "New view name",
1299
+ placeholder: "Enter here",
1300
+ readOnly: isReplaceViewSelected,
1301
+ value: inputValue,
1302
+ onChange: (e) => {
1303
+ setInputValue(e.target.value);
1304
+ setSelectedSavedView(null);
1305
+ }
1306
+ }
1307
+ ) }),
1308
+ !isEditView && /* @__PURE__ */ jsxs("div", { className: "save-view-modal-children-body-radio-group", children: [
1309
+ /* @__PURE__ */ jsx("span", { className: "save-view-modal-children-body-radio-group-text", children: "View type" }),
1310
+ /* @__PURE__ */ jsx(
1311
+ RadioButtonGroup,
1312
+ {
1313
+ isDisabled: isReplaceViewSelected,
1314
+ options: (_f = (_e = props.saveViewCustomFilter) == null ? void 0 : _e.options) == null ? void 0 : _f.filter(
1315
+ (option) => !(option == null ? void 0 : option.notReqInSaveView)
1316
+ ),
1317
+ orientation: "row",
1318
+ selectedOption: selectedViewType,
1319
+ onChange: (event) => {
1320
+ setSelectedViewType(event.target.value);
1321
+ }
1322
+ }
1323
+ )
1324
+ ] }),
1325
+ /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-checkbox", children: /* @__PURE__ */ jsx(
1326
+ Checkbox,
1327
+ {
1328
+ checked: isDefaultView,
1329
+ disabled: isReplaceViewSelected,
1330
+ label: "Make it default view",
1331
+ onChange: () => {
1332
+ setIsDefaultView(!isDefaultView);
1333
+ }
1334
+ }
1335
+ ) }),
1336
+ /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-replace-view", children: /* @__PURE__ */ jsx("span", { children: "Or replace with saved view" }) }),
1337
+ /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-replace-view-select", children: /* @__PURE__ */ jsx(
1338
+ Select,
1339
+ {
1340
+ isClearable: true,
1341
+ withPortal: true,
1342
+ currentOptions: currentSaveViewOptions,
1343
+ initialOptions: currentSaveViewOptions,
1344
+ isDisabled: savedViewsOptions.length === 0 || !isInputValueEmpty && !isReplaceViewSelected || isEditView,
1345
+ isOpen,
1346
+ label: "Replace with",
1347
+ minWidth: "100%",
1348
+ selectedOptions: selectedSavedView,
1349
+ setCurrentOptions: setCurrentSaveViewOptions,
1350
+ setIsOpen,
1351
+ setSelectedOptions: setSelectedSavedView
1352
+ }
1353
+ ) })
1354
+ ]
1355
+ }
1356
+ )
1357
+ ] })
1358
+ }
1359
+ ),
1360
+ /* @__PURE__ */ jsx(
1361
+ Prompt,
1362
+ {
1363
+ handleClose: (e) => {
1364
+ e.stopPropagation();
1365
+ setOpenDeletePrompt(false);
1366
+ },
1367
+ isOpen: openDeletePrompt,
1368
+ primaryButtonLabel: "Yes,Delete",
1369
+ primaryButtonProps: {
1370
+ loading: props.isDeleteViewLoading,
1371
+ iconPlacement: "right"
1372
+ },
1373
+ secondaryButtonLabel: "Cancel",
1374
+ title: "Delete, Are you sure?",
1375
+ variant: "error",
1376
+ onPrimaryButtonClick: (e) => {
1377
+ var _a2;
1378
+ e.stopPropagation();
1379
+ (_a2 = props.handleDeleteViewClick) == null ? void 0 : _a2.call(props, deleteView);
1380
+ },
1381
+ onSecondaryButtonClick: (e) => {
1382
+ e.stopPropagation();
1383
+ setOpenDeletePrompt(false);
1384
+ },
1385
+ children: props.deleteViewPromptText
1386
+ }
1387
+ ),
1388
+ /* @__PURE__ */ jsxs("div", { className: "table-setting-column-search-container", children: [
1389
+ /* @__PURE__ */ jsx("span", { className: "table-setting-column-collapse-slot", children: /* @__PURE__ */ jsx(
1390
+ IconButton,
1391
+ {
1392
+ "aria-label": collapsedColumn ? "Expand columns" : "Collapse columns",
1393
+ className: "table-setting-column-collapse-btn",
1394
+ onClick: toggleColumnCollapse,
1395
+ children: collapsedColumn ? /* @__PURE__ */ jsx(default_1$3, {}) : /* @__PURE__ */ jsx(default_1, {})
1396
+ }
1397
+ ) }),
1398
+ /* @__PURE__ */ jsxs("div", { className: "table-setting-column-search-controls", children: [
1399
+ /* @__PURE__ */ jsx(
1400
+ Checkbox,
1401
+ {
1402
+ "aria-label": "Toggle all columns",
1403
+ checked: allCheckState.checked,
1404
+ variant: allCheckState.indeterminate ? "dashed" : "default",
1405
+ onChange: onAllColumnCheckBoxChange
1406
+ }
1407
+ ),
1408
+ /* @__PURE__ */ jsx(
1409
+ Input,
1410
+ {
1411
+ placeholder: "Search",
1412
+ rightIcon: /* @__PURE__ */ jsx(default_1$2, {}),
1413
+ value: searchInputValue,
1414
+ onChange: handleSearchChange
1415
+ }
1416
+ )
1417
+ ] })
1418
+ ] }),
1419
+ !collapsedColumn && /* @__PURE__ */ jsx(
1420
+ "div",
1421
+ {
1422
+ ref: collapseContainerRef,
1423
+ className: `table-setting-column-collapse-container ${props.isSaveViewEnabled ? "save-view-enabled" : ""} ${shouldVirtualize ? "is-virtualized" : ""}`,
1424
+ children: /* @__PURE__ */ jsxs(
1425
+ DndContext,
1426
+ {
1427
+ autoScroll: !shouldVirtualize,
1428
+ collisionDetection: closestCenter,
1429
+ sensors,
1430
+ onDragCancel: handleDragCancel,
1431
+ onDragEnd: handleDragEnd,
1432
+ onDragMove: handleDragMove,
1433
+ onDragStart: handleDragStart,
1434
+ children: [
1435
+ /* @__PURE__ */ jsxs(SortableContext, { items: sortableItems, children: [
1436
+ frozenColumn.length > 0 && !(frozenColumn.length === 1 && frozenColumn[0].headerName === "N/A") && /* @__PURE__ */ jsxs("div", { className: "table-setting-collapse-columns-container", children: [
1437
+ /* @__PURE__ */ jsx("h3", { children: "Frozen columns" }),
1438
+ shouldVirtualize ? /* @__PURE__ */ jsx(
1439
+ VirtualColumnList,
1440
+ {
1441
+ className: "table-setting-frozen-columns-list",
1442
+ itemData: frozenItemData,
1443
+ maxHeight: listHeights.frozen,
1444
+ outerElementType: FrozenListOuter,
1445
+ outerRef: frozenListRef,
1446
+ rows: frozenRows
1447
+ }
1448
+ ) : /* @__PURE__ */ jsx(
1449
+ "div",
1450
+ {
1451
+ "aria-label": "Frozen columns",
1452
+ className: "table-setting-frozen-columns-list",
1453
+ role: "tree",
1454
+ children: filteredFrozenColumns.map(
1455
+ (column) => column.headerName !== "N/A" && renderColumnRow(column, 0, "frozen")
1456
+ )
1457
+ }
1458
+ )
1459
+ ] }),
1460
+ /* @__PURE__ */ jsxs("div", { className: "table-setting-scroll-columns-container", children: [
1461
+ /* @__PURE__ */ jsx("h3", { children: "Scrollable Columns" }),
1462
+ /* @__PURE__ */ jsxs("div", { className: "table-setting-scroll-main-column-list", children: [
1463
+ /* @__PURE__ */ jsxs("div", { className: "table-setting-scroll-main-column", children: [
1464
+ /* @__PURE__ */ jsxs("div", { className: "table-setting-column-leading", children: [
1465
+ /* @__PURE__ */ jsx("span", { className: "table-setting-column-collapse-slot", children: /* @__PURE__ */ jsx(
1466
+ IconButton,
1467
+ {
1468
+ "aria-label": collapsedScrollable ? "Expand scrollable columns" : "Collapse scrollable columns",
1469
+ className: "table-setting-column-collapse-btn",
1470
+ onClick: toggleScrollableCollapse,
1471
+ children: collapsedScrollable ? /* @__PURE__ */ jsx(default_1$3, {}) : /* @__PURE__ */ jsx(default_1, {})
1472
+ }
1473
+ ) }),
1474
+ /* @__PURE__ */ jsx(
1475
+ Checkbox,
1476
+ {
1477
+ "aria-label": "Toggle main columns",
1478
+ checked: mainCheckState.checked,
1479
+ variant: mainCheckState.indeterminate ? "dashed" : "default",
1480
+ onChange: onMainCheckboxChange
1481
+ }
1482
+ )
1483
+ ] }),
1484
+ /* @__PURE__ */ jsx("span", { className: "table-setting-column-name", children: "Main Column" })
1485
+ ] }),
1486
+ shouldVirtualize ? /* @__PURE__ */ jsx(
1487
+ VirtualColumnList,
1488
+ {
1489
+ className: "table-setting-scroll-inner-column-list",
1490
+ itemData: scrollableItemData,
1491
+ maxHeight: listHeights.scrollable,
1492
+ outerElementType: ScrollableListOuter,
1493
+ outerRef: scrollableListRef,
1494
+ rows: scrollableRows
1495
+ }
1496
+ ) : /* @__PURE__ */ jsx(
1497
+ "div",
1498
+ {
1499
+ "aria-label": "Scrollable columns",
1500
+ className: "table-setting-scroll-inner-column-list",
1501
+ role: "tree",
1502
+ children: !collapsedScrollable && filteredScrollableColumns.map(
1503
+ (column) => column.headerName !== "N/A" && renderColumnRow(column, 0, "scrollable")
1504
+ )
1505
+ }
1506
+ )
1507
+ ] })
1508
+ ] })
1509
+ ] }),
1510
+ /* @__PURE__ */ jsx(DragOverlay, { adjustScale: false, dropAnimation: null, children: activeDragColumn ? /* @__PURE__ */ jsxs("div", { className: "table-setting-column-drag-overlay", role: "presentation", children: [
1511
+ /* @__PURE__ */ jsx(DragIndicator, { className: "table-setting-column-drag-overlay-icon" }),
1512
+ /* @__PURE__ */ jsx("span", { className: "table-setting-column-drag-overlay-label", children: capitalizeHeader(activeDragColumn.headerName) })
1513
+ ] }) : null })
1514
+ ]
1515
+ }
1516
+ )
1517
+ }
1518
+ )
1519
+ ] });
1520
+ });
1521
+ export {
1522
+ ColumnsV36
1523
+ };