This simple mixin is useful in list-like elements like ListBox, where a tap/mousedown on a list item implicitly selects it.
The standard use for this mixin is in list-like elements. Native list boxes don't appear to be consistent with regard to whether they select on mousedown or click/mouseup. This mixin assumes the use of mousedown. On touch devices, that event appears to trigger when the touch is released.
This mixin only listens to mousedown events for the primary mouse button (typically the left button). Right clicks are ignored so that the browser may display a context menu.
This mixin expects the component to provide an
state.items member. It also
expects the component to define a
state.selectedIndex member; you can
provide that yourself, or use SingleSelectionMixin.
If the component receives an event that doesn't correspond to an item (e.g.,
the user taps on the element background visible between items), the selection
will be removed. However, if the component sets
true, a background tap will not remove the selection.