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 theselected
state 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
buttons
attribute in the Y.ButtonGroup config object to add all buttons on instantiation. Update: see comment #4 - Add support for a
srcNodes
selector 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
click
event (exact name TBD) which fires when any button in the group is clicked. This would be most applicable topush
button groups.
To investigate @hatched's request, here's some implementation examples for supporting
srcNodes
andbuttons
config attributes. All 3 are pretty much identical in terms of output/result, just different approaches.A: Instantiate with
srcNodes
instead of usingaddButton();
B: Instantiate with
buttons
instead of usingaddButton();
C: Instantiate with
buttons
instead of usingaddButton();
, but with items not yet in the DOM, then later add them