I have multiple Y.Button instances that are logically associated and need to be managed as a group.
For example, you may need a radio group, so when one button becomes selected, the others are unselected. Or a checkbox group, which allows you to select multiple buttons and at some point you need to obtain the values of all selected buttons.
Note: A push group is really just a checkbox group, but with Y.Button instances whose types are push as opposed to toggle.
addButton- Adds a button to the groupgetButtons- Returns an array of Y.Button instances assigned to the groupgetSelectedButtons- Returns an array of Y.Button instances that are currently selectedgetSelectedValues- Returns an array of the values of select buttons (sugar)
type('checkbox' [default], or 'radio')
selectionChange- Fires after theselectedstate on a grouped button changes.
button-base(requires:base,classnamemanager,node)
// Instantiation
group = new Y.ButtonGroup({type: 'radio'});
buttonA = new Y.Button({srcNode: "#foo"});
buttonB = new Y.Button({srcNode: "#bar"});
// Interaction
group.addButton(ButtonA);
group.addButton(ButtonB);
buttonA.select();
selected = group.getSelectedButtons(); // Returns buttonA
buttonB.select();
selected = group.getSelectedButtons(); // Returns buttonB- Add support for a
buttonsattribute in the Y.ButtonGroup config object to add all buttons on instantiation. Update: see comment #4 - Add support for a
srcNodesselector attribute in the Y.ButtonGroup config object to create Y.Button instances for each node and add to the group. Update: see comment #4 - Add support for a
clickevent (exact name TBD) which fires when any button in the group is clicked. This would be most applicable topushbutton groups.
@rgrove: to answer your question, Tripp & I couldn't think of any other 80% use-case for a group of buttons outside of a menu bar or tool bar. For those, it will be either push, radio, or toggle.
"or is button creation and event management left entirely up to Y.Button and the implementor?"
For the most part, yes. However, ButtonGroup will fire
selectionChange(which I forgot to add to the Gist before, added) and an implementer can subscribe to that instead of listening on all buttons.