@@ -56,50 +56,25 @@ class TreeNode extends React.Component {
56
56
}
57
57
58
58
onCheck ( ) {
59
- let isChecked = false ;
59
+ const { value , onCheck } = this . props ;
60
60
61
- // Toggle off state to checked
62
- if ( this . props . checked === 0 ) {
63
- isChecked = true ;
64
- }
65
-
66
- // Toggle partial state based on cascade model
67
- if ( this . props . checked === 2 ) {
68
- isChecked = this . props . optimisticToggle ;
69
- }
70
-
71
- this . props . onCheck ( {
72
- value : this . props . value ,
73
- checked : isChecked ,
74
- } ) ;
61
+ onCheck ( { value, checked : this . getCheckState ( { toggle : true } ) } ) ;
75
62
}
76
63
77
64
onClick ( ) {
78
65
const {
79
- checked,
80
66
expandOnClick,
81
67
isParent,
82
- optimisticToggle,
83
68
value,
84
69
onClick,
85
70
} = this . props ;
86
- let isChecked = false ;
87
-
88
- if ( checked === 1 ) {
89
- isChecked = true ;
90
- }
91
-
92
- // Get partial state based on cascade model
93
- if ( checked === 2 ) {
94
- isChecked = optimisticToggle ;
95
- }
96
71
97
72
// Auto expand if enabled
98
73
if ( isParent && expandOnClick ) {
99
74
this . onExpand ( ) ;
100
75
}
101
76
102
- onClick ( { value, checked : isChecked } ) ;
77
+ onClick ( { value, checked : this . getCheckState ( { toggle : false } ) } ) ;
103
78
}
104
79
105
80
onExpand ( ) {
@@ -108,6 +83,27 @@ class TreeNode extends React.Component {
108
83
onExpand ( { value, expanded : ! expanded } ) ;
109
84
}
110
85
86
+ getCheckState ( { toggle } ) {
87
+ const { checked, optimisticToggle } = this . props ;
88
+
89
+ // Toggle off state to checked
90
+ if ( checked === 0 && toggle ) {
91
+ return true ;
92
+ }
93
+
94
+ // Node is already checked and we are not toggling
95
+ if ( checked === 1 && ! toggle ) {
96
+ return true ;
97
+ }
98
+
99
+ // Get/toggle partial state based on cascade model
100
+ if ( checked === 2 ) {
101
+ return optimisticToggle ;
102
+ }
103
+
104
+ return false ;
105
+ }
106
+
111
107
renderCollapseButton ( ) {
112
108
const { expandDisabled, isLeaf, lang } = this . props ;
113
109
0 commit comments