Socket
Socket
Sign inDemoInstall

react-complex-tree

Package Overview
Dependencies
3
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.2.4 to 2.2.5-alpha.0

src/stories/DndConfigurability.stories.tsx

12

lib/cjs/controlledEnvironment/useOnDragOverTreeHandler.js

@@ -51,3 +51,3 @@ "use strict";

var useOnDragOverTreeHandler = function (lastDragCode, setLastDragCode, draggingItems, itemHeight, onDragAtPosition, onPerformDrag) {
var _a = (0, ControlledTreeEnvironment_1.useTreeEnvironment)(), canDropOnFolder = _a.canDropOnFolder, canDropOnNonFolder = _a.canDropOnNonFolder, canDragAndDrop = _a.canDragAndDrop, linearItems = _a.linearItems, items = _a.items, canReorderItems = _a.canReorderItems, trees = _a.trees;
var _a = (0, ControlledTreeEnvironment_1.useTreeEnvironment)(), canDropOnFolder = _a.canDropOnFolder, canDropOnNonFolder = _a.canDropOnNonFolder, canDragAndDrop = _a.canDragAndDrop, linearItems = _a.linearItems, items = _a.items, canReorderItems = _a.canReorderItems, trees = _a.trees, canDropBelowOpenFolders = _a.canDropBelowOpenFolders;
var getParentOfLinearItem = (0, useGetParentOfLinearItem_1.useGetGetParentOfLinearItem)();

@@ -111,2 +111,12 @@ var isDescendant = useIsDescendant();

}
var nextItem = linearItems[treeId][linearIndex + 1];
var redirectToFirstChild = !canDropBelowOpenFolders &&
nextItem &&
targetItem.depth === nextItem.depth - 1 &&
offset === 'bottom';
if (redirectToFirstChild) {
targetItem = nextItem;
linearIndex += 1;
offset = 'top';
}
var depth = targetItem.depth;

@@ -113,0 +123,0 @@ var targetItemData = items[targetItem.item];

@@ -0,1 +1,2 @@

/// <reference types="react" />
export declare const TreeManager: () => JSX.Element;

14

lib/cjs/tree/useTreeKeyboardBindings.js

@@ -128,8 +128,12 @@ "use strict";

var _a;
if (viewState.focusedItem !== undefined) {
e.preventDefault();
var item = environment.items[viewState.focusedItem];
(_a = environment.onStartRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);
setRenamingItem(item.index);
if (viewState.focusedItem === undefined) {
return;
}
e.preventDefault();
var item = environment.items[viewState.focusedItem];
if (item.canRename === false) {
return;
}
(_a = environment.onStartRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);
setRenamingItem(item.index);
}, isActiveTree && ((_a = environment.canRename) !== null && _a !== void 0 ? _a : true) && !isRenaming);

@@ -136,0 +140,0 @@ (0, useHotkey_1.useHotkey)('startSearch', function (e) {

@@ -140,2 +140,12 @@ import React, { FormHTMLAttributes, HTMLProps, InputHTMLAttributes, Ref } from 'react';

showLiveDescription?: boolean;
/**
* See Issue #148 or the sample at
* https://rct.lukasbach.com/storybook/?path=/story/core-basic-examples--single-tree?path=/story/core-drag-and-drop-configurability--can-drop-below-open-folders
* for details.
*
* If enabled, dropping at the bottom of an open folder will drop the items
* in the parent folder below the hovered item instead of inside the folder
* at the top.
*/
canDropBelowOpenFolders?: boolean;
}

@@ -142,0 +152,0 @@ export type IndividualTreeViewState<C extends string = never> = {

@@ -88,2 +88,3 @@ "use strict";

var useIsMounted_1 = require("../useIsMounted");
var useRefCopy_1 = require("../useRefCopy");
/* const createCompleteDataProvider = (provider: TreeDataProvider): CompleteTreeDataProvider => ({ // TODO Write class that internally uses provider instead

@@ -100,2 +101,3 @@ ...provider,

var _b = (0, react_1.useState)(props.viewState), viewState = _b[0], setViewState = _b[1];
var viewStateRef = (0, useRefCopy_1.useRefCopy)(viewState);
var missingItemIds = (0, react_1.useRef)([]);

@@ -150,12 +152,13 @@ var dataProvider = (0, react_1.useMemo)(function () { return new CompleteTreeDataProvider_1.CompleteTreeDataProvider(props.dataProvider); }, [props.dataProvider]);

}, onSelectItems: function (items, treeId) {
amendViewState(treeId, function (old) {
var _a, _b;
if (props.disableMultiselect) {
var newSelected = old.focusedItem ? [old.focusedItem] : [];
(_a = props.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(props, newSelected, treeId);
return __assign(__assign({}, old), { selectedItems: newSelected });
}
(_b = props.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(props, items, treeId);
return __assign(__assign({}, old), { selectedItems: items });
});
var _a, _b, _c;
var oldFocusedItem = (_a = viewStateRef.current[treeId]) === null || _a === void 0 ? void 0 : _a.focusedItem;
if (props.disableMultiselect) {
var newSelected_1 = oldFocusedItem ? [oldFocusedItem] : [];
(_b = props.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(props, newSelected_1, treeId);
amendViewState(treeId, function (old) { return (__assign(__assign({}, old), { selectedItems: newSelected_1 })); });
}
else {
(_c = props.onSelectItems) === null || _c === void 0 ? void 0 : _c.call(props, items, treeId);
amendViewState(treeId, function (old) { return (__assign(__assign({}, old), { selectedItems: items })); });
}
}, onFocusItem: function (item, treeId) {

@@ -162,0 +165,0 @@ var _a;

@@ -0,1 +1,2 @@

/// <reference types="react" />
export declare const useIsMounted: () => import("react").MutableRefObject<boolean>;

@@ -48,3 +48,3 @@ import { useTreeEnvironment } from './ControlledTreeEnvironment';

export var useOnDragOverTreeHandler = function (lastDragCode, setLastDragCode, draggingItems, itemHeight, onDragAtPosition, onPerformDrag) {
var _a = useTreeEnvironment(), canDropOnFolder = _a.canDropOnFolder, canDropOnNonFolder = _a.canDropOnNonFolder, canDragAndDrop = _a.canDragAndDrop, linearItems = _a.linearItems, items = _a.items, canReorderItems = _a.canReorderItems, trees = _a.trees;
var _a = useTreeEnvironment(), canDropOnFolder = _a.canDropOnFolder, canDropOnNonFolder = _a.canDropOnNonFolder, canDragAndDrop = _a.canDragAndDrop, linearItems = _a.linearItems, items = _a.items, canReorderItems = _a.canReorderItems, trees = _a.trees, canDropBelowOpenFolders = _a.canDropBelowOpenFolders;
var getParentOfLinearItem = useGetGetParentOfLinearItem();

@@ -108,2 +108,12 @@ var isDescendant = useIsDescendant();

}
var nextItem = linearItems[treeId][linearIndex + 1];
var redirectToFirstChild = !canDropBelowOpenFolders &&
nextItem &&
targetItem.depth === nextItem.depth - 1 &&
offset === 'bottom';
if (redirectToFirstChild) {
targetItem = nextItem;
linearIndex += 1;
offset = 'top';
}
var depth = targetItem.depth;

@@ -110,0 +120,0 @@ var targetItemData = items[targetItem.item];

@@ -125,8 +125,12 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {

var _a;
if (viewState.focusedItem !== undefined) {
e.preventDefault();
var item = environment.items[viewState.focusedItem];
(_a = environment.onStartRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);
setRenamingItem(item.index);
if (viewState.focusedItem === undefined) {
return;
}
e.preventDefault();
var item = environment.items[viewState.focusedItem];
if (item.canRename === false) {
return;
}
(_a = environment.onStartRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);
setRenamingItem(item.index);
}, isActiveTree && ((_a = environment.canRename) !== null && _a !== void 0 ? _a : true) && !isRenaming);

@@ -133,0 +137,0 @@ useHotkey('startSearch', function (e) {

@@ -140,2 +140,12 @@ import React, { FormHTMLAttributes, HTMLProps, InputHTMLAttributes, Ref } from 'react';

showLiveDescription?: boolean;
/**
* See Issue #148 or the sample at
* https://rct.lukasbach.com/storybook/?path=/story/core-basic-examples--single-tree?path=/story/core-drag-and-drop-configurability--can-drop-below-open-folders
* for details.
*
* If enabled, dropping at the bottom of an open folder will drop the items
* in the parent folder below the hovered item instead of inside the folder
* at the top.
*/
canDropBelowOpenFolders?: boolean;
}

@@ -142,0 +152,0 @@ export type IndividualTreeViewState<C extends string = never> = {

@@ -62,2 +62,3 @@ var __assign = (this && this.__assign) || function () {

import { useIsMounted } from '../useIsMounted';
import { useRefCopy } from '../useRefCopy';
/* const createCompleteDataProvider = (provider: TreeDataProvider): CompleteTreeDataProvider => ({ // TODO Write class that internally uses provider instead

@@ -74,2 +75,3 @@ ...provider,

var _b = useState(props.viewState), viewState = _b[0], setViewState = _b[1];
var viewStateRef = useRefCopy(viewState);
var missingItemIds = useRef([]);

@@ -124,12 +126,13 @@ var dataProvider = useMemo(function () { return new CompleteTreeDataProvider(props.dataProvider); }, [props.dataProvider]);

}, onSelectItems: function (items, treeId) {
amendViewState(treeId, function (old) {
var _a, _b;
if (props.disableMultiselect) {
var newSelected = old.focusedItem ? [old.focusedItem] : [];
(_a = props.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(props, newSelected, treeId);
return __assign(__assign({}, old), { selectedItems: newSelected });
}
(_b = props.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(props, items, treeId);
return __assign(__assign({}, old), { selectedItems: items });
});
var _a, _b, _c;
var oldFocusedItem = (_a = viewStateRef.current[treeId]) === null || _a === void 0 ? void 0 : _a.focusedItem;
if (props.disableMultiselect) {
var newSelected_1 = oldFocusedItem ? [oldFocusedItem] : [];
(_b = props.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(props, newSelected_1, treeId);
amendViewState(treeId, function (old) { return (__assign(__assign({}, old), { selectedItems: newSelected_1 })); });
}
else {
(_c = props.onSelectItems) === null || _c === void 0 ? void 0 : _c.call(props, items, treeId);
amendViewState(treeId, function (old) { return (__assign(__assign({}, old), { selectedItems: items })); });
}
}, onFocusItem: function (item, treeId) {

@@ -136,0 +139,0 @@ var _a;

@@ -48,3 +48,3 @@ import { useTreeEnvironment } from './ControlledTreeEnvironment';

export var useOnDragOverTreeHandler = function (lastDragCode, setLastDragCode, draggingItems, itemHeight, onDragAtPosition, onPerformDrag) {
var _a = useTreeEnvironment(), canDropOnFolder = _a.canDropOnFolder, canDropOnNonFolder = _a.canDropOnNonFolder, canDragAndDrop = _a.canDragAndDrop, linearItems = _a.linearItems, items = _a.items, canReorderItems = _a.canReorderItems, trees = _a.trees;
var _a = useTreeEnvironment(), canDropOnFolder = _a.canDropOnFolder, canDropOnNonFolder = _a.canDropOnNonFolder, canDragAndDrop = _a.canDragAndDrop, linearItems = _a.linearItems, items = _a.items, canReorderItems = _a.canReorderItems, trees = _a.trees, canDropBelowOpenFolders = _a.canDropBelowOpenFolders;
var getParentOfLinearItem = useGetGetParentOfLinearItem();

@@ -108,2 +108,12 @@ var isDescendant = useIsDescendant();

}
var nextItem = linearItems[treeId][linearIndex + 1];
var redirectToFirstChild = !canDropBelowOpenFolders &&
nextItem &&
targetItem.depth === nextItem.depth - 1 &&
offset === 'bottom';
if (redirectToFirstChild) {
targetItem = nextItem;
linearIndex += 1;
offset = 'top';
}
var depth = targetItem.depth;

@@ -110,0 +120,0 @@ var targetItemData = items[targetItem.item];

@@ -125,8 +125,12 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {

var _a;
if (viewState.focusedItem !== undefined) {
e.preventDefault();
var item = environment.items[viewState.focusedItem];
(_a = environment.onStartRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);
setRenamingItem(item.index);
if (viewState.focusedItem === undefined) {
return;
}
e.preventDefault();
var item = environment.items[viewState.focusedItem];
if (item.canRename === false) {
return;
}
(_a = environment.onStartRenamingItem) === null || _a === void 0 ? void 0 : _a.call(environment, item, treeId);
setRenamingItem(item.index);
}, isActiveTree && ((_a = environment.canRename) !== null && _a !== void 0 ? _a : true) && !isRenaming);

@@ -133,0 +137,0 @@ useHotkey('startSearch', function (e) {

@@ -140,2 +140,12 @@ import React, { FormHTMLAttributes, HTMLProps, InputHTMLAttributes, Ref } from 'react';

showLiveDescription?: boolean;
/**
* See Issue #148 or the sample at
* https://rct.lukasbach.com/storybook/?path=/story/core-basic-examples--single-tree?path=/story/core-drag-and-drop-configurability--can-drop-below-open-folders
* for details.
*
* If enabled, dropping at the bottom of an open folder will drop the items
* in the parent folder below the hovered item instead of inside the folder
* at the top.
*/
canDropBelowOpenFolders?: boolean;
}

@@ -142,0 +152,0 @@ export type IndividualTreeViewState<C extends string = never> = {

@@ -62,2 +62,3 @@ var __assign = (this && this.__assign) || function () {

import { useIsMounted } from '../useIsMounted';
import { useRefCopy } from '../useRefCopy';
/* const createCompleteDataProvider = (provider: TreeDataProvider): CompleteTreeDataProvider => ({ // TODO Write class that internally uses provider instead

@@ -74,2 +75,3 @@ ...provider,

var _b = useState(props.viewState), viewState = _b[0], setViewState = _b[1];
var viewStateRef = useRefCopy(viewState);
var missingItemIds = useRef([]);

@@ -124,12 +126,13 @@ var dataProvider = useMemo(function () { return new CompleteTreeDataProvider(props.dataProvider); }, [props.dataProvider]);

}, onSelectItems: function (items, treeId) {
amendViewState(treeId, function (old) {
var _a, _b;
if (props.disableMultiselect) {
var newSelected = old.focusedItem ? [old.focusedItem] : [];
(_a = props.onSelectItems) === null || _a === void 0 ? void 0 : _a.call(props, newSelected, treeId);
return __assign(__assign({}, old), { selectedItems: newSelected });
}
(_b = props.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(props, items, treeId);
return __assign(__assign({}, old), { selectedItems: items });
});
var _a, _b, _c;
var oldFocusedItem = (_a = viewStateRef.current[treeId]) === null || _a === void 0 ? void 0 : _a.focusedItem;
if (props.disableMultiselect) {
var newSelected_1 = oldFocusedItem ? [oldFocusedItem] : [];
(_b = props.onSelectItems) === null || _b === void 0 ? void 0 : _b.call(props, newSelected_1, treeId);
amendViewState(treeId, function (old) { return (__assign(__assign({}, old), { selectedItems: newSelected_1 })); });
}
else {
(_c = props.onSelectItems) === null || _c === void 0 ? void 0 : _c.call(props, items, treeId);
amendViewState(treeId, function (old) { return (__assign(__assign({}, old), { selectedItems: items })); });
}
}, onFocusItem: function (item, treeId) {

@@ -136,0 +139,0 @@ var _a;

{
"name": "react-complex-tree",
"version": "2.2.4",
"version": "2.2.5-alpha.0",
"main": "lib/cjs/index.js",

@@ -37,3 +37,3 @@ "module": "lib/esm/index.js",

"cpy-cli": "^3.1.1",
"demodata": "^2.2.4",
"demodata": "^2.2.5-alpha.0",
"jest": "^29.2.2",

@@ -70,3 +70,3 @@ "jest-dom": "^4.0.0",

},
"gitHead": "30bd4a6b9cfa764baca769392e5d48a690a280d4"
"gitHead": "501645cea67087af9878f52e1cf31f47751d2785"
}

@@ -98,2 +98,3 @@ import * as React from 'react';

trees,
canDropBelowOpenFolders,
} = useTreeEnvironment();

@@ -192,2 +193,14 @@ const getParentOfLinearItem = useGetGetParentOfLinearItem();

const nextItem = linearItems[treeId][linearIndex + 1];
const redirectToFirstChild =
!canDropBelowOpenFolders &&
nextItem &&
targetItem.depth === nextItem.depth - 1 &&
offset === 'bottom';
if (redirectToFirstChild) {
targetItem = nextItem;
linearIndex += 1;
offset = 'top';
}
const { depth } = targetItem;

@@ -194,0 +207,0 @@ const targetItemData = items[targetItem.item];

@@ -173,8 +173,15 @@ import { useKey } from '../hotkeys/useKey';

e => {
if (viewState.focusedItem !== undefined) {
e.preventDefault();
const item = environment.items[viewState.focusedItem];
environment.onStartRenamingItem?.(item, treeId);
setRenamingItem(item.index);
if (viewState.focusedItem === undefined) {
return;
}
e.preventDefault();
const item = environment.items[viewState.focusedItem];
if (item.canRename === false) {
return;
}
environment.onStartRenamingItem?.(item, treeId);
setRenamingItem(item.index);
},

@@ -181,0 +188,0 @@ isActiveTree && (environment.canRename ?? true) && !isRenaming

@@ -179,2 +179,13 @@ import React, {

showLiveDescription?: boolean;
/**
* See Issue #148 or the sample at
* https://rct.lukasbach.com/storybook/?path=/story/core-basic-examples--single-tree?path=/story/core-drag-and-drop-configurability--can-drop-below-open-folders
* for details.
*
* If enabled, dropping at the bottom of an open folder will drop the items
* in the parent folder below the hovered item instead of inside the folder
* at the top.
*/
canDropBelowOpenFolders?: boolean;
}

@@ -181,0 +192,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc