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.
To investigate @hatched's request, here's some implementation examples for supporting
srcNodesandbuttonsconfig attributes. All 3 are pretty much identical in terms of output/result, just different approaches.A: Instantiate with
srcNodesinstead of usingaddButton();B: Instantiate with
buttonsinstead of usingaddButton();C: Instantiate with
buttonsinstead of usingaddButton();, but with items not yet in the DOM, then later add them