From b0666d4b1820a38c1b5495947a09bdad7b9b581d Mon Sep 17 00:00:00 2001 From: Damien Pellier Date: Mon, 27 Apr 2020 10:52:30 +0200 Subject: [PATCH] fix(tree): prevent all node check on filter --- src/js/CheckboxTree.js | 4 ++++ src/js/NodeModel.js | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/js/CheckboxTree.js b/src/js/CheckboxTree.js index 2e2a99ae..30f98099 100644 --- a/src/js/CheckboxTree.js +++ b/src/js/CheckboxTree.js @@ -193,6 +193,10 @@ class CheckboxTree extends React.Component { } isEveryChildChecked(node) { + if (!node.children || node.children.length === 0) { + return this.state.model.getNode(node.value).checked; + } + return node.children.every( (child) => this.state.model.getNode(child.value).checkState === 1, ); diff --git a/src/js/NodeModel.js b/src/js/NodeModel.js index 82797d56..cc05fd23 100644 --- a/src/js/NodeModel.js +++ b/src/js/NodeModel.js @@ -57,7 +57,7 @@ class NodeModel { } nodeHasChildren(node) { - return Array.isArray(node.children); + return Array.isArray(node.children) && node.children.length > 0; } getDisabledState(node, parent, disabledProp, noCascade) { @@ -163,6 +163,10 @@ class NodeModel { } isEveryChildChecked(node) { + if (!node.children || node.children.length === 0) { + return this.getNode(node.value).checked + } + return node.children.every((child) => this.getNode(child.value).checked); }