react-magma-dom 4.7.0-next.53 → 4.7.0-next.55

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.
@@ -4,3 +4,4 @@ export * from './useTreeItem';
4
4
  export * from './useTreeView';
5
5
  export * from './utils';
6
6
  export * from './types';
7
+ export { TreeItemSelectedInterface, TreeViewApi } from './useTreeView';
@@ -6,6 +6,8 @@ export interface TreeViewApi {
6
6
  selectItem({ itemId, checkedStatus, }: Pick<TreeViewItemInterface, 'itemId' | 'checkedStatus'>): void;
7
7
  selectAll(): void;
8
8
  clearAll(): void;
9
+ showMore(): void;
10
+ showLess(): void;
9
11
  }
10
12
  export interface UseTreeViewProps {
11
13
  /**
@@ -73,6 +75,8 @@ export interface UseTreeViewProps {
73
75
  * selectItem({ itemId, checkedStatus }: Pick<TreeViewItemInterface, 'itemId' | 'checkedStatus'>): void - action that allows to change item selection,
74
76
  * selectAll(): void - action that allows to select all items,
75
77
  * clearAll(): void - action that allows to unselect all items.
78
+ * showMore(): void - action that gets called when a tree has hidden items and they get expanded.
79
+ * showLess(): void - action that gets called when a tree has hidden items and they get collapsed.
76
80
  */
77
81
  apiRef?: React.MutableRefObject<TreeViewApi | undefined>;
78
82
  /**
package/dist/esm/index.js CHANGED
@@ -28937,7 +28937,7 @@ function useTreeView(props) {
28937
28937
  }, [items, rawInitialExpandedItems]);
28938
28938
  var itemToFocus = useMemo(function () {
28939
28939
  var enabledItems = items.filter(function (item) {
28940
- return !(item != null && item.isDisabled);
28940
+ return !item.isDisabled;
28941
28941
  });
28942
28942
  var firstItem = enabledItems[0];
28943
28943
  if (selectable === TreeViewSelectable.off) {
@@ -28956,7 +28956,12 @@ function useTreeView(props) {
28956
28956
  }, [items]);
28957
28957
  var prevSelectedItemsRef = useRef(null);
28958
28958
  var prevPreselectedItemsRef = useRef(preselectedItems);
28959
+ var prevChildrenRef = useRef(children);
28959
28960
  var initializationRef = useRef(true);
28961
+ // Used for showAll button
28962
+ var _React$useState3 = useState(null),
28963
+ itemsNeedUpdate = _React$useState3[0],
28964
+ setItemsNeedUpdate = _React$useState3[1];
28960
28965
  useEffect(function () {
28961
28966
  if (isEqualArrays(prevPreselectedItemsRef.current, preselectedItems)) {
28962
28967
  return;
@@ -29063,20 +29068,13 @@ function useTreeView(props) {
29063
29068
  if ([TreeViewSelectable.single, TreeViewSelectable.single].includes(selectable) || isDisabled) {
29064
29069
  return;
29065
29070
  }
29066
- setItems(function (prevItems) {
29067
- return toggleAllMulti({
29068
- items: items,
29069
- checkedStatus: IndeterminateCheckboxStatus.checked,
29070
- checkChildren: checkChildren,
29071
- checkParents: checkParents
29072
- });
29073
- });
29071
+ this.showMore(true);
29074
29072
  },
29075
29073
  clearAll: function clearAll() {
29076
29074
  if (isDisabled) {
29077
29075
  return;
29078
29076
  }
29079
- setItems(function (prevItems) {
29077
+ setItems(function () {
29080
29078
  return toggleAllMulti({
29081
29079
  items: items,
29082
29080
  checkedStatus: IndeterminateCheckboxStatus.unchecked,
@@ -29084,13 +29082,54 @@ function useTreeView(props) {
29084
29082
  checkParents: checkParents
29085
29083
  });
29086
29084
  });
29085
+ },
29086
+ showMore: function showMore(fromSelectAll) {
29087
+ if (fromSelectAll === void 0) {
29088
+ fromSelectAll = false;
29089
+ }
29090
+ if (fromSelectAll) {
29091
+ setItems(function () {
29092
+ return toggleAllMulti({
29093
+ items: items,
29094
+ checkedStatus: IndeterminateCheckboxStatus.checked,
29095
+ checkChildren: checkChildren,
29096
+ checkParents: checkParents
29097
+ });
29098
+ });
29099
+ } else {
29100
+ setItemsNeedUpdate(true);
29101
+ }
29102
+ },
29103
+ showLess: function showLess() {
29104
+ setItems(getInitialItems({
29105
+ children: children,
29106
+ preselectedItems: selectedItems,
29107
+ checkParents: checkParents,
29108
+ checkChildren: checkChildren,
29109
+ selectable: selectable,
29110
+ isDisabled: isDisabled
29111
+ }));
29087
29112
  }
29088
29113
  };
29089
29114
  }
29090
- }, [selectItem, isDisabled]);
29091
- var _React$useState3 = useState(false),
29092
- initialExpandedItemsNeedUpdate = _React$useState3[0],
29093
- setInitialExpandedItemsNeedUpdate = _React$useState3[1];
29115
+ }, [selectItem, isDisabled, children]);
29116
+ useEffect(function () {
29117
+ if (itemsNeedUpdate) {
29118
+ setItems(getInitialItems({
29119
+ children: children,
29120
+ preselectedItems: selectedItems,
29121
+ checkParents: checkParents,
29122
+ checkChildren: checkChildren,
29123
+ selectable: selectable,
29124
+ isDisabled: isDisabled
29125
+ }));
29126
+ prevChildrenRef.current = children;
29127
+ setItemsNeedUpdate(false);
29128
+ }
29129
+ }, [itemsNeedUpdate, children]);
29130
+ var _React$useState4 = useState(false),
29131
+ initialExpandedItemsNeedUpdate = _React$useState4[0],
29132
+ setInitialExpandedItemsNeedUpdate = _React$useState4[1];
29094
29133
  var _useDescendants = useDescendants(),
29095
29134
  treeItemRefArray = _useDescendants[0],
29096
29135
  registerTreeItem = _useDescendants[1];
@@ -29099,9 +29138,9 @@ function useTreeView(props) {
29099
29138
  setInitialExpandedItemsNeedUpdate(true);
29100
29139
  }
29101
29140
  }, []);
29102
- var _React$useState4 = useState(new Set(initialExpandedItems)),
29103
- expandedSet = _React$useState4[0],
29104
- setExpandedSet = _React$useState4[1];
29141
+ var _React$useState5 = useState(new Set(initialExpandedItems)),
29142
+ expandedSet = _React$useState5[0],
29143
+ setExpandedSet = _React$useState5[1];
29105
29144
  var handleExpandedChange = function handleExpandedChange(event, itemId) {
29106
29145
  setExpandedSet(function (prevExpandedSet) {
29107
29146
  var updatedExpandedSet = new Set(prevExpandedSet);