impact-ui 4.0.15 → 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 (109) hide show
  1. package/README.md +3 -1
  2. package/dist/_virtual/index3.js +2 -4
  3. package/dist/_virtual/index4.js +2 -4
  4. package/dist/_virtual/index5.js +4 -2
  5. package/dist/_virtual/index6.js +4 -2
  6. package/dist/components/CreateItemFlow/CreateItemFlow.types.d.ts +39 -16
  7. package/dist/components/CreateItemFlow/CreateItemFlow.types.d.ts.map +1 -1
  8. package/dist/components/CreateItemFlow/index.d.ts +2 -1
  9. package/dist/components/CreateItemFlow/index.d.ts.map +1 -1
  10. package/dist/components/CreateItemFlow/index.js +116 -66
  11. package/dist/components/DatePicker/datePickerDropdown.d.ts.map +1 -1
  12. package/dist/components/DatePicker/datePickerDropdown.js +3 -0
  13. package/dist/components/DatePicker/datePickerFooter.d.ts +3 -1
  14. package/dist/components/DatePicker/datePickerFooter.d.ts.map +1 -1
  15. package/dist/components/DatePicker/datePickerFooter.js +24 -2
  16. package/dist/components/DateRangePicker/dateRangePickerDropdown.d.ts +1 -1
  17. package/dist/components/DateRangePicker/dateRangePickerDropdown.d.ts.map +1 -1
  18. package/dist/components/DateRangePicker/dateRangePickerDropdown.js +35 -12
  19. package/dist/components/DateRangePicker/dateRangePickerFooter.d.ts +1 -1
  20. package/dist/components/DateRangePicker/dateRangePickerFooter.d.ts.map +1 -1
  21. package/dist/components/DateRangePicker/dateRangePickerFooter.js +5 -3
  22. package/dist/components/DateRangePicker/index.d.ts.map +1 -1
  23. package/dist/components/DateRangePicker/index.js +2 -0
  24. package/dist/components/DynamicLayout/index.d.ts +9 -12
  25. package/dist/components/DynamicLayout/index.d.ts.map +1 -1
  26. package/dist/components/DynamicLayout/index.js +37 -34
  27. package/dist/components/Header/index.js +2 -2
  28. package/dist/components/NewCreateItemFlow/NewCreateItemFlow.types.d.ts +21 -0
  29. package/dist/components/NewCreateItemFlow/NewCreateItemFlow.types.d.ts.map +1 -0
  30. package/dist/components/NewCreateItemFlow/index.d.ts +5 -0
  31. package/dist/components/NewCreateItemFlow/index.d.ts.map +1 -0
  32. package/dist/components/NewCreateItemFlow/index.js +93 -0
  33. package/dist/components/NewDynamicLayout/NewDynamicLayout.types.d.ts +26 -0
  34. package/dist/components/NewDynamicLayout/NewDynamicLayout.types.d.ts.map +1 -0
  35. package/dist/components/NewDynamicLayout/index.d.ts +15 -0
  36. package/dist/components/NewDynamicLayout/index.d.ts.map +1 -0
  37. package/dist/components/NewDynamicLayout/index.js +45 -0
  38. package/dist/components/Notification/NotificationBody/NotificationList/NotificationListItem.d.ts.map +1 -1
  39. package/dist/components/Notification/NotificationBody/NotificationList/NotificationListItem.js +6 -31
  40. package/dist/components/Notification/NotificationBody/NotificationPanelContent.js +2 -2
  41. package/dist/components/Notification/NotificationBody/NotificationTaskList.js +1 -2
  42. package/dist/components/Notification/index.js +1 -1
  43. package/dist/components/Table/AgGridHeader.d.ts.map +1 -1
  44. package/dist/components/Table/AgGridHeader.js +3 -1
  45. package/dist/components/Table/NewAdvanceSearchModal/NewAdvanceSearchModalItem.js +1 -1
  46. package/dist/components/Table/Table.types.d.ts +4 -0
  47. package/dist/components/Table/Table.types.d.ts.map +1 -1
  48. package/dist/components/Table/filterUtils.d.ts +13 -0
  49. package/dist/components/Table/filterUtils.d.ts.map +1 -1
  50. package/dist/components/Table/filterUtils.js +18 -9
  51. package/dist/components/Table/index.d.ts.map +1 -1
  52. package/dist/components/Table/index.js +11 -4
  53. package/dist/components/Table/tableFunctions.d.ts +1 -0
  54. package/dist/components/Table/tableFunctions.d.ts.map +1 -1
  55. package/dist/components/Table/tableHeader.d.ts +2 -1
  56. package/dist/components/Table/tableHeader.d.ts.map +1 -1
  57. package/dist/components/Table/tableHeader.js +2 -0
  58. package/dist/components/Table/tableMoreOptions.d.ts +2 -1
  59. package/dist/components/Table/tableMoreOptions.d.ts.map +1 -1
  60. package/dist/components/Table/tableMoreOptions.js +58 -14
  61. package/dist/components/Table/tableSettings.d.ts.map +1 -1
  62. package/dist/components/Table/tableSettings.js +3 -2
  63. package/dist/components/TableOld/index.d.ts.map +1 -1
  64. package/dist/components/TableOld/index.js +23 -9
  65. package/dist/components/TableOld/tableFunctions.d.ts +1 -0
  66. package/dist/components/TableOld/tableFunctions.d.ts.map +1 -1
  67. package/dist/components/TableOld/tableHeader.d.ts +2 -1
  68. package/dist/components/TableOld/tableHeader.d.ts.map +1 -1
  69. package/dist/components/TableOld/tableHeader.js +2 -0
  70. package/dist/components/index.d.ts +5 -1
  71. package/dist/components/index.d.ts.map +1 -1
  72. package/dist/components/index.js +4 -0
  73. package/dist/components/shared/tableColumnSettings/agGridColumnSettingsApi.d.ts +17 -0
  74. package/dist/components/shared/tableColumnSettings/agGridColumnSettingsApi.d.ts.map +1 -0
  75. package/dist/components/shared/tableColumnSettings/agGridColumnSettingsApi.js +52 -0
  76. package/dist/components/shared/tableColumnSettings/columnsSettingsColumnRow.d.ts +12 -0
  77. package/dist/components/shared/tableColumnSettings/columnsSettingsColumnRow.d.ts.map +1 -0
  78. package/dist/components/shared/tableColumnSettings/columnsSettingsColumnRow.js +262 -0
  79. package/dist/components/shared/tableColumnSettings/columnsSettingsVirtualList.d.ts +39 -0
  80. package/dist/components/shared/tableColumnSettings/columnsSettingsVirtualList.d.ts.map +1 -0
  81. package/dist/components/shared/tableColumnSettings/columnsSettingsVirtualList.js +294 -0
  82. package/dist/components/shared/tableColumnSettings/columnsTabV36.d.ts +4 -0
  83. package/dist/components/shared/tableColumnSettings/columnsTabV36.d.ts.map +1 -0
  84. package/dist/components/shared/tableColumnSettings/columnsTabV36.js +1523 -0
  85. package/dist/components/shared/tableColumnSettings/index.d.ts +4 -0
  86. package/dist/components/shared/tableColumnSettings/index.d.ts.map +1 -0
  87. package/dist/components/shared/tableColumnSettings/tableSettingsV36.d.ts +41 -0
  88. package/dist/components/shared/tableColumnSettings/tableSettingsV36.d.ts.map +1 -0
  89. package/dist/components/shared/tableColumnSettings/tableSettingsV36.js +327 -0
  90. package/dist/i18n/I18nContext.d.ts.map +1 -1
  91. package/dist/i18n/I18nContext.js +1 -0
  92. package/dist/locales/en-US.json.d.ts +1 -1
  93. package/dist/locales/en-US.json.js +1 -1
  94. package/dist/locales/es-ES.json.d.ts +666 -0
  95. package/dist/locales/es-ES.json.js +599 -0
  96. package/dist/locales/index.d.ts.map +1 -1
  97. package/dist/locales/index.js +11 -3
  98. package/dist/mcp-component-registry.json +101 -59
  99. package/dist/node_modules/@impactsmartsuite/impact-icons/dist/index.js +128 -75
  100. package/dist/node_modules/@mui/system/colorManipulator.js +2 -2
  101. package/dist/node_modules/moment/dist/locale/es.js +98 -0
  102. package/dist/node_modules/prop-types/node_modules/react-is/index.js +1 -1
  103. package/dist/node_modules/react-is/index.js +1 -1
  104. package/dist/stories/LocaleDictionaryCollapse.d.ts.map +1 -1
  105. package/dist/stories/tableStoryDefaults.d.ts +18 -0
  106. package/dist/stories/tableStoryDefaults.d.ts.map +1 -0
  107. package/dist/stories/tableStoryManyColumns.d.ts +44 -0
  108. package/dist/stories/tableStoryManyColumns.d.ts.map +1 -0
  109. 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
+ };