impact-ui 4.0.5-tableV36.2 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/_virtual/index13.js +2 -2
  2. package/dist/_virtual/index14.js +2 -2
  3. package/dist/_virtual/index15.js +2 -2
  4. package/dist/_virtual/index3.js +2 -4
  5. package/dist/_virtual/index4.js +3 -3
  6. package/dist/_virtual/index5.js +4 -2
  7. package/dist/components/CommentsPanel/CommentsContext.d.ts +4 -2
  8. package/dist/components/CommentsPanel/CommentsContext.d.ts.map +1 -1
  9. package/dist/components/CommentsPanel/CommentsPanel.impl.js +1 -1
  10. package/dist/components/CommentsPanel/CommentsPanel.types.d.ts +26 -0
  11. package/dist/components/CommentsPanel/CommentsPanel.types.d.ts.map +1 -1
  12. package/dist/components/CreateItemFlow/CreateItemFlow.types.d.ts +4 -10
  13. package/dist/components/CreateItemFlow/CreateItemFlow.types.d.ts.map +1 -1
  14. package/dist/components/CreateItemFlow/index.d.ts +15 -3
  15. package/dist/components/CreateItemFlow/index.d.ts.map +1 -1
  16. package/dist/components/CreateItemFlow/index.js +63 -134
  17. package/dist/components/DynamicLayout/index.d.ts +12 -9
  18. package/dist/components/DynamicLayout/index.d.ts.map +1 -1
  19. package/dist/components/DynamicLayout/index.js +38 -37
  20. package/dist/components/Menu/IconMenuItem.js +1 -1
  21. package/dist/components/Menu/NestedMenuItem.js +1 -1
  22. package/dist/components/Menu/index.js +1 -1
  23. package/dist/components/Menu/nestedMenuItemsFromObject.js +1 -1
  24. package/dist/components/Notification/NotificationBody/NotificationList/NotificationList.js +1 -1
  25. package/dist/components/Notification/index.js +1 -1
  26. package/dist/components/Stepper/index.js +1 -1
  27. package/dist/components/Table/index.js +1 -1
  28. package/dist/components/Table/withCommentIcon.d.ts.map +1 -1
  29. package/dist/components/Table/withCommentIcon.js +3 -1
  30. package/dist/components/TableOld/index.js +1 -1
  31. package/dist/components/common/MentionEditor/index.js +1 -1
  32. package/dist/components/index.d.ts +0 -1
  33. package/dist/components/index.d.ts.map +1 -1
  34. package/dist/components/index.js +0 -2
  35. package/dist/mcp-component-registry.json +58 -845
  36. package/dist/node_modules/@mui/system/colorManipulator.js +2 -2
  37. package/dist/node_modules/call-bind/index.js +1 -1
  38. package/dist/node_modules/hoist-non-react-statics/node_modules/react-is/index.js +1 -1
  39. package/dist/node_modules/react-is/index.js +1 -1
  40. package/dist/node_modules/react-with-styles-interface-css/dist/index.js +1 -1
  41. package/package.json +5 -5
  42. package/dist/components/TableV36/AdvanceSearchModalItem.d.ts +0 -27
  43. package/dist/components/TableV36/AdvanceSearchModalItem.d.ts.map +0 -1
  44. package/dist/components/TableV36/AdvanceSortModal.d.ts +0 -8
  45. package/dist/components/TableV36/AdvanceSortModal.d.ts.map +0 -1
  46. package/dist/components/TableV36/AdvanceSortModal.js +0 -297
  47. package/dist/components/TableV36/AgGridHeader.d.ts +0 -16
  48. package/dist/components/TableV36/AgGridHeader.d.ts.map +0 -1
  49. package/dist/components/TableV36/AgGridHeader.js +0 -799
  50. package/dist/components/TableV36/CellTooltip.d.ts +0 -14
  51. package/dist/components/TableV36/CellTooltip.d.ts.map +0 -1
  52. package/dist/components/TableV36/CellTooltip.js +0 -11
  53. package/dist/components/TableV36/CommentsPortal.d.ts +0 -31
  54. package/dist/components/TableV36/CommentsPortal.d.ts.map +0 -1
  55. package/dist/components/TableV36/CommentsPortal.js +0 -362
  56. package/dist/components/TableV36/NewAdvanceSearchModal/NewAdvanceSearchModal.d.ts +0 -13
  57. package/dist/components/TableV36/NewAdvanceSearchModal/NewAdvanceSearchModal.d.ts.map +0 -1
  58. package/dist/components/TableV36/NewAdvanceSearchModal/NewAdvanceSearchModal.js +0 -282
  59. package/dist/components/TableV36/NewAdvanceSearchModal/NewAdvanceSearchModalItem.d.ts +0 -16
  60. package/dist/components/TableV36/NewAdvanceSearchModal/NewAdvanceSearchModalItem.d.ts.map +0 -1
  61. package/dist/components/TableV36/NewAdvanceSearchModal/NewAdvanceSearchModalItem.js +0 -302
  62. package/dist/components/TableV36/NoComments.d.ts +0 -16
  63. package/dist/components/TableV36/NoComments.d.ts.map +0 -1
  64. package/dist/components/TableV36/NoComments.js +0 -237
  65. package/dist/components/TableV36/Table.types.d.ts +0 -97
  66. package/dist/components/TableV36/Table.types.d.ts.map +0 -1
  67. package/dist/components/TableV36/actionBar.d.ts +0 -7
  68. package/dist/components/TableV36/actionBar.d.ts.map +0 -1
  69. package/dist/components/TableV36/actionBar.js +0 -31
  70. package/dist/components/TableV36/advanceSearchModal.d.ts +0 -20
  71. package/dist/components/TableV36/advanceSearchModal.d.ts.map +0 -1
  72. package/dist/components/TableV36/filterUtils.d.ts +0 -133
  73. package/dist/components/TableV36/filterUtils.d.ts.map +0 -1
  74. package/dist/components/TableV36/filterUtils.js +0 -478
  75. package/dist/components/TableV36/index.d.ts +0 -3
  76. package/dist/components/TableV36/index.d.ts.map +0 -1
  77. package/dist/components/TableV36/index.js +0 -1632
  78. package/dist/components/TableV36/mockData.d.ts +0 -39
  79. package/dist/components/TableV36/mockData.d.ts.map +0 -1
  80. package/dist/components/TableV36/tableFunctions.d.ts +0 -63
  81. package/dist/components/TableV36/tableFunctions.d.ts.map +0 -1
  82. package/dist/components/TableV36/tableFunctions.js +0 -1796
  83. package/dist/components/TableV36/tableHeader.d.ts +0 -80
  84. package/dist/components/TableV36/tableHeader.d.ts.map +0 -1
  85. package/dist/components/TableV36/tableHeader.js +0 -396
  86. package/dist/components/TableV36/tableIcons.d.ts +0 -3
  87. package/dist/components/TableV36/tableIcons.d.ts.map +0 -1
  88. package/dist/components/TableV36/tableMoreOptions.d.ts +0 -52
  89. package/dist/components/TableV36/tableMoreOptions.d.ts.map +0 -1
  90. package/dist/components/TableV36/tableMoreOptions.js +0 -324
  91. package/dist/components/TableV36/tablePagination.d.ts +0 -7
  92. package/dist/components/TableV36/tablePagination.d.ts.map +0 -1
  93. package/dist/components/TableV36/tablePagination.js +0 -67
  94. package/dist/components/TableV36/tableSettings.d.ts +0 -41
  95. package/dist/components/TableV36/tableSettings.d.ts.map +0 -1
  96. package/dist/components/TableV36/tableSettings.js +0 -317
  97. package/dist/components/TableV36/withCommentIcon.d.ts +0 -13
  98. package/dist/components/TableV36/withCommentIcon.d.ts.map +0 -1
  99. package/dist/components/TableV36/withCommentIcon.js +0 -125
@@ -1,1796 +0,0 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { forwardRef, useState, useRef, useMemo, useEffect, useCallback, memo } from "react";
3
- import { useSensors, useSensor, MouseSensor, TouchSensor, DndContext, closestCenter, DragOverlay } from "@dnd-kit/core";
4
- import { arrayMove, SortableContext, useSortable } from "@dnd-kit/sortable";
5
- import { CSS } from "@dnd-kit/utilities";
6
- import { PersonUser as PersonUser_default, Globe as Globe_default } from "../../node_modules/@impactsmartsuite/impact-icons/dist/index.js";
7
- import default_1$1 from "../../node_modules/@mui/icons-material/KeyboardArrowDown.js";
8
- import default_1$3 from "../../node_modules/@mui/icons-material/KeyboardArrowRight.js";
9
- import default_1 from "../../node_modules/@mui/icons-material/KeyboardArrowUp.js";
10
- import default_1$2 from "../../node_modules/@mui/icons-material/Search.js";
11
- import { getAssetUrl } from "../../utils/assetBase.js";
12
- import { debounce } from "../../utils/debounce.js";
13
- import { isViewNameUnique } from "../../utils/helper.js";
14
- import { Badge } from "../Badge/index.js";
15
- import { Button } from "../Button/index.js";
16
- import { Checkbox } from "../Checkbox/index.js";
17
- import { Input } from "../Input/index.js";
18
- import { Modal } from "../Modal/index.js";
19
- import { Prompt } from "../Prompt/index.js";
20
- import { RadioButtonGroup } from "../RadioButtonGroup/index.js";
21
- import { Select } from "../Select/index.js";
22
- import IconButton from "../../node_modules/@mui/material/IconButton/IconButton.js";
23
- import DragIndicator from "../../node_modules/@mui/icons-material/esm/DragIndicator.js";
24
- const saveViewIcon = getAssetUrl("icons/saveViewIcon.svg");
25
- const saveViewEditIcon = getAssetUrl("icons/saveViewEditIcon.svg");
26
- const saveViewDeleteIcon = getAssetUrl("icons/saveViewDeleteIcon.svg");
27
- const defaultViewIcon = getAssetUrl("icons/defaultViewIcon.svg");
28
- const defaultViewActiveIcon = getAssetUrl("icons/defaultViewIconActive.svg");
29
- const DEFAULT_VIEW_TYPE_ICONS = {
30
- global: /* @__PURE__ */ jsx(Globe_default, { height: 16, width: 16 }),
31
- personal: /* @__PURE__ */ jsx(PersonUser_default, { height: 16, width: 16 })
32
- };
33
- const getViewTypeIcon = (viewType, viewTypeOptions) => {
34
- var _a;
35
- const customIcon = (_a = viewTypeOptions == null ? void 0 : viewTypeOptions.find((option) => option.value === viewType)) == null ? void 0 : _a.icon;
36
- return customIcon || DEFAULT_VIEW_TYPE_ICONS[viewType] || null;
37
- };
38
- const onColMenuFreezeClick = (params) => {
39
- const { pinned } = params.column;
40
- if (pinned) {
41
- freezeColumn(params, false);
42
- } else {
43
- freezeColumn(params, true);
44
- }
45
- };
46
- const getTableMeta = (api) => {
47
- if (!api) return null;
48
- if (!api.__impactTableMeta) {
49
- api.__impactTableMeta = {};
50
- }
51
- return api.__impactTableMeta;
52
- };
53
- const freezeColumn = (params, isPinned) => {
54
- const { colId } = params.column;
55
- params.api.applyColumnState({
56
- state: [{ colId, pinned: isPinned ? "left" : null }]
57
- });
58
- };
59
- const onColMenuAutoAdjustClick = (params) => {
60
- const colDefExtra = { ...params.column.colDef.extra };
61
- params.column.colDef.extra = colDefExtra;
62
- params.api.autoSizeColumns([params.column]);
63
- };
64
- const sortFunc = (columnData, sortBy, api) => {
65
- api.api.applyColumnState({
66
- state: [{ colId: columnData.colId, sort: sortBy }],
67
- defaultState: { sort: null }
68
- });
69
- };
70
- const getMainMenuItems = (params) => {
71
- var _a, _b, _c;
72
- if (!(params == null ? void 0 : params.column)) {
73
- return [];
74
- }
75
- const { onFontSizeChange, onNumberFormatChange } = params;
76
- const { colDef, pinned, sort, actualWidth } = params.column;
77
- const columnMenuItems = [];
78
- columnMenuItems.push(
79
- {
80
- name: "Column Settings",
81
- cssClasses: ["settings-main-container"]
82
- },
83
- "separator"
84
- );
85
- columnMenuItems.push({
86
- name: "Sort",
87
- subMenu: [
88
- {
89
- name: "Sort A to Z",
90
- action: () => {
91
- sortFunc(params.column, "asc", params);
92
- },
93
- checked: sort === "asc"
94
- },
95
- {
96
- name: "Sort Z to A",
97
- checked: sort === "desc",
98
- action: () => {
99
- sortFunc(params.column, "desc", params);
100
- }
101
- },
102
- {
103
- name: "Reset",
104
- action: () => {
105
- sortFunc(params.column, null, params);
106
- }
107
- }
108
- ],
109
- disabled: !(colDef == null ? void 0 : colDef.sortable)
110
- });
111
- columnMenuItems.push({
112
- name: pinned ? "Unfreeze Column" : "Freeze Column",
113
- action: () => {
114
- onColMenuFreezeClick(params);
115
- }
116
- });
117
- columnMenuItems.push({
118
- name: "Column width",
119
- subMenu: [
120
- {
121
- name: "Auto Adjust",
122
- action: () => {
123
- onColMenuAutoAdjustClick(params);
124
- },
125
- // if extra.width property is not present- column is auto adjusted
126
- checked: actualWidth !== ((_a = colDef == null ? void 0 : colDef.extra) == null ? void 0 : _a.width)
127
- },
128
- {
129
- name: "Custom width",
130
- action: () => {
131
- var _a2;
132
- params.api.setColumnWidths([
133
- { key: params.column.colId, newWidth: (_a2 = colDef == null ? void 0 : colDef.extra) == null ? void 0 : _a2.width }
134
- ]);
135
- },
136
- // if extra.width property is present- column has custom width
137
- checked: ((_b = colDef == null ? void 0 : colDef.extra) == null ? void 0 : _b.width) === actualWidth,
138
- disabled: !((_c = colDef == null ? void 0 : colDef.extra) == null ? void 0 : _c.width)
139
- }
140
- ]
141
- });
142
- columnMenuItems.push({
143
- name: "Wrap Text",
144
- disabled: true
145
- });
146
- columnMenuItems.push(
147
- {
148
- name: "Format",
149
- cssClasses: ["format-main-container"]
150
- },
151
- "separator"
152
- );
153
- columnMenuItems.push({
154
- name: "Numeric Values",
155
- subMenu: [
156
- {
157
- name: "Full Number",
158
- action: () => onNumberFormatChange("full")
159
- },
160
- {
161
- name: "In K",
162
- action: () => onNumberFormatChange("thousand")
163
- },
164
- {
165
- name: "In Mn",
166
- action: () => onNumberFormatChange("million")
167
- },
168
- {
169
- name: "In Bn",
170
- action: () => onNumberFormatChange("billion")
171
- }
172
- ],
173
- disabled: !onFontSizeChange
174
- });
175
- columnMenuItems.push({
176
- name: "Font Size",
177
- subMenu: [
178
- {
179
- name: "Small Font",
180
- action: () => onFontSizeChange("small")
181
- },
182
- {
183
- name: "Medium Font",
184
- action: () => onFontSizeChange("medium")
185
- },
186
- {
187
- name: "Large Font",
188
- action: () => onFontSizeChange("large")
189
- }
190
- ],
191
- disabled: !onNumberFormatChange
192
- });
193
- return columnMenuItems;
194
- };
195
- const filterColumnsBySearch = (columns, searchText) => {
196
- if (!searchText) return columns;
197
- return columns.map((column) => {
198
- const matches = column.headerName.toLowerCase().includes(searchText);
199
- const filteredChildren = column.children ? filterColumnsBySearch(column.children, searchText) : null;
200
- if (matches || (filteredChildren == null ? void 0 : filteredChildren.length) > 0) {
201
- return {
202
- ...column,
203
- children: filteredChildren
204
- };
205
- }
206
- return null;
207
- }).filter(Boolean);
208
- };
209
- const getDirectColumnIds = (columns) => (columns || []).map((col) => col.colId).filter(Boolean);
210
- const getTopLevelColumnIds = getDirectColumnIds;
211
- const findColumnById = (columns, colId) => {
212
- var _a;
213
- for (const col of columns || []) {
214
- if (col.colId === colId) return col;
215
- if ((_a = col.children) == null ? void 0 : _a.length) {
216
- const found = findColumnById(col.children, colId);
217
- if (found) return found;
218
- }
219
- }
220
- return null;
221
- };
222
- const findColumnLocation = (columns, colId, parent = null) => {
223
- var _a;
224
- for (const col of columns || []) {
225
- if (col.colId === colId) {
226
- return { column: col, parent, siblings: columns };
227
- }
228
- if ((_a = col.children) == null ? void 0 : _a.length) {
229
- const found = findColumnLocation(col.children, colId, col);
230
- if (found) return found;
231
- }
232
- }
233
- return null;
234
- };
235
- const reorderSiblingsInTree = (columns, parentId, siblingOrder) => (columns || []).map((col) => {
236
- var _a, _b;
237
- if (col.colId === parentId && ((_a = col.children) == null ? void 0 : _a.length)) {
238
- const byId = new Map(col.children.map((c) => [c.colId, c]));
239
- const ordered = siblingOrder.map((id) => byId.get(id)).filter(Boolean);
240
- const orderedSet = new Set(siblingOrder);
241
- const rest = col.children.filter((c) => !orderedSet.has(c.colId));
242
- return { ...col, children: [...ordered, ...rest] };
243
- }
244
- if ((_b = col.children) == null ? void 0 : _b.length) {
245
- return {
246
- ...col,
247
- children: reorderSiblingsInTree(col.children, parentId, siblingOrder)
248
- };
249
- }
250
- return col;
251
- });
252
- const collectLeafColIds = (column) => {
253
- var _a;
254
- if (!((_a = column == null ? void 0 : column.children) == null ? void 0 : _a.length)) {
255
- return (column == null ? void 0 : column.colId) ? [column.colId] : [];
256
- }
257
- return column.children.flatMap((child) => collectLeafColIds(child));
258
- };
259
- const buildOrderedLeafIds = (topLevelColumns, topLevelOrder) => {
260
- const byId = new Map(topLevelColumns.map((c) => [c.colId, c]));
261
- return topLevelOrder.flatMap((id) => {
262
- const col = byId.get(id);
263
- return col ? collectLeafColIds(col) : [id];
264
- });
265
- };
266
- const applyColumnReorderToGrid = (api, { allColumns, frozenOrder, scrollableOrder, pinChanges, childReorder }) => {
267
- if (!api) return;
268
- let columns = allColumns;
269
- if ((childReorder == null ? void 0 : childReorder.parentId) && (childReorder == null ? void 0 : childReorder.siblingOrder)) {
270
- columns = reorderSiblingsInTree(columns, childReorder.parentId, childReorder.siblingOrder);
271
- }
272
- const byId = new Map(columns.map((c) => [c.colId, c]));
273
- if (pinChanges == null ? void 0 : pinChanges.length) {
274
- const pinState = [];
275
- pinChanges.forEach(({ colId, pinned }) => {
276
- const col = byId.get(colId) || findColumnById(columns, colId);
277
- const leafIds = col ? collectLeafColIds(col) : [colId];
278
- leafIds.forEach((leafId) => {
279
- pinState.push({ colId: leafId, pinned });
280
- });
281
- });
282
- api.applyColumnState({ state: pinState });
283
- }
284
- const orderedLeafIds = [
285
- ...buildOrderedLeafIds(columns, frozenOrder),
286
- ...buildOrderedLeafIds(columns, scrollableOrder)
287
- ];
288
- const seen = /* @__PURE__ */ new Set();
289
- const uniqueLeafIds = orderedLeafIds.filter((id) => {
290
- if (seen.has(id)) return false;
291
- seen.add(id);
292
- return true;
293
- });
294
- api.applyColumnState({
295
- state: uniqueLeafIds.map((colId) => ({ colId })),
296
- applyOrder: true
297
- });
298
- };
299
- const collectLeafVisibility = (columns) => {
300
- const leaves = [];
301
- const walk = (cols) => {
302
- cols.forEach((col) => {
303
- var _a;
304
- if (((_a = col.children) == null ? void 0 : _a.length) > 0) {
305
- walk(col.children);
306
- } else {
307
- leaves.push(!!col.isVisible);
308
- }
309
- });
310
- };
311
- walk(columns);
312
- return leaves;
313
- };
314
- const getCheckState = (columns) => {
315
- const leaves = collectLeafVisibility(columns);
316
- if (leaves.length === 0) {
317
- return { checked: false, indeterminate: false };
318
- }
319
- const visibleCount = leaves.filter(Boolean).length;
320
- if (visibleCount === 0) {
321
- return { checked: false, indeterminate: false };
322
- }
323
- if (visibleCount === leaves.length) {
324
- return { checked: true, indeterminate: false };
325
- }
326
- return { checked: true, indeterminate: true };
327
- };
328
- const applyVisibilityToggle = (columns, colId) => {
329
- const visibilityMap = /* @__PURE__ */ new Map();
330
- const updateChildren = (children, visibility) => children.map((column) => {
331
- visibilityMap.set(column.colId, visibility);
332
- return {
333
- ...column,
334
- isVisible: visibility,
335
- children: column.children ? updateChildren(column.children, visibility) : null
336
- };
337
- });
338
- const update = (cols) => cols.map((column) => {
339
- if (column.colId === colId) {
340
- const newVisibility = !column.isVisible;
341
- visibilityMap.set(column.colId, newVisibility);
342
- return {
343
- ...column,
344
- isVisible: newVisibility,
345
- children: column.children ? updateChildren(column.children, newVisibility) : null
346
- };
347
- }
348
- if (column.children) {
349
- const updatedChildren = update(column.children);
350
- const isAnyChildVisible = updatedChildren.some((child) => child.isVisible);
351
- visibilityMap.set(column.colId, isAnyChildVisible);
352
- return {
353
- ...column,
354
- isVisible: isAnyChildVisible,
355
- children: updatedChildren
356
- };
357
- }
358
- return column;
359
- });
360
- return { columns: update(columns), visibilityMap };
361
- };
362
- const applyVisibilityToAll = (columns, visibility) => {
363
- const visibilityMap = /* @__PURE__ */ new Map();
364
- const update = (cols) => cols.map((column) => {
365
- visibilityMap.set(column.colId, visibility);
366
- return {
367
- ...column,
368
- isVisible: visibility,
369
- children: column.children ? update(column.children) : null
370
- };
371
- });
372
- return { columns: update(columns), visibilityMap };
373
- };
374
- const applyVisibilityMapToGrid = (api, visibilityMap) => {
375
- if (!api || !visibilityMap.size) return;
376
- const showIds = [];
377
- const hideIds = [];
378
- visibilityMap.forEach((visible, colId) => {
379
- if (visible) showIds.push(colId);
380
- else hideIds.push(colId);
381
- });
382
- if (showIds.length) api.setColumnsVisible(showIds, true);
383
- if (hideIds.length) api.setColumnsVisible(hideIds, false);
384
- };
385
- const capitalizeHeader = (name) => name ? name.charAt(0).toUpperCase() + name.slice(1) : "";
386
- const mouseSensorOptions = { activationConstraint: { distance: 5 } };
387
- const touchSensorOptions = { activationConstraint: { delay: 200, tolerance: 5 } };
388
- const ColumnRowContent = memo(function ColumnRowContent2({
389
- column,
390
- level,
391
- isCollapsed,
392
- hasChildren,
393
- isIndeterminate,
394
- checkboxChecked,
395
- reserveCollapseSlot,
396
- rowClassName,
397
- dragIconClass,
398
- onToggleCollapse,
399
- onToggleVisibility,
400
- onKeyboardReorder,
401
- dragHandleProps,
402
- isOverlay
403
- }) {
404
- const rowStyle = useMemo(
405
- () => ({
406
- ["--indent-level"]: level
407
- }),
408
- [level]
409
- );
410
- const handleCollapseClick = useCallback(
411
- (e) => {
412
- e.stopPropagation();
413
- onToggleCollapse == null ? void 0 : onToggleCollapse(column.colId);
414
- },
415
- [onToggleCollapse, column.colId]
416
- );
417
- const handleVisibilityChange = useCallback(() => {
418
- onToggleVisibility == null ? void 0 : onToggleVisibility(column.colId);
419
- }, [onToggleVisibility, column.colId]);
420
- const handleRowKeyDown = useCallback(
421
- (e) => {
422
- var _a, _b, _c, _d;
423
- if (isOverlay) return;
424
- const current = e.currentTarget;
425
- if (e.altKey && (e.key === "ArrowUp" || e.key === "ArrowDown")) {
426
- e.preventDefault();
427
- onKeyboardReorder == null ? void 0 : onKeyboardReorder(column.colId, e.key === "ArrowUp" ? -1 : 1);
428
- return;
429
- }
430
- switch (e.key) {
431
- case "ArrowDown": {
432
- e.preventDefault();
433
- const next = (_b = (_a = current.parentElement) == null ? void 0 : _a.nextElementSibling) == null ? void 0 : _b.querySelector('[role="treeitem"]');
434
- next == null ? void 0 : next.focus();
435
- break;
436
- }
437
- case "ArrowUp": {
438
- e.preventDefault();
439
- const prev = (_d = (_c = current.parentElement) == null ? void 0 : _c.previousElementSibling) == null ? void 0 : _d.querySelector('[role="treeitem"]');
440
- prev == null ? void 0 : prev.focus();
441
- break;
442
- }
443
- case "ArrowRight": {
444
- if (hasChildren && isCollapsed) {
445
- e.preventDefault();
446
- onToggleCollapse == null ? void 0 : onToggleCollapse(column.colId);
447
- }
448
- break;
449
- }
450
- case "ArrowLeft": {
451
- if (hasChildren && !isCollapsed) {
452
- e.preventDefault();
453
- onToggleCollapse == null ? void 0 : onToggleCollapse(column.colId);
454
- }
455
- break;
456
- }
457
- case "Enter":
458
- case " ": {
459
- if (column.disabled) break;
460
- e.preventDefault();
461
- onToggleVisibility == null ? void 0 : onToggleVisibility(column.colId);
462
- break;
463
- }
464
- }
465
- },
466
- [
467
- isOverlay,
468
- level,
469
- hasChildren,
470
- isCollapsed,
471
- onToggleCollapse,
472
- onToggleVisibility,
473
- onKeyboardReorder,
474
- column.colId,
475
- column.disabled
476
- ]
477
- );
478
- return /* @__PURE__ */ jsxs(
479
- "div",
480
- {
481
- "aria-checked": isIndeterminate ? "mixed" : checkboxChecked,
482
- "aria-expanded": hasChildren ? !isCollapsed : void 0,
483
- "aria-label": column.headerName,
484
- "aria-roledescription": !isOverlay && dragHandleProps ? "sortable column" : void 0,
485
- "aria-selected": !!checkboxChecked,
486
- className: rowClassName,
487
- "data-col-id": column.colId,
488
- role: "treeitem",
489
- style: rowStyle,
490
- tabIndex: isOverlay ? -1 : 0,
491
- onKeyDown: handleRowKeyDown,
492
- children: [
493
- /* @__PURE__ */ jsxs("div", { className: "table-setting-column-leading", children: [
494
- reserveCollapseSlot && /* @__PURE__ */ jsx("span", { "aria-hidden": !hasChildren, className: "table-setting-column-collapse-slot", children: hasChildren ? /* @__PURE__ */ jsx(
495
- IconButton,
496
- {
497
- "aria-label": isCollapsed ? "Expand column group" : "Collapse column group",
498
- className: "table-setting-column-collapse-btn",
499
- onClick: handleCollapseClick,
500
- children: isCollapsed ? /* @__PURE__ */ jsx(default_1$3, {}) : /* @__PURE__ */ jsx(default_1, {})
501
- }
502
- ) : null }),
503
- /* @__PURE__ */ jsx(
504
- Checkbox,
505
- {
506
- checked: checkboxChecked,
507
- disabled: column.disabled || isOverlay,
508
- variant: isIndeterminate ? "dashed" : "default",
509
- onChange: handleVisibilityChange
510
- }
511
- )
512
- ] }),
513
- /* @__PURE__ */ jsxs("div", { className: "table-setting-column-trailing", children: [
514
- dragHandleProps && /* @__PURE__ */ jsx(
515
- "span",
516
- {
517
- className: "table-setting-column-drag-handle",
518
- ...dragHandleProps,
519
- "aria-label": `Reorder ${column.headerName}`,
520
- children: /* @__PURE__ */ jsx(DragIndicator, { className: dragIconClass })
521
- }
522
- ),
523
- /* @__PURE__ */ jsx("span", { className: "table-setting-column-name", children: capitalizeHeader(column.headerName) })
524
- ] })
525
- ]
526
- }
527
- );
528
- });
529
- const areSortablePropsEqual = (prev, next) => prev.column.colId === next.column.colId && prev.column.isVisible === next.column.isVisible && prev.column.headerName === next.column.headerName && prev.column.disabled === next.column.disabled && prev.isIndeterminate === next.isIndeterminate && prev.checkboxChecked === next.checkboxChecked && prev.reserveCollapseSlot === next.reserveCollapseSlot && prev.level === next.level && prev.isCollapsed === next.isCollapsed && prev.hasChildren === next.hasChildren && prev.rowClassName === next.rowClassName && prev.dragIconClass === next.dragIconClass && prev.onToggleCollapse === next.onToggleCollapse && prev.onToggleVisibility === next.onToggleVisibility && prev.onKeyboardReorder === next.onKeyboardReorder && prev.children === next.children;
530
- const SortableColumnItem = memo(function SortableColumnItem2({
531
- column,
532
- level,
533
- isCollapsed,
534
- hasChildren,
535
- isIndeterminate,
536
- checkboxChecked,
537
- reserveCollapseSlot,
538
- rowClassName,
539
- dragIconClass,
540
- onToggleCollapse,
541
- onToggleVisibility,
542
- onKeyboardReorder,
543
- children
544
- }) {
545
- const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
546
- id: column.colId
547
- });
548
- const style = useMemo(
549
- () => ({
550
- transform: CSS.Transform.toString(transform),
551
- transition,
552
- // Placeholder stays in-flow; DragOverlay renders the floating preview
553
- opacity: isDragging ? 0 : void 0,
554
- zIndex: isDragging ? 0 : void 0
555
- }),
556
- [transform, transition, isDragging]
557
- );
558
- return /* @__PURE__ */ jsxs(
559
- "div",
560
- {
561
- ref: setNodeRef,
562
- className: isDragging ? "table-setting-column-sortable--dragging" : void 0,
563
- style,
564
- children: [
565
- /* @__PURE__ */ jsx(
566
- ColumnRowContent,
567
- {
568
- checkboxChecked,
569
- column,
570
- dragHandleProps: { ...attributes, ...listeners },
571
- dragIconClass,
572
- hasChildren,
573
- isCollapsed,
574
- isIndeterminate,
575
- level,
576
- reserveCollapseSlot,
577
- rowClassName,
578
- onKeyboardReorder,
579
- onToggleCollapse,
580
- onToggleVisibility
581
- }
582
- ),
583
- hasChildren && !isCollapsed && children
584
- ]
585
- }
586
- );
587
- }, areSortablePropsEqual);
588
- const NestedColumnItem = memo(function NestedColumnItem2({
589
- column,
590
- level,
591
- isCollapsed,
592
- hasChildren,
593
- isIndeterminate,
594
- checkboxChecked,
595
- reserveCollapseSlot,
596
- rowClassName,
597
- dragIconClass,
598
- onToggleCollapse,
599
- onToggleVisibility,
600
- children
601
- }) {
602
- return /* @__PURE__ */ jsxs("div", { children: [
603
- /* @__PURE__ */ jsx(
604
- ColumnRowContent,
605
- {
606
- checkboxChecked,
607
- column,
608
- dragIconClass,
609
- hasChildren,
610
- isCollapsed,
611
- isIndeterminate,
612
- level,
613
- reserveCollapseSlot,
614
- rowClassName,
615
- onToggleCollapse,
616
- onToggleVisibility
617
- }
618
- ),
619
- hasChildren && !isCollapsed && children
620
- ] });
621
- });
622
- const Columns = forwardRef((props, ref) => {
623
- var _a, _b, _c, _d, _e, _f;
624
- const [frozenColumn, setFrozenColumn] = useState([]);
625
- const [scrollableColumn, setScrollableColumn] = useState([]);
626
- const [searchInputValue, setSearchInputValue] = useState("");
627
- const [debouncedSearchText, setDebouncedSearchText] = useState("");
628
- const [collapsedScrollable, setCollapsedScrollable] = useState(false);
629
- const [collapsedColumn, setCollapsedcolumn] = useState(false);
630
- const [collapsedScrollColumns, setCollapsedScrollColumns] = useState({});
631
- const [collapsedFrozenColumns, setCollapsedFrozenColumns] = useState({});
632
- const [activeDragId, setActiveDragId] = useState(null);
633
- const reorderLiveRegionRef = useRef(null);
634
- const [openSaveViewModal, setOpenSaveViewModal] = useState(false);
635
- const [isDefaultView, setIsDefaultView] = useState(false);
636
- const [selectedViewType, setSelectedViewType] = useState(
637
- (_a = props.saveViewCustomFilter) == null ? void 0 : _a.selectedOption
638
- );
639
- const [savedViewsOptions, setSavedViewsOptions] = useState(props.savedViewsOptions || []);
640
- const [filteredSavedViewsOptions, setFilteredSavedViewsOptions] = useState(
641
- props.savedViewsOptions || []
642
- );
643
- const [currentSaveViewOptions, setCurrentSaveViewOptions] = useState([]);
644
- const [selectedSavedView, setSelectedSavedView] = useState(null);
645
- const [inputValue, setInputValue] = useState("");
646
- const [isOpen, setIsOpen] = useState(false);
647
- const [openSaveViewMenu, setOpenSaveViewMenu] = useState(false);
648
- const [selectedBadge, setSelectedBadge] = useState("All");
649
- const [isEditView, setIsEditView] = useState(false);
650
- const [editedView, setEditedView] = useState(null);
651
- const [saveViewSearchText, setSaveViewSearchText] = useState("");
652
- const [openDeletePrompt, setOpenDeletePrompt] = useState(false);
653
- const [deleteView, setDeleteView] = useState(null);
654
- const [selectedView, setSelectedView] = useState(null);
655
- const isDraggingRef = useRef(false);
656
- const isInternalUpdateRef = useRef(false);
657
- const isColumnPinnedRef = useRef(false);
658
- const debouncedSetSearchText = useMemo(
659
- () => debounce((value) => {
660
- setDebouncedSearchText(value);
661
- }, 150),
662
- []
663
- );
664
- useEffect(
665
- () => () => {
666
- debouncedSetSearchText.cancel();
667
- },
668
- [debouncedSetSearchText]
669
- );
670
- const filteredFrozenColumns = useMemo(
671
- () => filterColumnsBySearch(frozenColumn, debouncedSearchText),
672
- [frozenColumn, debouncedSearchText]
673
- );
674
- const filteredScrollableColumns = useMemo(
675
- () => filterColumnsBySearch(scrollableColumn, debouncedSearchText),
676
- [scrollableColumn, debouncedSearchText]
677
- );
678
- const frozenColumnOrder = useMemo(
679
- () => getTopLevelColumnIds(
680
- filteredFrozenColumns.filter((c) => c.headerName !== "N/A" && c.isVisible !== false)
681
- ),
682
- [filteredFrozenColumns]
683
- );
684
- const scrollableColumnOrder = useMemo(
685
- () => getTopLevelColumnIds(
686
- filteredScrollableColumns.filter((c) => c.headerName !== "N/A" && c.isVisible !== false)
687
- ),
688
- [filteredScrollableColumns]
689
- );
690
- const fullFrozenOrder = useMemo(
691
- () => getTopLevelColumnIds(frozenColumn.filter((c) => c.headerName !== "N/A")),
692
- [frozenColumn]
693
- );
694
- const fullScrollableOrder = useMemo(
695
- () => getTopLevelColumnIds(scrollableColumn.filter((c) => c.headerName !== "N/A")),
696
- [scrollableColumn]
697
- );
698
- const sortableItems = useMemo(
699
- () => [...scrollableColumnOrder, ...frozenColumnOrder],
700
- [scrollableColumnOrder, frozenColumnOrder]
701
- );
702
- const allColumnsForLookup = useMemo(
703
- () => [...frozenColumn, ...scrollableColumn],
704
- [frozenColumn, scrollableColumn]
705
- );
706
- const activeDragColumn = useMemo(
707
- () => activeDragId ? findColumnById(allColumnsForLookup, activeDragId) : null,
708
- [activeDragId, allColumnsForLookup]
709
- );
710
- const mainCheckState = useMemo(
711
- () => getCheckState(filteredScrollableColumns),
712
- [filteredScrollableColumns]
713
- );
714
- const allCheckState = useMemo(
715
- () => getCheckState([...filteredFrozenColumns, ...filteredScrollableColumns]),
716
- [filteredFrozenColumns, filteredScrollableColumns]
717
- );
718
- const mainChecked = mainCheckState.checked;
719
- const allColumnVisibility = allCheckState.checked;
720
- const sensors = useSensors(
721
- useSensor(MouseSensor, mouseSensorOptions),
722
- useSensor(TouchSensor, touchSensorOptions)
723
- );
724
- useEffect(() => {
725
- const views = props.savedViewsOptions ?? [];
726
- setSavedViewsOptions(views);
727
- setFilteredSavedViewsOptions(views);
728
- setSelectedView(views.filter((view) => view.isActive));
729
- if (views.length === 0) {
730
- setOpenSaveViewMenu(false);
731
- setSaveViewSearchText("");
732
- }
733
- const matchingViews = views.filter(
734
- (view) => !selectedViewType || view.viewType === selectedViewType
735
- );
736
- setCurrentSaveViewOptions(
737
- views.map((view) => {
738
- var _a2;
739
- return {
740
- label: /* @__PURE__ */ jsxs("span", { className: "save-view-select-option-label", children: [
741
- /* @__PURE__ */ jsx("span", { className: "save-view-select-option-icon", children: getViewTypeIcon(view.viewType, (_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.options) }),
742
- view.viewName
743
- ] }),
744
- value: view.viewName,
745
- disabled: view == null ? void 0 : view.isDisabled,
746
- viewType: view.viewType,
747
- isDefaultView: view.isDefaultView
748
- };
749
- })
750
- );
751
- setSelectedSavedView(
752
- (prev) => (prev == null ? void 0 : prev.value) && matchingViews.some((view) => view.viewName === prev.value) ? prev : null
753
- );
754
- }, [props.savedViewsOptions, selectedViewType]);
755
- useEffect(() => {
756
- if (selectedSavedView == null ? void 0 : selectedSavedView.value) {
757
- setInputValue(selectedSavedView.value);
758
- setSelectedViewType(selectedSavedView.viewType);
759
- setIsDefaultView(!!selectedSavedView.isDefaultView);
760
- } else {
761
- setInputValue("");
762
- setIsDefaultView(false);
763
- }
764
- }, [selectedSavedView]);
765
- const isReplaceViewSelected = !!(selectedSavedView == null ? void 0 : selectedSavedView.value);
766
- const isInputValueEmpty = !inputValue.trim();
767
- const getColumnDefs = useCallback((columns) => {
768
- return columns.map((column) => {
769
- if (column.children) {
770
- const updatedChildren = getColumnDefs(column.children);
771
- const allChildrenHidden = updatedChildren.every((child) => child.hide === true);
772
- return {
773
- ...column,
774
- children: updatedChildren,
775
- hide: allChildrenHidden
776
- };
777
- }
778
- return column;
779
- });
780
- }, []);
781
- const updateColumnState = useCallback(() => {
782
- var _a2, _b2;
783
- const getColumnState = (columns) => columns.map((column) => {
784
- var _a3;
785
- return {
786
- colId: column.colId || column.field || column.headerName,
787
- headerName: column.headerName || column.field || "N/A",
788
- isVisible: !(column == null ? void 0 : column.hide),
789
- isPinned: column.pinned ? true : false,
790
- children: ((_a3 = column == null ? void 0 : column.children) == null ? void 0 : _a3.length) > 0 ? getColumnState(column.children) : null,
791
- disabled: column == null ? void 0 : column.disableColumnCheckboxInSettings
792
- };
793
- });
794
- const columnDefs = getColumnDefs(((_b2 = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api) == null ? void 0 : _b2.getColumnDefs()) || props.column);
795
- const columnState = getColumnState(columnDefs);
796
- const { frozColumn, scrollColumn } = (columnState || []).reduce(
797
- (acc, column) => {
798
- if (column.isPinned) {
799
- acc.frozColumn.push(column);
800
- } else {
801
- acc.scrollColumn.push(column);
802
- }
803
- return acc;
804
- },
805
- { frozColumn: [], scrollColumn: [] }
806
- );
807
- setFrozenColumn(frozColumn);
808
- setScrollableColumn(scrollColumn);
809
- }, [getColumnDefs, ref, props.column]);
810
- const debouncedUpdateColumnState = useMemo(
811
- () => debounce(updateColumnState, 100),
812
- [updateColumnState]
813
- );
814
- useEffect(() => {
815
- var _a2, _b2, _c2, _d2, _e2, _f2;
816
- if (props.showMenu || isColumnPinnedRef.current) {
817
- isColumnPinnedRef.current = false;
818
- updateColumnState();
819
- const onColumnEvent = () => {
820
- if (isDraggingRef.current || isInternalUpdateRef.current) {
821
- return;
822
- }
823
- isColumnPinnedRef.current = true;
824
- debouncedUpdateColumnState();
825
- };
826
- if (ref == null ? void 0 : ref.current) {
827
- (_b2 = (_a2 = ref.current) == null ? void 0 : _a2.api) == null ? void 0 : _b2.addEventListener("columnPinned", onColumnEvent);
828
- (_d2 = (_c2 = ref.current) == null ? void 0 : _c2.api) == null ? void 0 : _d2.addEventListener("columnMoved", onColumnEvent);
829
- (_f2 = (_e2 = ref.current) == null ? void 0 : _e2.api) == null ? void 0 : _f2.addEventListener("columnVisible", onColumnEvent);
830
- }
831
- return () => {
832
- var _a3, _b3, _c3, _d3, _e3, _f3;
833
- if (ref == null ? void 0 : ref.current) {
834
- (_b3 = (_a3 = ref.current) == null ? void 0 : _a3.api) == null ? void 0 : _b3.removeEventListener("columnPinned", onColumnEvent);
835
- (_d3 = (_c3 = ref.current) == null ? void 0 : _c3.api) == null ? void 0 : _d3.removeEventListener("columnMoved", onColumnEvent);
836
- (_f3 = (_e3 = ref.current) == null ? void 0 : _e3.api) == null ? void 0 : _f3.removeEventListener("columnVisible", onColumnEvent);
837
- }
838
- };
839
- }
840
- }, [props.showMenu, updateColumnState, debouncedUpdateColumnState, ref]);
841
- const handleSearchChange = useCallback(
842
- (e) => {
843
- const value = e.target.value;
844
- setSearchInputValue(value);
845
- debouncedSetSearchText(value.toLowerCase());
846
- },
847
- [debouncedSetSearchText]
848
- );
849
- const toggleColumnVisibility = useCallback(
850
- (colId, section) => {
851
- var _a2;
852
- const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
853
- const setter = section === "frozen" ? setFrozenColumn : setScrollableColumn;
854
- setter((prev) => {
855
- const { columns, visibilityMap } = applyVisibilityToggle(prev, colId);
856
- isInternalUpdateRef.current = true;
857
- applyVisibilityMapToGrid(api, visibilityMap);
858
- queueMicrotask(() => {
859
- isInternalUpdateRef.current = false;
860
- });
861
- return columns;
862
- });
863
- },
864
- [ref]
865
- );
866
- const toggleColumnVisibilityFrozen = useCallback(
867
- (colId) => {
868
- toggleColumnVisibility(colId, "frozen");
869
- },
870
- [toggleColumnVisibility]
871
- );
872
- const toggleColumnVisibilityScroll = useCallback(
873
- (colId) => {
874
- toggleColumnVisibility(colId, "scrollable");
875
- },
876
- [toggleColumnVisibility]
877
- );
878
- const onMainCheckboxChange = useCallback(() => {
879
- var _a2;
880
- const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
881
- const nextVisible = !mainChecked;
882
- const filteredIds = debouncedSearchText ? new Set(getTopLevelColumnIds(filteredScrollableColumns)) : null;
883
- setScrollableColumn((prev) => {
884
- let result;
885
- if (filteredIds) {
886
- const visibilityMap = /* @__PURE__ */ new Map();
887
- const update = (cols) => cols.map((column) => {
888
- var _a3;
889
- const inFilter = filteredIds.has(column.colId) || ((_a3 = column.children) == null ? void 0 : _a3.some((c) => filteredIds.has(c.colId)));
890
- if (!inFilter) return column;
891
- visibilityMap.set(column.colId, nextVisible);
892
- return {
893
- ...column,
894
- isVisible: nextVisible,
895
- children: column.children ? update(column.children) : null
896
- };
897
- });
898
- result = { columns: update(prev), visibilityMap };
899
- } else {
900
- result = applyVisibilityToAll(prev, nextVisible);
901
- }
902
- isInternalUpdateRef.current = true;
903
- applyVisibilityMapToGrid(api, result.visibilityMap);
904
- queueMicrotask(() => {
905
- isInternalUpdateRef.current = false;
906
- });
907
- return result.columns;
908
- });
909
- }, [ref, mainChecked, filteredScrollableColumns, debouncedSearchText]);
910
- const onAllColumnCheckBoxChange = useCallback(() => {
911
- var _a2;
912
- const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
913
- const nextVisible = !allColumnVisibility;
914
- const frozenResult = applyVisibilityToAll(frozenColumn, nextVisible);
915
- const scrollResult = applyVisibilityToAll(scrollableColumn, nextVisible);
916
- const combinedMap = new Map([...frozenResult.visibilityMap, ...scrollResult.visibilityMap]);
917
- isInternalUpdateRef.current = true;
918
- applyVisibilityMapToGrid(api, combinedMap);
919
- setFrozenColumn(frozenResult.columns);
920
- setScrollableColumn(scrollResult.columns);
921
- queueMicrotask(() => {
922
- isInternalUpdateRef.current = false;
923
- });
924
- }, [ref, allColumnVisibility, frozenColumn, scrollableColumn]);
925
- const toggleScrollableCollapse = useCallback((e) => {
926
- e.stopPropagation();
927
- setCollapsedScrollable((prev) => !prev);
928
- }, []);
929
- const toggleColumnCollapse = useCallback((e) => {
930
- e.stopPropagation();
931
- setCollapsedcolumn((prev) => !prev);
932
- }, []);
933
- const toggleScrollColumnCollapse = useCallback((colId) => {
934
- setCollapsedScrollColumns((prev) => ({
935
- ...prev,
936
- [colId]: !prev[colId]
937
- }));
938
- }, []);
939
- const toggleFrozenColumnCollapse = useCallback((colId) => {
940
- setCollapsedFrozenColumns((prev) => ({
941
- ...prev,
942
- [colId]: !prev[colId]
943
- }));
944
- }, []);
945
- const announceReorder = useCallback((colId, direction) => {
946
- const el = reorderLiveRegionRef.current;
947
- if (!el) return;
948
- el.textContent = `Moved ${colId} ${direction === -1 ? "up" : "down"}`;
949
- }, []);
950
- const commitColumnReorder = useCallback(
951
- ({ frozenOrder, scrollableOrder, pinChanges, childReorder, announce }) => {
952
- var _a2;
953
- const api = (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.api;
954
- if (!api) return;
955
- isInternalUpdateRef.current = true;
956
- isDraggingRef.current = true;
957
- applyColumnReorderToGrid(api, {
958
- allColumns: allColumnsForLookup,
959
- frozenOrder,
960
- scrollableOrder,
961
- pinChanges,
962
- childReorder
963
- });
964
- updateColumnState();
965
- if (announce) {
966
- announceReorder(announce.colId, announce.direction);
967
- }
968
- queueMicrotask(() => {
969
- isDraggingRef.current = false;
970
- isInternalUpdateRef.current = false;
971
- });
972
- },
973
- [ref, allColumnsForLookup, updateColumnState, announceReorder]
974
- );
975
- const handleDragStart = useCallback((event) => {
976
- isDraggingRef.current = true;
977
- setActiveDragId(event.active.id);
978
- }, []);
979
- const handleDragCancel = useCallback(() => {
980
- setActiveDragId(null);
981
- isDraggingRef.current = false;
982
- }, []);
983
- const handleDragEnd = useCallback(
984
- (event) => {
985
- const { active, over } = event;
986
- setActiveDragId(null);
987
- if (!over || active.id === over.id) {
988
- isDraggingRef.current = false;
989
- return;
990
- }
991
- const activeId = active.id;
992
- const overId = over.id;
993
- const activeLoc = findColumnLocation(frozenColumn, activeId) || findColumnLocation(scrollableColumn, activeId);
994
- if (!activeLoc) {
995
- isDraggingRef.current = false;
996
- return;
997
- }
998
- if (activeLoc.parent) {
999
- const overLoc = findColumnLocation(frozenColumn, overId) || findColumnLocation(scrollableColumn, overId);
1000
- if (!(overLoc == null ? void 0 : overLoc.parent) || overLoc.parent.colId !== activeLoc.parent.colId) {
1001
- isDraggingRef.current = false;
1002
- return;
1003
- }
1004
- const siblingIds = getDirectColumnIds(activeLoc.siblings);
1005
- const oldIndex = siblingIds.indexOf(activeId);
1006
- const newIndex = siblingIds.indexOf(overId);
1007
- if (oldIndex === -1 || newIndex === -1) {
1008
- isDraggingRef.current = false;
1009
- return;
1010
- }
1011
- commitColumnReorder({
1012
- frozenOrder: fullFrozenOrder,
1013
- scrollableOrder: fullScrollableOrder,
1014
- childReorder: {
1015
- parentId: activeLoc.parent.colId,
1016
- siblingOrder: arrayMove(siblingIds, oldIndex, newIndex)
1017
- }
1018
- });
1019
- return;
1020
- }
1021
- const isFrozenSource = fullFrozenOrder.includes(activeId);
1022
- const isScrollableSource = fullScrollableOrder.includes(activeId);
1023
- if (!isFrozenSource && !isScrollableSource) {
1024
- isDraggingRef.current = false;
1025
- return;
1026
- }
1027
- const isFrozenTarget = fullFrozenOrder.includes(overId) || frozenColumnOrder.includes(overId);
1028
- const isScrollableTarget = fullScrollableOrder.includes(overId) || scrollableColumnOrder.includes(overId);
1029
- const visibleScrollable = scrollableColumnOrder.length ? scrollableColumnOrder : fullScrollableOrder;
1030
- let nextFrozen = [...fullFrozenOrder];
1031
- let nextScrollable = [...fullScrollableOrder];
1032
- let pinChanges = null;
1033
- if (isFrozenSource && isFrozenTarget) {
1034
- const oldIndex = nextFrozen.indexOf(activeId);
1035
- const newIndex = nextFrozen.indexOf(overId);
1036
- if (oldIndex === -1 || newIndex === -1) {
1037
- isDraggingRef.current = false;
1038
- return;
1039
- }
1040
- nextFrozen = arrayMove(nextFrozen, oldIndex, newIndex);
1041
- } else if (isScrollableSource && isScrollableTarget) {
1042
- const oldIndex = nextScrollable.indexOf(activeId);
1043
- const newIndex = nextScrollable.indexOf(overId);
1044
- if (oldIndex === -1 || newIndex === -1) {
1045
- isDraggingRef.current = false;
1046
- return;
1047
- }
1048
- nextScrollable = arrayMove(nextScrollable, oldIndex, newIndex);
1049
- } else if (isFrozenSource && isScrollableTarget) {
1050
- nextFrozen = nextFrozen.filter((id) => id !== activeId);
1051
- const overIndex = visibleScrollable.indexOf(overId);
1052
- const insertAt = overIndex === -1 ? nextScrollable.length : !nextScrollable.includes(overId) ? nextScrollable.length : nextScrollable.indexOf(overId);
1053
- nextScrollable = [...nextScrollable];
1054
- nextScrollable.splice(insertAt, 0, activeId);
1055
- pinChanges = [{ colId: activeId, pinned: null }];
1056
- } else if (isScrollableSource && isFrozenTarget) {
1057
- nextScrollable = nextScrollable.filter((id) => id !== activeId);
1058
- const insertAt = !nextFrozen.includes(overId) ? nextFrozen.length : nextFrozen.indexOf(overId);
1059
- nextFrozen = [...nextFrozen];
1060
- nextFrozen.splice(insertAt, 0, activeId);
1061
- pinChanges = [{ colId: activeId, pinned: "left" }];
1062
- } else {
1063
- isDraggingRef.current = false;
1064
- return;
1065
- }
1066
- commitColumnReorder({
1067
- frozenOrder: nextFrozen,
1068
- scrollableOrder: nextScrollable,
1069
- pinChanges
1070
- });
1071
- },
1072
- [
1073
- frozenColumn,
1074
- scrollableColumn,
1075
- fullFrozenOrder,
1076
- fullScrollableOrder,
1077
- frozenColumnOrder,
1078
- scrollableColumnOrder,
1079
- commitColumnReorder
1080
- ]
1081
- );
1082
- const handleKeyboardReorder = useCallback(
1083
- (colId, direction) => {
1084
- const loc = findColumnLocation(frozenColumn, colId) || findColumnLocation(scrollableColumn, colId);
1085
- if (!loc) return;
1086
- if (loc.parent) {
1087
- const siblingIds = getDirectColumnIds(loc.siblings);
1088
- const oldIndex = siblingIds.indexOf(colId);
1089
- const newIndex = oldIndex + direction;
1090
- if (oldIndex === -1 || newIndex < 0 || newIndex >= siblingIds.length) return;
1091
- commitColumnReorder({
1092
- frozenOrder: fullFrozenOrder,
1093
- scrollableOrder: fullScrollableOrder,
1094
- childReorder: {
1095
- parentId: loc.parent.colId,
1096
- siblingOrder: arrayMove(siblingIds, oldIndex, newIndex)
1097
- },
1098
- announce: { colId, direction }
1099
- });
1100
- } else {
1101
- const isFrozen = fullFrozenOrder.includes(colId);
1102
- const isScrollable = fullScrollableOrder.includes(colId);
1103
- if (!isFrozen && !isScrollable) return;
1104
- const order = isFrozen ? [...fullFrozenOrder] : [...fullScrollableOrder];
1105
- const oldIndex = order.indexOf(colId);
1106
- const newIndex = oldIndex + direction;
1107
- if (oldIndex === -1 || newIndex < 0 || newIndex >= order.length) return;
1108
- const newOrder = arrayMove(order, oldIndex, newIndex);
1109
- commitColumnReorder({
1110
- frozenOrder: isFrozen ? newOrder : fullFrozenOrder,
1111
- scrollableOrder: isScrollable ? newOrder : fullScrollableOrder,
1112
- announce: { colId, direction }
1113
- });
1114
- }
1115
- requestAnimationFrame(() => {
1116
- var _a2, _b2;
1117
- const escaped = CSS.escape ? CSS.escape(colId) : colId.replace(/"/g, '\\"');
1118
- (_b2 = (_a2 = document.querySelector(`.table-setting-columns-settings [data-col-id="${escaped}"]`)) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
1119
- });
1120
- },
1121
- [frozenColumn, scrollableColumn, fullFrozenOrder, fullScrollableOrder, commitColumnReorder]
1122
- );
1123
- const renderColumnRow = useCallback(
1124
- (column, level, section) => {
1125
- const isFrozen = section === "frozen";
1126
- const collapsedMap = isFrozen ? collapsedFrozenColumns : collapsedScrollColumns;
1127
- const isCollapsed = !!collapsedMap[column.colId];
1128
- const hasChildren = Array.isArray(column.children) && column.children.length > 0;
1129
- const onToggleCollapse = isFrozen ? toggleFrozenColumnCollapse : toggleScrollColumnCollapse;
1130
- const onToggleVisibility = isFrozen ? toggleColumnVisibilityFrozen : toggleColumnVisibilityScroll;
1131
- const checkState = hasChildren ? getCheckState(column.children) : { checked: !!column.isVisible, indeterminate: false };
1132
- const reserveCollapseSlot = isFrozen ? hasChildren : true;
1133
- const rowClassName = isFrozen ? "table-setting-frozen-columns-list-item" : "table-setting-scroll-inner-column";
1134
- const dragIconClass = isFrozen ? "table-setting-frozen-columns-list-drag-icon" : "table-setting-scroll-columns-list-drag-icon";
1135
- const nestedSortableIds = hasChildren ? getDirectColumnIds(
1136
- column.children.filter((c) => c.headerName !== "N/A" && c.isVisible !== false)
1137
- ) : [];
1138
- 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;
1139
- if (column.isVisible !== false) {
1140
- return /* @__PURE__ */ jsx(
1141
- SortableColumnItem,
1142
- {
1143
- checkboxChecked: checkState.checked,
1144
- column,
1145
- dragIconClass,
1146
- hasChildren,
1147
- isCollapsed,
1148
- isIndeterminate: checkState.indeterminate,
1149
- level,
1150
- reserveCollapseSlot,
1151
- rowClassName,
1152
- onKeyboardReorder: handleKeyboardReorder,
1153
- onToggleCollapse,
1154
- onToggleVisibility,
1155
- children: childNodes
1156
- },
1157
- column.colId
1158
- );
1159
- }
1160
- return /* @__PURE__ */ jsx(
1161
- NestedColumnItem,
1162
- {
1163
- checkboxChecked: checkState.checked,
1164
- column,
1165
- dragIconClass,
1166
- hasChildren,
1167
- isCollapsed,
1168
- isIndeterminate: checkState.indeterminate,
1169
- level,
1170
- reserveCollapseSlot,
1171
- rowClassName,
1172
- onToggleCollapse,
1173
- onToggleVisibility,
1174
- children: childNodes
1175
- },
1176
- column.colId
1177
- );
1178
- },
1179
- [
1180
- collapsedFrozenColumns,
1181
- collapsedScrollColumns,
1182
- toggleFrozenColumnCollapse,
1183
- toggleScrollColumnCollapse,
1184
- toggleColumnVisibilityFrozen,
1185
- toggleColumnVisibilityScroll,
1186
- handleKeyboardReorder
1187
- ]
1188
- );
1189
- const handleSaveAndApply = () => {
1190
- var _a2, _b2;
1191
- if (isEditView) {
1192
- const newView2 = {
1193
- ...editedView,
1194
- viewName: inputValue,
1195
- viewType: selectedViewType,
1196
- isDefaultView,
1197
- isActive: false
1198
- };
1199
- props.handleEditSaveView(newView2, editedView);
1200
- if (!props.isSavingViewLoading) {
1201
- setIsEditView(false);
1202
- setEditedView(null);
1203
- setOpenSaveViewModal(false);
1204
- setInputValue("");
1205
- setSelectedViewType((_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.selectedOption);
1206
- setIsDefaultView(false);
1207
- }
1208
- return;
1209
- }
1210
- const replaceViewName = selectedSavedView == null ? void 0 : selectedSavedView.value;
1211
- const isReplacing = isInputValueEmpty && !!replaceViewName;
1212
- const newView = {
1213
- viewName: isReplacing ? replaceViewName : inputValue,
1214
- viewType: selectedViewType,
1215
- isDefaultView,
1216
- isActive: true
1217
- };
1218
- const applyToViews = (prev) => isReplacing ? prev.map(
1219
- (view) => view.viewName === replaceViewName && view.viewType === selectedViewType ? { ...view, ...newView } : { ...view, isActive: false }
1220
- ) : [...prev.map((view) => ({ ...view, isActive: false })), newView];
1221
- setSavedViewsOptions(applyToViews);
1222
- setFilteredSavedViewsOptions(applyToViews);
1223
- (_b2 = props.handleSaveAndApply) == null ? void 0 : _b2.call(props, newView, replaceViewName);
1224
- };
1225
- useEffect(() => {
1226
- var _a2;
1227
- if (!props.isSavingViewLoading) {
1228
- setOpenSaveViewModal(false);
1229
- setSelectedSavedView(null);
1230
- setInputValue("");
1231
- setSelectedViewType((_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.selectedOption);
1232
- setIsDefaultView(false);
1233
- setOpenDeletePrompt(false);
1234
- setDeleteView(null);
1235
- setEditedView(null);
1236
- }
1237
- }, [props.isSavingViewLoading]);
1238
- const handleEditView = (view, e) => {
1239
- e.stopPropagation();
1240
- e.preventDefault();
1241
- setIsEditView(true);
1242
- setOpenSaveViewModal(true);
1243
- setInputValue(view.viewName);
1244
- setSelectedViewType(view.viewType);
1245
- setIsDefaultView(view.isDefaultView);
1246
- setEditedView(view);
1247
- };
1248
- const handleCloseSaveViewModal = () => {
1249
- var _a2;
1250
- setOpenSaveViewModal(false);
1251
- setSelectedSavedView(null);
1252
- setInputValue("");
1253
- setSelectedViewType((_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.selectedOption);
1254
- setIsDefaultView(false);
1255
- setIsEditView(false);
1256
- };
1257
- const handleSaveViewSearchChange = (e) => {
1258
- setSaveViewSearchText(e.target.value);
1259
- const filteredViews = savedViewsOptions.filter(
1260
- (view) => view.viewName.toLowerCase().includes(e.target.value.toLowerCase())
1261
- );
1262
- setFilteredSavedViewsOptions(filteredViews);
1263
- };
1264
- const handleDeleteView = (view, e) => {
1265
- e.stopPropagation();
1266
- e.preventDefault();
1267
- setOpenDeletePrompt(true);
1268
- setDeleteView(view);
1269
- };
1270
- useEffect(() => {
1271
- if (!props.isDeleteViewLoading) {
1272
- setOpenDeletePrompt(false);
1273
- }
1274
- }, [props.isDeleteViewLoading]);
1275
- useEffect(() => {
1276
- if (selectedBadge === "All") {
1277
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1278
- } else {
1279
- setFilteredSavedViewsOptions(
1280
- savedViewsOptions.filter((view) => view.viewType === selectedBadge)
1281
- );
1282
- }
1283
- }, [selectedBadge, savedViewsOptions]);
1284
- const handleSaveViewClick = (view) => {
1285
- setFilteredSavedViewsOptions(
1286
- (prev) => prev.map((item) => {
1287
- if (item.viewName === view.viewName) {
1288
- return {
1289
- ...item,
1290
- isActive: true
1291
- };
1292
- }
1293
- return {
1294
- ...item,
1295
- isActive: false
1296
- };
1297
- })
1298
- );
1299
- setSelectedView(view);
1300
- };
1301
- const nameConflictExcludeView = isEditView ? editedView : (selectedSavedView == null ? void 0 : selectedSavedView.value) ? {
1302
- viewName: selectedSavedView.value,
1303
- viewType: selectedSavedView.viewType
1304
- } : null;
1305
- const nameConflict = !props.isSavingViewLoading && !isInputValueEmpty && !isViewNameUnique(
1306
- inputValue,
1307
- selectedViewType,
1308
- isDefaultView,
1309
- savedViewsOptions,
1310
- nameConflictExcludeView,
1311
- props.isViewNameUniqueAcrossTypes
1312
- );
1313
- return /* @__PURE__ */ jsxs("div", { className: "table-setting-columns-settings", children: [
1314
- /* @__PURE__ */ jsx(
1315
- "div",
1316
- {
1317
- ref: reorderLiveRegionRef,
1318
- "aria-live": "polite",
1319
- className: "table-setting-reorder-live-region"
1320
- }
1321
- ),
1322
- props.isSaveViewEnabled && /* @__PURE__ */ jsxs("div", { className: "table-setting-save-view-container", children: [
1323
- savedViewsOptions.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "save-view-icon-title", children: [
1324
- /* @__PURE__ */ jsx("img", { alt: "save-view-icon", src: saveViewIcon }),
1325
- /* @__PURE__ */ jsx("span", { className: "save-view-title", children: "No views saved yet" })
1326
- ] }) : /* @__PURE__ */ jsxs("div", { className: "save-view-container-active-view", children: [
1327
- /* @__PURE__ */ jsx(
1328
- Badge,
1329
- {
1330
- color: "success",
1331
- label: `${((_b = savedViewsOptions.find((view) => view.isActive)) == null ? void 0 : _b.viewName) || "Not Applicable"}`,
1332
- variant: "stroke"
1333
- }
1334
- ),
1335
- /* @__PURE__ */ jsx(
1336
- Button,
1337
- {
1338
- icon: openSaveViewMenu ? /* @__PURE__ */ jsx(default_1, {}) : /* @__PURE__ */ jsx(default_1$1, {}),
1339
- size: "small",
1340
- variant: "tertiary",
1341
- onClick: () => {
1342
- setOpenSaveViewMenu(!openSaveViewMenu);
1343
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1344
- }
1345
- }
1346
- )
1347
- ] }),
1348
- /* @__PURE__ */ jsx(
1349
- Button,
1350
- {
1351
- size: "small",
1352
- variant: "tertiary",
1353
- onClick: () => {
1354
- setOpenSaveViewModal(true);
1355
- },
1356
- children: "Save View"
1357
- }
1358
- )
1359
- ] }),
1360
- openSaveViewMenu && /* @__PURE__ */ jsxs("div", { className: "save-view-menu", children: [
1361
- /* @__PURE__ */ jsxs("div", { className: "save-view-menu-title", children: [
1362
- /* @__PURE__ */ jsx("span", { children: "Saved views" }),
1363
- /* @__PURE__ */ jsxs("div", { className: "save-view-menu-default-view", children: [
1364
- /* @__PURE__ */ jsx("img", { alt: "default-view-icon", src: defaultViewActiveIcon }),
1365
- /* @__PURE__ */ jsx("span", { className: "save-view-menu-default-view-text", children: "Default" })
1366
- ] })
1367
- ] }),
1368
- /* @__PURE__ */ jsxs("div", { className: "save-view-menu-view-type", children: [
1369
- /* @__PURE__ */ jsx(
1370
- Badge,
1371
- {
1372
- color: selectedBadge === "All" ? "info" : "default",
1373
- label: "All",
1374
- size: "small",
1375
- variant: "stroke",
1376
- onClick: () => {
1377
- setSelectedBadge("All");
1378
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1379
- }
1380
- }
1381
- ),
1382
- (_d = (_c = props.saveViewCustomFilter) == null ? void 0 : _c.options) == null ? void 0 : _d.map((option) => /* @__PURE__ */ jsx(
1383
- Badge,
1384
- {
1385
- isIcon: true,
1386
- color: selectedBadge === option.value ? "info" : "default",
1387
- icon: getViewTypeIcon(option.value),
1388
- label: option.label,
1389
- size: "small",
1390
- variant: "stroke",
1391
- onClick: () => {
1392
- setSelectedBadge(option.value);
1393
- setFilteredSavedViewsOptions(
1394
- savedViewsOptions.filter((view) => view.viewType === option.value)
1395
- );
1396
- }
1397
- },
1398
- option.value
1399
- ))
1400
- ] }),
1401
- /* @__PURE__ */ jsx("div", { className: "save-view-menu-search-container", children: /* @__PURE__ */ jsx(
1402
- Input,
1403
- {
1404
- leftIcon: /* @__PURE__ */ jsx(default_1$2, {}),
1405
- placeholder: "Search here...",
1406
- value: saveViewSearchText,
1407
- onChange: handleSaveViewSearchChange
1408
- }
1409
- ) }),
1410
- /* @__PURE__ */ jsx("div", { className: "save-view-menu-view-list-container", children: props.customRenderSaveViewContent ? props.customRenderSaveViewContent : filteredSavedViewsOptions.length > 0 && filteredSavedViewsOptions.map((view, idx) => {
1411
- var _a2;
1412
- return /* @__PURE__ */ jsxs(
1413
- "div",
1414
- {
1415
- "aria-label": `Saved view ${view.viewName}`,
1416
- className: `save-view-menu-view-list-item ${view.isActive ? "active" : ""}`,
1417
- role: "button",
1418
- tabIndex: idx === 0 ? 0 : -1,
1419
- onClick: () => {
1420
- handleSaveViewClick(view);
1421
- },
1422
- onKeyDown: (e) => {
1423
- var _a3, _b2;
1424
- const current = e.currentTarget;
1425
- switch (e.key) {
1426
- case "Enter":
1427
- case " ":
1428
- e.preventDefault();
1429
- handleSaveViewClick(view);
1430
- break;
1431
- case "ArrowDown": {
1432
- e.preventDefault();
1433
- (_a3 = current.nextElementSibling) == null ? void 0 : _a3.focus();
1434
- break;
1435
- }
1436
- case "ArrowUp": {
1437
- e.preventDefault();
1438
- (_b2 = current.previousElementSibling) == null ? void 0 : _b2.focus();
1439
- break;
1440
- }
1441
- }
1442
- },
1443
- children: [
1444
- /* @__PURE__ */ jsxs("span", { className: "save-view-menu-view-list-item-name", children: [
1445
- /* @__PURE__ */ jsx(
1446
- "span",
1447
- {
1448
- "aria-hidden": "true",
1449
- className: "save-view-menu-view-list-item-type-icon",
1450
- title: view.viewType,
1451
- children: getViewTypeIcon(view.viewType, (_a2 = props.saveViewCustomFilter) == null ? void 0 : _a2.options)
1452
- }
1453
- ),
1454
- /* @__PURE__ */ jsx("span", { className: "save-view-menu-view-list-item-name-text", children: view.viewName })
1455
- ] }),
1456
- /* @__PURE__ */ jsxs("div", { className: "save-view-menu-view-list-item-actions", children: [
1457
- (view == null ? void 0 : view.isEditable) && /* @__PURE__ */ jsx(
1458
- "img",
1459
- {
1460
- alt: "save-view-edit-icon",
1461
- src: saveViewEditIcon,
1462
- onClick: (e) => {
1463
- handleEditView(view, e);
1464
- }
1465
- }
1466
- ),
1467
- (view == null ? void 0 : view.isDeletable) && /* @__PURE__ */ jsx(
1468
- "img",
1469
- {
1470
- alt: "save-view-delete-icon",
1471
- src: saveViewDeleteIcon,
1472
- onClick: (e) => {
1473
- handleDeleteView(view, e);
1474
- }
1475
- }
1476
- ),
1477
- !(view == null ? void 0 : view.notReqDefaultView) && ((view == null ? void 0 : view.isDefaultView) ? /* @__PURE__ */ jsx(
1478
- "img",
1479
- {
1480
- alt: "default-view-icon",
1481
- className: "default-view-active-icon",
1482
- src: defaultViewActiveIcon,
1483
- onClick: (e) => {
1484
- e.stopPropagation();
1485
- e.preventDefault();
1486
- props.handleSetDefaultView(view);
1487
- }
1488
- }
1489
- ) : /* @__PURE__ */ jsx(
1490
- "img",
1491
- {
1492
- alt: "default-view-icon",
1493
- src: defaultViewIcon,
1494
- onClick: (e) => {
1495
- e.stopPropagation();
1496
- e.preventDefault();
1497
- props.handleSetDefaultView(view);
1498
- }
1499
- }
1500
- ))
1501
- ] })
1502
- ]
1503
- },
1504
- view.viewName + idx
1505
- );
1506
- }) }),
1507
- /* @__PURE__ */ jsx("hr", { className: "save-view-menu-view-list-item-divider" }),
1508
- /* @__PURE__ */ jsxs("div", { className: "save-view-menu-footer", children: [
1509
- /* @__PURE__ */ jsx(
1510
- Button,
1511
- {
1512
- size: "medium",
1513
- variant: "tertiary",
1514
- onClick: () => {
1515
- setOpenSaveViewMenu(false);
1516
- setFilteredSavedViewsOptions([...savedViewsOptions]);
1517
- },
1518
- children: "Cancel"
1519
- }
1520
- ),
1521
- /* @__PURE__ */ jsx(
1522
- Button,
1523
- {
1524
- disabled: props.customRenderSaveViewContent,
1525
- size: "medium",
1526
- variant: "primary",
1527
- onClick: () => {
1528
- var _a2;
1529
- (_a2 = props.handleSavedViewClick) == null ? void 0 : _a2.call(props, selectedView);
1530
- updateColumnState();
1531
- setOpenSaveViewMenu(false);
1532
- },
1533
- children: "Apply"
1534
- }
1535
- )
1536
- ] })
1537
- ] }),
1538
- /* @__PURE__ */ jsx(
1539
- Modal,
1540
- {
1541
- className: "save-view-modal",
1542
- height: "542px",
1543
- open: openSaveViewModal,
1544
- primaryButtonLabel: props.isSavingViewLoading ? "Saving..." : "Save",
1545
- primaryButtonProps: {
1546
- disabled: (isInputValueEmpty || props.maxSavedViews != null && savedViewsOptions.length >= props.maxSavedViews) && !isReplaceViewSelected || nameConflict || props.isSavingViewLoading,
1547
- loading: props.isSavingViewLoading,
1548
- iconPlacement: "right"
1549
- },
1550
- secondaryButtonLabel: "Cancel",
1551
- title: isEditView ? "Edit view" : "Save view",
1552
- width: "422px",
1553
- onClose: handleCloseSaveViewModal,
1554
- onPrimaryButtonClick: handleSaveAndApply,
1555
- onSecondaryButtonClick: handleCloseSaveViewModal,
1556
- children: /* @__PURE__ */ jsxs("div", { className: "save-view-modal-children", children: [
1557
- 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` }) }),
1558
- /* @__PURE__ */ jsxs(
1559
- "div",
1560
- {
1561
- className: `save-view-modal-children-body${props.maxSavedViews == null ? " save-view-modal-children-body-no-header" : ""}`,
1562
- children: [
1563
- /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-input", children: /* @__PURE__ */ jsx(
1564
- Input,
1565
- {
1566
- helperText: nameConflict ? "A view with this name already exists" : "",
1567
- isDisabled: isReplaceViewSelected,
1568
- isError: nameConflict,
1569
- isHelperText: nameConflict,
1570
- label: "New view name",
1571
- placeholder: "Enter here",
1572
- readOnly: isReplaceViewSelected,
1573
- value: inputValue,
1574
- onChange: (e) => {
1575
- setInputValue(e.target.value);
1576
- setSelectedSavedView(null);
1577
- }
1578
- }
1579
- ) }),
1580
- !isEditView && /* @__PURE__ */ jsxs("div", { className: "save-view-modal-children-body-radio-group", children: [
1581
- /* @__PURE__ */ jsx("span", { className: "save-view-modal-children-body-radio-group-text", children: "View type" }),
1582
- /* @__PURE__ */ jsx(
1583
- RadioButtonGroup,
1584
- {
1585
- isDisabled: isReplaceViewSelected,
1586
- options: (_f = (_e = props.saveViewCustomFilter) == null ? void 0 : _e.options) == null ? void 0 : _f.filter(
1587
- (option) => !(option == null ? void 0 : option.notReqInSaveView)
1588
- ),
1589
- orientation: "row",
1590
- selectedOption: selectedViewType,
1591
- onChange: (event) => {
1592
- setSelectedViewType(event.target.value);
1593
- }
1594
- }
1595
- )
1596
- ] }),
1597
- /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-checkbox", children: /* @__PURE__ */ jsx(
1598
- Checkbox,
1599
- {
1600
- checked: isDefaultView,
1601
- disabled: isReplaceViewSelected,
1602
- label: "Make it default view",
1603
- onChange: () => {
1604
- setIsDefaultView(!isDefaultView);
1605
- }
1606
- }
1607
- ) }),
1608
- /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-replace-view", children: /* @__PURE__ */ jsx("span", { children: "Or replace with saved view" }) }),
1609
- /* @__PURE__ */ jsx("div", { className: "save-view-modal-children-body-replace-view-select", children: /* @__PURE__ */ jsx(
1610
- Select,
1611
- {
1612
- isClearable: true,
1613
- withPortal: true,
1614
- currentOptions: currentSaveViewOptions,
1615
- initialOptions: currentSaveViewOptions,
1616
- isDisabled: savedViewsOptions.length === 0 || !isInputValueEmpty && !isReplaceViewSelected || isEditView,
1617
- isOpen,
1618
- label: "Replace with",
1619
- minWidth: "100%",
1620
- selectedOptions: selectedSavedView,
1621
- setCurrentOptions: setCurrentSaveViewOptions,
1622
- setIsOpen,
1623
- setSelectedOptions: setSelectedSavedView
1624
- }
1625
- ) })
1626
- ]
1627
- }
1628
- )
1629
- ] })
1630
- }
1631
- ),
1632
- /* @__PURE__ */ jsx(
1633
- Prompt,
1634
- {
1635
- handleClose: (e) => {
1636
- e.stopPropagation();
1637
- setOpenDeletePrompt(false);
1638
- },
1639
- isOpen: openDeletePrompt,
1640
- primaryButtonLabel: "Yes,Delete",
1641
- primaryButtonProps: {
1642
- loading: props.isDeleteViewLoading,
1643
- iconPlacement: "right"
1644
- },
1645
- secondaryButtonLabel: "Cancel",
1646
- title: "Delete, Are you sure?",
1647
- variant: "error",
1648
- onPrimaryButtonClick: (e) => {
1649
- var _a2;
1650
- e.stopPropagation();
1651
- (_a2 = props.handleDeleteViewClick) == null ? void 0 : _a2.call(props, deleteView);
1652
- },
1653
- onSecondaryButtonClick: (e) => {
1654
- e.stopPropagation();
1655
- setOpenDeletePrompt(false);
1656
- },
1657
- children: props.deleteViewPromptText
1658
- }
1659
- ),
1660
- /* @__PURE__ */ jsxs("div", { className: "table-setting-column-search-container", children: [
1661
- /* @__PURE__ */ jsx("span", { className: "table-setting-column-collapse-slot", children: /* @__PURE__ */ jsx(
1662
- IconButton,
1663
- {
1664
- "aria-label": collapsedColumn ? "Expand columns" : "Collapse columns",
1665
- className: "table-setting-column-collapse-btn",
1666
- onClick: toggleColumnCollapse,
1667
- children: collapsedColumn ? /* @__PURE__ */ jsx(default_1$3, {}) : /* @__PURE__ */ jsx(default_1, {})
1668
- }
1669
- ) }),
1670
- /* @__PURE__ */ jsxs("div", { className: "table-setting-column-search-controls", children: [
1671
- /* @__PURE__ */ jsx(
1672
- Checkbox,
1673
- {
1674
- "aria-label": "Toggle all columns",
1675
- checked: allCheckState.checked,
1676
- variant: allCheckState.indeterminate ? "dashed" : "default",
1677
- onChange: onAllColumnCheckBoxChange
1678
- }
1679
- ),
1680
- /* @__PURE__ */ jsx(
1681
- Input,
1682
- {
1683
- placeholder: "Search",
1684
- rightIcon: /* @__PURE__ */ jsx(default_1$2, {}),
1685
- value: searchInputValue,
1686
- onChange: handleSearchChange
1687
- }
1688
- )
1689
- ] })
1690
- ] }),
1691
- !collapsedColumn && /* @__PURE__ */ jsx(
1692
- "div",
1693
- {
1694
- className: `table-setting-column-collapse-container ${props.isSaveViewEnabled ? "save-view-enabled" : ""}`,
1695
- children: /* @__PURE__ */ jsxs(
1696
- DndContext,
1697
- {
1698
- collisionDetection: closestCenter,
1699
- sensors,
1700
- onDragCancel: handleDragCancel,
1701
- onDragEnd: handleDragEnd,
1702
- onDragStart: handleDragStart,
1703
- children: [
1704
- /* @__PURE__ */ jsxs(SortableContext, { items: sortableItems, children: [
1705
- frozenColumn.length > 0 && !(frozenColumn.length === 1 && frozenColumn[0].headerName === "N/A") && /* @__PURE__ */ jsxs("div", { className: "table-setting-collapse-columns-container", children: [
1706
- /* @__PURE__ */ jsx("h3", { children: "Frozen columns" }),
1707
- /* @__PURE__ */ jsx(
1708
- "div",
1709
- {
1710
- "aria-label": "Frozen columns",
1711
- className: "table-setting-frozen-columns-list",
1712
- role: "tree",
1713
- children: filteredFrozenColumns.map(
1714
- (column) => column.headerName !== "N/A" && renderColumnRow(column, 0, "frozen")
1715
- )
1716
- }
1717
- )
1718
- ] }),
1719
- /* @__PURE__ */ jsxs("div", { className: "table-setting-scroll-columns-container", children: [
1720
- /* @__PURE__ */ jsx("h3", { children: "Scrollable Columns" }),
1721
- /* @__PURE__ */ jsxs("div", { className: "table-setting-scroll-main-column-list", children: [
1722
- /* @__PURE__ */ jsxs("div", { className: "table-setting-scroll-main-column", children: [
1723
- /* @__PURE__ */ jsxs("div", { className: "table-setting-column-leading", children: [
1724
- /* @__PURE__ */ jsx("span", { className: "table-setting-column-collapse-slot", children: /* @__PURE__ */ jsx(
1725
- IconButton,
1726
- {
1727
- "aria-label": collapsedScrollable ? "Expand scrollable columns" : "Collapse scrollable columns",
1728
- className: "table-setting-column-collapse-btn",
1729
- onClick: toggleScrollableCollapse,
1730
- children: collapsedScrollable ? /* @__PURE__ */ jsx(default_1$3, {}) : /* @__PURE__ */ jsx(default_1, {})
1731
- }
1732
- ) }),
1733
- /* @__PURE__ */ jsx(
1734
- Checkbox,
1735
- {
1736
- "aria-label": "Toggle main columns",
1737
- checked: mainCheckState.checked,
1738
- variant: mainCheckState.indeterminate ? "dashed" : "default",
1739
- onChange: onMainCheckboxChange
1740
- }
1741
- )
1742
- ] }),
1743
- /* @__PURE__ */ jsx("span", { className: "table-setting-column-name", children: "Main Column" })
1744
- ] }),
1745
- /* @__PURE__ */ jsx(
1746
- "div",
1747
- {
1748
- "aria-label": "Scrollable columns",
1749
- className: "table-setting-scroll-inner-column-list",
1750
- role: "tree",
1751
- children: !collapsedScrollable && filteredScrollableColumns.map(
1752
- (column) => column.headerName !== "N/A" && renderColumnRow(column, 0, "scrollable")
1753
- )
1754
- }
1755
- )
1756
- ] })
1757
- ] })
1758
- ] }),
1759
- /* @__PURE__ */ jsx(DragOverlay, { adjustScale: false, dropAnimation: null, children: activeDragColumn ? /* @__PURE__ */ jsxs("div", { className: "table-setting-column-drag-overlay", role: "presentation", children: [
1760
- /* @__PURE__ */ jsx(DragIndicator, { className: "table-setting-column-drag-overlay-icon" }),
1761
- /* @__PURE__ */ jsx("span", { className: "table-setting-column-drag-overlay-label", children: capitalizeHeader(activeDragColumn.headerName) })
1762
- ] }) : null })
1763
- ]
1764
- }
1765
- )
1766
- }
1767
- )
1768
- ] });
1769
- });
1770
- const updateFontSizeOnToolPanel = (fontSizeType) => {
1771
- let fontSize;
1772
- switch (fontSizeType) {
1773
- case "small":
1774
- fontSize = "12px";
1775
- break;
1776
- case "medium":
1777
- fontSize = "14px";
1778
- break;
1779
- case "large":
1780
- fontSize = "16px";
1781
- break;
1782
- default:
1783
- fontSize = "14px";
1784
- }
1785
- return fontSize;
1786
- };
1787
- export {
1788
- Columns,
1789
- freezeColumn,
1790
- getMainMenuItems,
1791
- getTableMeta,
1792
- onColMenuAutoAdjustClick,
1793
- onColMenuFreezeClick,
1794
- sortFunc,
1795
- updateFontSizeOnToolPanel
1796
- };