@deephaven/iris-grid 1.9.1-beta.1 → 1.9.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts +2 -2
- package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js +4 -4
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css +7 -2
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts +3 -3
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +13 -11
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +1 -3
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +20 -7
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +101 -76
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +5 -23
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +7 -5
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +6 -3
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +69 -23
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts +2 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +52 -47
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts +8 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +12 -5
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +1 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +9 -4
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +46 -20
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +17 -16
|
@@ -4,7 +4,6 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
6
|
import React, { memo, PureComponent, useCallback, useEffect, useRef } from 'react';
|
|
7
|
-
import { flushSync } from 'react-dom';
|
|
8
7
|
import classNames from 'classnames';
|
|
9
8
|
import { GridUtils } from '@deephaven/grid';
|
|
10
9
|
import { TextUtils, assertNotNull, DbNameValidator } from '@deephaven/utils';
|
|
@@ -41,6 +40,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
41
40
|
*/
|
|
42
41
|
_defineProperty(this, "lastFocusedItemIndex", null);
|
|
43
42
|
_defineProperty(this, "list", void 0);
|
|
43
|
+
_defineProperty(this, "virtualizerRef", /*#__PURE__*/React.createRef());
|
|
44
44
|
/**
|
|
45
45
|
* This is set by the search modal handlers since a column could be hidden
|
|
46
46
|
* and not displayed in the list. We need to wait until the update to scroll to it.
|
|
@@ -86,7 +86,10 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
86
86
|
max: 10
|
|
87
87
|
}));
|
|
88
88
|
_defineProperty(this, "memoizedGetTreeItems", memoize((columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns, showHiddenColumns) => getTreeItems(columns, movedColumns, columnHeaderGroups, hiddenColumns, [...selectedColumns.values()], showHiddenColumns), {
|
|
89
|
-
max:
|
|
89
|
+
max: 2
|
|
90
|
+
}));
|
|
91
|
+
_defineProperty(this, "memoizedGetFlattenedTree", memoize(treeItems => flattenTree(treeItems), {
|
|
92
|
+
max: 2
|
|
90
93
|
}));
|
|
91
94
|
_defineProperty(this, "makeVisibilityOrderingList", memoize((columns, treeItems, showHiddenColumns, isDraggable) => {
|
|
92
95
|
var {
|
|
@@ -101,7 +104,9 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
101
104
|
} = _ref2;
|
|
102
105
|
return Array.isArray(data.visibleIndex) ? data.visibleIndex[0] === firstMovableIndex : data.visibleIndex === firstMovableIndex;
|
|
103
106
|
});
|
|
104
|
-
|
|
107
|
+
|
|
108
|
+
// Searches from the end so it's faster than findIndex
|
|
109
|
+
var lastMovableTreeIndex = treeItems.findLastIndex(_ref3 => {
|
|
105
110
|
var {
|
|
106
111
|
data
|
|
107
112
|
} = _ref3;
|
|
@@ -138,7 +143,8 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
138
143
|
elements.push(/*#__PURE__*/_jsx(SortableTree, {
|
|
139
144
|
items: movableItems,
|
|
140
145
|
renderItem: this.renderItem,
|
|
141
|
-
isDraggable: isDraggable
|
|
146
|
+
isDraggable: isDraggable,
|
|
147
|
+
virtualizerRef: this.virtualizerRef
|
|
142
148
|
}, "movable-items"));
|
|
143
149
|
if (lastMovableIndex != null && lastMovableIndex < columns.length - 1) {
|
|
144
150
|
elements.push(/*#__PURE__*/_jsx("hr", {}, "bottom-horizontal-divider"));
|
|
@@ -164,7 +170,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
164
170
|
})
|
|
165
171
|
})
|
|
166
172
|
}, columnName), {
|
|
167
|
-
max:
|
|
173
|
+
max: 100
|
|
168
174
|
}));
|
|
169
175
|
this.handleItemClick = this.handleItemClick.bind(this);
|
|
170
176
|
this.handleDragEnd = this.handleDragEnd.bind(this);
|
|
@@ -185,7 +191,8 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
185
191
|
lastSelectedColumn: '',
|
|
186
192
|
showHiddenColumns: true,
|
|
187
193
|
isSearchModalOpen: false,
|
|
188
|
-
movedColumns: props.movedColumns
|
|
194
|
+
movedColumns: props.movedColumns,
|
|
195
|
+
columnHeaderGroups: props.columnHeaderGroups
|
|
189
196
|
};
|
|
190
197
|
this.list = null;
|
|
191
198
|
}
|
|
@@ -206,25 +213,40 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
206
213
|
componentDidUpdate(prevProps) {
|
|
207
214
|
// If we change because of undo/redo or reorders in the grid, update internal state
|
|
208
215
|
var {
|
|
209
|
-
movedColumns
|
|
216
|
+
movedColumns,
|
|
217
|
+
columnHeaderGroups
|
|
210
218
|
} = this.props;
|
|
211
219
|
if (prevProps.movedColumns !== movedColumns) {
|
|
212
220
|
this.setState({
|
|
213
221
|
movedColumns
|
|
214
222
|
});
|
|
215
223
|
}
|
|
224
|
+
if (prevProps.columnHeaderGroups !== columnHeaderGroups) {
|
|
225
|
+
this.setState({
|
|
226
|
+
columnHeaderGroups
|
|
227
|
+
});
|
|
228
|
+
}
|
|
216
229
|
|
|
217
230
|
// Scroll to the item when it's available
|
|
218
231
|
if (this.scrollAndFocusColumnOnUpdate != null) {
|
|
219
|
-
var _this$
|
|
220
|
-
var
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
232
|
+
var _this$virtualizerRef$;
|
|
233
|
+
var [itemIndex, itemName] = this.scrollAndFocusColumnOnUpdate;
|
|
234
|
+
(_this$virtualizerRef$ = this.virtualizerRef.current) === null || _this$virtualizerRef$ === void 0 || _this$virtualizerRef$.scrollToIndex(itemIndex);
|
|
235
|
+
|
|
236
|
+
// Need to wait for the paint after the scroll so the item exists in the DOM
|
|
237
|
+
window.requestAnimationFrame(() => {
|
|
238
|
+
var _this$list;
|
|
239
|
+
if (this.scrollAndFocusColumnOnUpdate == null) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
var itemElement = (_this$list = this.list) === null || _this$list === void 0 ? void 0 : _this$list.querySelector(".item-wrapper[data-id=\"".concat(itemName, "\"] .tree-item"));
|
|
243
|
+
if (itemElement instanceof HTMLElement) {
|
|
244
|
+
itemElement.focus();
|
|
245
|
+
} else {
|
|
246
|
+
log.warn("Could not focus item ".concat(itemName, " after scroll"));
|
|
247
|
+
}
|
|
226
248
|
this.scrollAndFocusColumnOnUpdate = null;
|
|
227
|
-
}
|
|
249
|
+
});
|
|
228
250
|
}
|
|
229
251
|
|
|
230
252
|
// document.activeElement is either body or html when nothing is focused.
|
|
@@ -234,7 +256,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
234
256
|
// (except in Chrome which is against the spec here).
|
|
235
257
|
if ((document.activeElement === document.body || document.activeElement === document.documentElement) && this.lastFocusedItemIndex !== null) {
|
|
236
258
|
var _this$list2;
|
|
237
|
-
var itemToFocus = (_this$list2 = this.list) === null || _this$list2 === void 0 ? void 0 : _this$list2.querySelector(".item-wrapper
|
|
259
|
+
var itemToFocus = (_this$list2 = this.list) === null || _this$list2 === void 0 ? void 0 : _this$list2.querySelector(".item-wrapper[data-index=\"".concat(this.lastFocusedItemIndex, "\"] .tree-item"));
|
|
238
260
|
if (itemToFocus != null && itemToFocus instanceof HTMLElement) {
|
|
239
261
|
itemToFocus.focus();
|
|
240
262
|
} else {
|
|
@@ -308,7 +330,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
308
330
|
var {
|
|
309
331
|
selectedColumns
|
|
310
332
|
} = this.state;
|
|
311
|
-
var treeItems =
|
|
333
|
+
var treeItems = this.getFlattenedTree();
|
|
312
334
|
var firstMovableIndex = this.getFirstMovableIndex();
|
|
313
335
|
var lastMovableIndex = this.getLastMovableIndex();
|
|
314
336
|
assertNotNull(firstMovableIndex);
|
|
@@ -430,18 +452,14 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
430
452
|
var scrollListAfterMove;
|
|
431
453
|
if (option === VisibilityOrderingBuilderInner.MOVE_OPTIONS.TOP) {
|
|
432
454
|
scrollListAfterMove = () => {
|
|
433
|
-
var _this$
|
|
434
|
-
(_this$
|
|
435
|
-
top: 0
|
|
436
|
-
});
|
|
455
|
+
var _this$virtualizerRef$2;
|
|
456
|
+
(_this$virtualizerRef$2 = this.virtualizerRef.current) === null || _this$virtualizerRef$2 === void 0 || _this$virtualizerRef$2.scrollToOffset(0);
|
|
437
457
|
};
|
|
438
458
|
}
|
|
439
459
|
if (option === VisibilityOrderingBuilderInner.MOVE_OPTIONS.BOTTOM) {
|
|
440
460
|
scrollListAfterMove = () => {
|
|
441
|
-
var _this$
|
|
442
|
-
(_this$
|
|
443
|
-
top: this.list.parentElement.scrollHeight
|
|
444
|
-
});
|
|
461
|
+
var _this$virtualizerRef$3;
|
|
462
|
+
(_this$virtualizerRef$3 = this.virtualizerRef.current) === null || _this$virtualizerRef$3 === void 0 || _this$virtualizerRef$3.scrollBy(this.virtualizerRef.current.getTotalSize());
|
|
445
463
|
};
|
|
446
464
|
}
|
|
447
465
|
onColumnHeaderGroupChanged(groups);
|
|
@@ -553,7 +571,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
553
571
|
this.removeColumnFromSelected(name);
|
|
554
572
|
return [];
|
|
555
573
|
}
|
|
556
|
-
var movableItems =
|
|
574
|
+
var movableItems = this.getFlattenedTree(showHiddenColumns);
|
|
557
575
|
if (isSelected && !isShiftKeyDown && lastSelectedColumn === name) {
|
|
558
576
|
var selectedItem = movableItems.find(_ref4 => {
|
|
559
577
|
var {
|
|
@@ -580,8 +598,8 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
580
598
|
});
|
|
581
599
|
return columnsToBeAdded;
|
|
582
600
|
}
|
|
583
|
-
handleSearchItemClicked(
|
|
584
|
-
var columnsToAdd = this.handleItemClick(
|
|
601
|
+
handleSearchItemClicked(item, event) {
|
|
602
|
+
var columnsToAdd = this.handleItemClick(item.id, event, true);
|
|
585
603
|
var {
|
|
586
604
|
showHiddenColumns
|
|
587
605
|
} = this.state;
|
|
@@ -598,10 +616,10 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
598
616
|
if (event.shiftKey || GridUtils.isModifierKeyDown(event)) {
|
|
599
617
|
return;
|
|
600
618
|
}
|
|
601
|
-
this.scrollAndFocusColumnOnUpdate =
|
|
619
|
+
this.scrollAndFocusColumnOnUpdate = [item.index, item.id];
|
|
602
620
|
}
|
|
603
|
-
handleSearchSelect(
|
|
604
|
-
if (
|
|
621
|
+
handleSearchSelect(items) {
|
|
622
|
+
if (items.length === 0) {
|
|
605
623
|
return;
|
|
606
624
|
}
|
|
607
625
|
var {
|
|
@@ -611,12 +629,11 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
611
629
|
onColumnVisibilityChanged
|
|
612
630
|
} = this.props;
|
|
613
631
|
if (!showHiddenColumns) {
|
|
614
|
-
var modelIndexesToShow =
|
|
632
|
+
var modelIndexesToShow = [...new Set(items.map(item => item.data.modelIndex).flat())];
|
|
615
633
|
onColumnVisibilityChanged(modelIndexesToShow, true);
|
|
616
634
|
}
|
|
617
|
-
|
|
618
|
-
this.
|
|
619
|
-
this.addColumnToSelected(names, false);
|
|
635
|
+
this.scrollAndFocusColumnOnUpdate = [items[0].index, items[0].id];
|
|
636
|
+
this.addColumnToSelected(items.map(item => item.id), false);
|
|
620
637
|
}
|
|
621
638
|
|
|
622
639
|
/**
|
|
@@ -631,7 +648,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
631
648
|
selectedColumns
|
|
632
649
|
} = this.state;
|
|
633
650
|
var newSelectedColumns = new Set(addToExisting ? [...selectedColumns.values()].concat(columnsToBeAdded) : columnsToBeAdded);
|
|
634
|
-
var flattenedItems =
|
|
651
|
+
var flattenedItems = this.getFlattenedTree();
|
|
635
652
|
|
|
636
653
|
// Add all children of selected groups to the selected columns
|
|
637
654
|
// The treeItems array will always be parent -> child in the order
|
|
@@ -665,7 +682,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
665
682
|
var {
|
|
666
683
|
selectedColumns
|
|
667
684
|
} = this.state;
|
|
668
|
-
var flattenedItems =
|
|
685
|
+
var flattenedItems = this.getFlattenedTree();
|
|
669
686
|
var item = flattenedItems.find(_ref6 => {
|
|
670
687
|
var {
|
|
671
688
|
id
|
|
@@ -711,34 +728,33 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
711
728
|
}
|
|
712
729
|
var dragEvent = event.activatorEvent;
|
|
713
730
|
var isAddingToSelection = GridUtils.isModifierKeyDown(dragEvent) || dragEvent.shiftKey;
|
|
714
|
-
|
|
715
|
-
//
|
|
716
|
-
//
|
|
717
|
-
|
|
718
|
-
flushSync(() => {
|
|
719
|
-
this.handleItemClick(id, event.activatorEvent, true);
|
|
720
|
-
// Always add the dragged item back to selected in case the user ctrl+dragged on an already
|
|
721
|
-
// selected item. The handleItemClick would deselect it, but we want to keep it selected.
|
|
722
|
-
this.addColumnToSelected([id], isAddingToSelection);
|
|
723
|
-
});
|
|
731
|
+
this.handleItemClick(id, event.activatorEvent, true);
|
|
732
|
+
// Always add the dragged item back to selected in case the user ctrl+dragged on an already
|
|
733
|
+
// selected item. The handleItemClick would deselect it, but we want to keep it selected.
|
|
734
|
+
this.addColumnToSelected([id], isAddingToSelection);
|
|
724
735
|
}
|
|
725
736
|
handleDragEnd(from, to) {
|
|
726
737
|
var {
|
|
738
|
+
model,
|
|
727
739
|
movedColumns,
|
|
728
740
|
onMovedColumnsChanged,
|
|
729
741
|
columnHeaderGroups,
|
|
730
742
|
onColumnHeaderGroupChanged
|
|
731
743
|
} = this.props;
|
|
732
744
|
var selectedParentItems = this.getSelectedParentItems();
|
|
733
|
-
var flattenedItems = flattenTree(this.getTreeItems());
|
|
734
745
|
var firstMovableIndex = this.getFirstMovableIndex();
|
|
735
746
|
var lastMovableIndex = this.getLastMovableIndex();
|
|
736
747
|
assertNotNull(firstMovableIndex);
|
|
737
748
|
assertNotNull(lastMovableIndex);
|
|
738
749
|
var {
|
|
739
|
-
groups:
|
|
750
|
+
groups: groupsAfterDrop,
|
|
740
751
|
movedColumns: newMoves
|
|
741
|
-
} = moveItemsFromDrop(from, to, movedColumns, columnHeaderGroups,
|
|
752
|
+
} = moveItemsFromDrop(from, to, movedColumns, columnHeaderGroups, selectedParentItems, firstMovableIndex, lastMovableIndex);
|
|
753
|
+
|
|
754
|
+
// Need to parse so the internal state is correct to prevent weird drop animations
|
|
755
|
+
// when adding/removing from groups. But don't parse if nothing changed to prevent
|
|
756
|
+
// unnecessary undo/redo states.
|
|
757
|
+
var newGroups = groupsAfterDrop !== columnHeaderGroups ? IrisGridUtils.parseColumnHeaderGroups(model, groupsAfterDrop).groups : columnHeaderGroups;
|
|
742
758
|
onColumnHeaderGroupChanged(newGroups);
|
|
743
759
|
onMovedColumnsChanged(newMoves);
|
|
744
760
|
// Without tracking the state here, React 18 is rendering the child separately from
|
|
@@ -746,12 +762,14 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
746
762
|
// original location because of that render with stale items. I could not find any
|
|
747
763
|
// other way to fix this (removing memoization, removing keys, etc.)
|
|
748
764
|
this.setState({
|
|
749
|
-
movedColumns: newMoves
|
|
765
|
+
movedColumns: newMoves,
|
|
766
|
+
columnHeaderGroups: newGroups
|
|
750
767
|
});
|
|
751
768
|
// Focus the dragged item after the move. Should not scroll since it's already in view
|
|
752
|
-
this.scrollAndFocusColumnOnUpdate = from.id;
|
|
769
|
+
this.scrollAndFocusColumnOnUpdate = [to.index, from.id];
|
|
753
770
|
}
|
|
754
771
|
handleGroupNameChange(group, newName) {
|
|
772
|
+
var _this$list3;
|
|
755
773
|
var {
|
|
756
774
|
columnHeaderGroups,
|
|
757
775
|
onColumnHeaderGroupChanged,
|
|
@@ -783,10 +801,13 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
783
801
|
newParent.addChildren([newName]);
|
|
784
802
|
newGroups.splice(parentIndex, 1, newParent);
|
|
785
803
|
}
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
804
|
+
var oldElement = (_this$list3 = this.list) === null || _this$list3 === void 0 ? void 0 : _this$list3.querySelector(".item-wrapper[data-id=\"".concat(oldName, "\"]"));
|
|
805
|
+
if (oldElement != null) {
|
|
806
|
+
// The group will be a new item, so focus it after the update
|
|
807
|
+
// otherwise we may lose focus entirely
|
|
808
|
+
var indexAttr = oldElement.getAttribute('data-index');
|
|
809
|
+
this.scrollAndFocusColumnOnUpdate = indexAttr != null ? [parseInt(indexAttr, 10), newName] : null;
|
|
810
|
+
}
|
|
790
811
|
onColumnHeaderGroupChanged(newGroups);
|
|
791
812
|
endUndoGroup();
|
|
792
813
|
}
|
|
@@ -839,8 +860,8 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
839
860
|
});
|
|
840
861
|
startUndoGroup();
|
|
841
862
|
onMovedColumnsChanged(movedColumns.concat(newMoves), () => {
|
|
842
|
-
var _this$
|
|
843
|
-
(_this$
|
|
863
|
+
var _this$virtualizerRef$4;
|
|
864
|
+
(_this$virtualizerRef$4 = this.virtualizerRef.current) === null || _this$virtualizerRef$4 === void 0 || (_this$virtualizerRef$4 = _this$virtualizerRef$4.scrollElement) === null || _this$virtualizerRef$4 === void 0 || _this$virtualizerRef$4.scrollTo({
|
|
844
865
|
top: 0
|
|
845
866
|
});
|
|
846
867
|
});
|
|
@@ -943,24 +964,32 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
943
964
|
return this.getMemoizedLastMovableIndex(model, model.columns, movedColumns);
|
|
944
965
|
}
|
|
945
966
|
/**
|
|
946
|
-
* Gets the tree
|
|
947
|
-
* Use
|
|
967
|
+
* Gets the tree items in order. Memoized for efficiency
|
|
968
|
+
* Use this.getFlattenedTree() if a flat list is needed
|
|
948
969
|
* @param showHiddenColumns Whether to show hidden columns in the tree. Defaults to the current state value.
|
|
949
|
-
* @returns The
|
|
970
|
+
* @returns The tree items in order
|
|
950
971
|
*/
|
|
951
972
|
getTreeItems(showHiddenColumns) {
|
|
952
973
|
var {
|
|
953
974
|
model,
|
|
954
|
-
hiddenColumns
|
|
955
|
-
columnHeaderGroups
|
|
975
|
+
hiddenColumns
|
|
956
976
|
} = this.props;
|
|
957
977
|
var {
|
|
958
978
|
movedColumns,
|
|
979
|
+
columnHeaderGroups,
|
|
959
980
|
selectedColumns,
|
|
960
981
|
showHiddenColumns: showHiddenColumnsState
|
|
961
982
|
} = this.state;
|
|
962
983
|
return this.memoizedGetTreeItems(model.columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns, showHiddenColumns !== null && showHiddenColumns !== void 0 ? showHiddenColumns : showHiddenColumnsState);
|
|
963
984
|
}
|
|
985
|
+
/**
|
|
986
|
+
* Gets the flattened tree items in order. Memoized for efficiency
|
|
987
|
+
* @param showHiddenColumns Whether to show hidden columns in the tree. Defaults to the current state value.
|
|
988
|
+
* @returns The flattened tree items in order
|
|
989
|
+
*/
|
|
990
|
+
getFlattenedTree(showHiddenColumns) {
|
|
991
|
+
return this.memoizedGetFlattenedTree(this.getTreeItems(showHiddenColumns));
|
|
992
|
+
}
|
|
964
993
|
getSelectedItemModelIndexes(columnNames) {
|
|
965
994
|
var {
|
|
966
995
|
model
|
|
@@ -978,7 +1007,7 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
978
1007
|
var {
|
|
979
1008
|
selectedColumns
|
|
980
1009
|
} = this.state;
|
|
981
|
-
var treeItems =
|
|
1010
|
+
var treeItems = this.getFlattenedTree();
|
|
982
1011
|
return treeItems.filter(_ref14 => {
|
|
983
1012
|
var {
|
|
984
1013
|
id,
|
|
@@ -1060,14 +1089,13 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
1060
1089
|
isSearchModalOpen
|
|
1061
1090
|
} = this.state;
|
|
1062
1091
|
var hasSelection = selectedColumns.size > 0;
|
|
1063
|
-
var
|
|
1064
|
-
var flattenedItems = flattenTree(treeItems);
|
|
1092
|
+
var flattenedItems = this.getFlattenedTree();
|
|
1065
1093
|
var hiddenColumnsSet = new Set(hiddenColumns);
|
|
1066
|
-
var columnsToToggle = hasSelection ? this.getSelectedItemModelIndexes(selectedColumns) :
|
|
1067
|
-
var areSomeVisible = columnsToToggle.some(column => !hiddenColumnsSet.has(column));
|
|
1094
|
+
var columnsToToggle = hasSelection ? this.getSelectedItemModelIndexes(selectedColumns) : model.columns.map((_, i) => i);
|
|
1095
|
+
var areSomeVisible = hasSelection ? columnsToToggle.some(column => !hiddenColumnsSet.has(column)) : hiddenColumnsSet.size < model.columns.length;
|
|
1068
1096
|
var allToggleText = areSomeVisible ? 'Hide All' : 'Show All';
|
|
1069
1097
|
var selectedToggleText = areSomeVisible ? 'Hide Selected' : 'Show Selected';
|
|
1070
|
-
var visibilityOrderingList = this.makeVisibilityOrderingList(model.columns,
|
|
1098
|
+
var visibilityOrderingList = this.makeVisibilityOrderingList(model.columns, flattenedItems, showHiddenColumns, !isSearchModalOpen);
|
|
1071
1099
|
return /*#__PURE__*/_jsx(SortableTreeDndContext, {
|
|
1072
1100
|
items: flattenedItems,
|
|
1073
1101
|
onDragStart: this.handleDragStart,
|
|
@@ -1235,14 +1263,11 @@ class VisibilityOrderingBuilderInner extends PureComponent {
|
|
|
1235
1263
|
})]
|
|
1236
1264
|
}), /*#__PURE__*/_jsx("div", {
|
|
1237
1265
|
role: "menu",
|
|
1266
|
+
ref: list => {
|
|
1267
|
+
this.list = list;
|
|
1268
|
+
},
|
|
1238
1269
|
className: classNames('visibility-ordering-list'),
|
|
1239
|
-
children:
|
|
1240
|
-
className: "column-list",
|
|
1241
|
-
ref: list => {
|
|
1242
|
-
this.list = list;
|
|
1243
|
-
},
|
|
1244
|
-
children: visibilityOrderingList
|
|
1245
|
-
})
|
|
1270
|
+
children: visibilityOrderingList
|
|
1246
1271
|
})]
|
|
1247
1272
|
})
|
|
1248
1273
|
});
|