@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.
Files changed (49) hide show
  1. package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts +2 -2
  2. package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts.map +1 -1
  3. package/dist/sidebar/visibility-ordering-builder/SearchItem.js +4 -4
  4. package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
  5. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css +7 -2
  6. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css.map +1 -1
  7. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts +3 -3
  8. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts.map +1 -1
  9. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +13 -11
  10. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
  11. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +1 -3
  12. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -1
  13. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +20 -7
  14. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  15. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +101 -76
  16. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  17. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +1 -1
  18. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
  19. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +5 -23
  20. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  21. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  22. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +7 -5
  23. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  24. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +6 -3
  25. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -1
  26. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +69 -23
  27. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  28. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts +2 -2
  29. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts.map +1 -1
  30. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +52 -47
  31. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
  32. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts +8 -1
  33. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  34. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +12 -5
  35. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  36. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +1 -0
  37. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -1
  38. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +1 -2
  39. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -1
  40. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +9 -4
  41. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  42. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts +1 -1
  43. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts.map +1 -1
  44. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  45. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
  46. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
  47. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +46 -20
  48. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  49. 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: 1000
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
- var lastMovableTreeIndex = treeItems.findIndex(_ref3 => {
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: 1000
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$list;
220
- var itemElement = (_this$list = this.list) === null || _this$list === void 0 ? void 0 : _this$list.querySelector(".item-wrapper[data-id=\"".concat(this.scrollAndFocusColumnOnUpdate, "\"] .tree-item"));
221
- if (itemElement instanceof HTMLElement) {
222
- itemElement.scrollIntoView({
223
- block: 'nearest'
224
- });
225
- itemElement.focus();
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:nth-child(".concat(this.lastFocusedItemIndex + 1, ") .tree-item"));
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 = flattenTree(this.getTreeItems());
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$list3;
434
- (_this$list3 = this.list) === null || _this$list3 === void 0 || (_this$list3 = _this$list3.parentElement) === null || _this$list3 === void 0 || _this$list3.scroll({
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$list4;
442
- (_this$list4 = this.list) === null || _this$list4 === void 0 || (_this$list4 = _this$list4.parentElement) === null || _this$list4 === void 0 || _this$list4.scroll({
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 = flattenTree(this.getTreeItems(showHiddenColumns));
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(name, event) {
584
- var columnsToAdd = this.handleItemClick(name, event, true);
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 = name;
619
+ this.scrollAndFocusColumnOnUpdate = [item.index, item.id];
602
620
  }
603
- handleSearchSelect(names) {
604
- if (names.length === 0) {
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 = this.getSelectedItemModelIndexes(new Set(names));
632
+ var modelIndexesToShow = [...new Set(items.map(item => item.data.modelIndex).flat())];
615
633
  onColumnVisibilityChanged(modelIndexesToShow, true);
616
634
  }
617
- var [firstItem] = names;
618
- this.scrollAndFocusColumnOnUpdate = firstItem;
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 = flattenTree(this.getTreeItems());
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 = flattenTree(this.getTreeItems());
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
- // For some reason, flushSync is needed here to prevent issues when
715
- // dragging multiple items, dropping, then immediately dragging a single item
716
- // over the previously dragged group. Without flushSync, the item being dragged
717
- // can cause items in the previously dragged group to be in completely wrong places.
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: newGroups,
750
+ groups: groupsAfterDrop,
740
751
  movedColumns: newMoves
741
- } = moveItemsFromDrop(from, to, movedColumns, columnHeaderGroups, flattenedItems, selectedParentItems, firstMovableIndex, lastMovableIndex);
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
- // The group will be a new item, so focus it after the update
788
- // otherwise we may lose focus entirely
789
- this.scrollAndFocusColumnOnUpdate = newName;
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$list5;
843
- (_this$list5 = this.list) === null || _this$list5 === void 0 || (_this$list5 = _this$list5.parentElement) === null || _this$list5 === void 0 || _this$list5.scroll({
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 of movable items in order. Memoized for efficiency
947
- * Use flattenItems(this.getTreeItems()) if a flat list is needed
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 movable tree items in order
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 = flattenTree(this.getTreeItems());
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 treeItems = this.getTreeItems();
1064
- var flattenedItems = flattenTree(treeItems);
1092
+ var flattenedItems = this.getFlattenedTree();
1065
1093
  var hiddenColumnsSet = new Set(hiddenColumns);
1066
- var columnsToToggle = hasSelection ? this.getSelectedItemModelIndexes(selectedColumns) : treeItems.map(item => item.data.modelIndex).flat();
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, treeItems, showHiddenColumns, !isSearchModalOpen);
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: /*#__PURE__*/_jsx("div", {
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
  });