diff --git a/src/utils/tree-data-utils.js b/src/utils/tree-data-utils.js index 836c902b..09cb4dd5 100644 --- a/src/utils/tree-data-utils.js +++ b/src/utils/tree-data-utils.js @@ -621,10 +621,15 @@ export function addNodeUnderParent({ addAsFirstChild = false, }) { if (parentKey === null) { - return { - treeData: [...(treeData || []), newNode], - treeIndex: (treeData || []).length, - }; + return addAsFirstChild + ? { + treeData: [newNode, ...(treeData || [])], + treeIndex: 0, + } + : { + treeData: [...(treeData || []), newNode], + treeIndex: (treeData || []).length, + }; } let insertedTreeIndex = null; diff --git a/src/utils/tree-data-utils.test.js b/src/utils/tree-data-utils.test.js index 448331cf..68128a3c 100644 --- a/src/utils/tree-data-utils.test.js +++ b/src/utils/tree-data-utils.test.js @@ -1145,6 +1145,20 @@ describe('addNodeUnderParent', () => { expect(expectedNewNode).toEqual(nestedParams.newNode); expect(previousChildren).toEqual(nestedParams.treeData[0].children); }); + + it('should add new node as first child under root if addAsFirstChild is true', () => { + const result = addNodeUnderParent({ + ...nestedParams, + parentKey: null, + getNodeKey: keyFromKey, + addAsFirstChild: true, + }); + + const [expectedNewNode, ...previousTreeData] = result.treeData; + + expect(expectedNewNode).toEqual(nestedParams.newNode); + expect(previousTreeData).toEqual(nestedParams.treeData); + }); }); describe('insertNode', () => {