Eager tree, consistent pre-selection

Not selected Not selected Not selected Selected Selected Selected Indeterminate Selected Not selected

Eager tree, children pre-selection only

Not selected Not selected Not selected Selected Selected Selected Indeterminate Selected Not selected

Lazy tree, consistent pre-selection

Not selected Not selected Not selected Selected Selected Selected Indeterminate Selected Not selected

Lazy tree, inconsistent pre-selection

If different nodes receive inconsistent selection states as their input, for instance an unselected parent with selected children, we cannot know which one is correct. For this lazy case, it means we simply keep the inconsistent state for each node, and rely on the app to fix it at one point. This can be seen in the following demo by expanding nodes to cpompare parent and children state.

Indeterminate, I'm lazy and I take things literally Not selected Not selected Unselected, I'm lazy and I take things literally Selected Selected Selected, I'm lazy and I take things literally Selected Not selected

Larger declarative tree

{{node.name}} {{child.name}}