Tri-state is not for direct user input
Aliases: mixed not a choice · indeterminate derived · not a third option
What it is
Indeterminate can only be computed from children; it is not a third bin the user may pick. Clicking a mixed parent should collapse it to all-on or all-off, not leave “mixed” as the value they meant to set. Tri-state is not input forbids drawing “yes / no / unknown” as three clickable boxes to collect an answer named unknown. That mistakes a summary glyph for a scale.
When people truly need unknown / not applicable, use an explicit empty option, extra radios, or a separate Unknown control — do not reuse the mixed dash.
Why it happens
Mixed has no stable operational meaning. On click, the system cannot tell whether the person wanted “tick the rest,” “clear the ticked,” or “keep mixed.” Platform habit is usually mixed → all-on → all-off → all-on, treating mixed as a brief pass-through that is not allowed to remain after a click. If a click still shows mixed, the click looks dropped.
Opening tri-state as input also pollutes data. Mixed should be derived; once a user writes it, derivation and fact can fight: children change later while the parent stays pinned on a clicked “unknown.” The summary can no longer recompute from children, and the folded view starts to lie.
Where it stops holding
Assistive roles may announce mixed; that is reading a computed state, not offering a third settable value. Some specialist tools collect yes / no / unknown as three named options — those should be radios or a select; a boxed dash makes unknown look like partial selection. When clicking a mixed parent, disabled children must not be swept into all-on; the cycle should skip them and say so, or people will think they ticked all and still see mixed — that leftover mix is derived from disablement, still not an invitation to “type mixed.”
Applying it
- Keep mixed derived: recompute when children change; a user click only collapses to all or none.
- Make unknown a named option; do not reuse the parent dash.
- Document the click cycle: mixed to all, all to none, none to all; do not offer “set mixed” on the cycle.
- How to check: click a mixed parent once; the state should become definite and children should follow. If it stays on a dash, or the form stores mixed as a submittable value, the input model is wrong.
Related
- Within the group: E3.12.1 A parent checkbox needs a third state for partial selection · E3.12.3 The mixed appearance must separate from checked
- Adjacent: E3.02 Radio Buttons · E3.16 Tree Multi-Select and Parent-Child Coupling
- Search terms:
indeterminate not input·mixed derived state·checkbox click cycle