From 5e195537b0ff11e9ffc1c3166436ddcd9cb82201 Mon Sep 17 00:00:00 2001 From: Manuel Mager Date: Thu, 25 Apr 2019 11:25:46 +0200 Subject: [PATCH 1/2] fix(utils/addNodeUnderParent): respect addAsFirstChild when parentKey is `null` --- src/utils/tree-data-utils.js | 35 ++++++++++++++++++------------- src/utils/tree-data-utils.test.js | 20 +++++++++++++++--- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/utils/tree-data-utils.js b/src/utils/tree-data-utils.js index 836c902b..452fbce5 100644 --- a/src/utils/tree-data-utils.js +++ b/src/utils/tree-data-utils.js @@ -60,7 +60,7 @@ function getNodeDataAtTreeIndexOrNextIndex({ export function getDescendantCount({ node, ignoreCollapsed = true }) { return ( getNodeDataAtTreeIndexOrNextIndex({ - getNodeKey: () => {}, + getNodeKey: () => { }, ignoreCollapsed, node, currentIndex: 0, @@ -106,12 +106,12 @@ function walkDescendants({ const selfInfo = isPseudoRoot ? null : { - node, - parentNode, - path: selfPath, - lowerSiblingCounts, - treeIndex: currentIndex, - }; + node, + parentNode, + path: selfPath, + lowerSiblingCounts, + treeIndex: currentIndex, + }; if (!isPseudoRoot) { const callbackResult = callback(selfInfo); @@ -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; @@ -887,7 +892,7 @@ export function insertNode({ depth: targetDepth, minimumTreeIndex, newNode, - getNodeKey = () => {}, + getNodeKey = () => { }, ignoreCollapsed = true, expandParent = false, }) { @@ -1095,9 +1100,9 @@ export function find({ const extraInfo = isPseudoRoot ? null : { - path: selfPath, - treeIndex: currentIndex, - }; + path: selfPath, + treeIndex: currentIndex, + }; // Nodes with with children that aren't lazy const hasChildren = diff --git a/src/utils/tree-data-utils.test.js b/src/utils/tree-data-utils.test.js index 448331cf..357429e5 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', () => { @@ -1913,9 +1927,9 @@ describe('map', () => { !node.children ? node : { - ...node, - children: node.children.sort((a, b) => a.key - b.key), - }, + ...node, + children: node.children.sort((a, b) => a.key - b.key), + }, treeData: [ { key: 1, From 61db04dc35368b3e84064bd94ed9562499641c97 Mon Sep 17 00:00:00 2001 From: Manuel Mager Date: Thu, 16 May 2019 10:55:17 +0200 Subject: [PATCH 2/2] style(tree-data-utils): prettify --- src/utils/tree-data-utils.js | 34 +++++++++++++++---------------- src/utils/tree-data-utils.test.js | 6 +++--- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/utils/tree-data-utils.js b/src/utils/tree-data-utils.js index 452fbce5..09cb4dd5 100644 --- a/src/utils/tree-data-utils.js +++ b/src/utils/tree-data-utils.js @@ -60,7 +60,7 @@ function getNodeDataAtTreeIndexOrNextIndex({ export function getDescendantCount({ node, ignoreCollapsed = true }) { return ( getNodeDataAtTreeIndexOrNextIndex({ - getNodeKey: () => { }, + getNodeKey: () => {}, ignoreCollapsed, node, currentIndex: 0, @@ -106,12 +106,12 @@ function walkDescendants({ const selfInfo = isPseudoRoot ? null : { - node, - parentNode, - path: selfPath, - lowerSiblingCounts, - treeIndex: currentIndex, - }; + node, + parentNode, + path: selfPath, + lowerSiblingCounts, + treeIndex: currentIndex, + }; if (!isPseudoRoot) { const callbackResult = callback(selfInfo); @@ -623,13 +623,13 @@ export function addNodeUnderParent({ if (parentKey === null) { return addAsFirstChild ? { - treeData: [newNode, ...(treeData || [])], - treeIndex: 0, - } + treeData: [newNode, ...(treeData || [])], + treeIndex: 0, + } : { - treeData: [...(treeData || []), newNode], - treeIndex: (treeData || []).length, - }; + treeData: [...(treeData || []), newNode], + treeIndex: (treeData || []).length, + }; } let insertedTreeIndex = null; @@ -892,7 +892,7 @@ export function insertNode({ depth: targetDepth, minimumTreeIndex, newNode, - getNodeKey = () => { }, + getNodeKey = () => {}, ignoreCollapsed = true, expandParent = false, }) { @@ -1100,9 +1100,9 @@ export function find({ const extraInfo = isPseudoRoot ? null : { - path: selfPath, - treeIndex: currentIndex, - }; + path: selfPath, + treeIndex: currentIndex, + }; // Nodes with with children that aren't lazy const hasChildren = diff --git a/src/utils/tree-data-utils.test.js b/src/utils/tree-data-utils.test.js index 357429e5..68128a3c 100644 --- a/src/utils/tree-data-utils.test.js +++ b/src/utils/tree-data-utils.test.js @@ -1927,9 +1927,9 @@ describe('map', () => { !node.children ? node : { - ...node, - children: node.children.sort((a, b) => a.key - b.key), - }, + ...node, + children: node.children.sort((a, b) => a.key - b.key), + }, treeData: [ { key: 1,