| @@ 8802-8847 (lines=46) @@ | ||
| 8799 | });  | 
                                |
| 8800 | ||
| 8801 |     var ListBox = MenuButton.extend({ | 
                                |
| 8802 |       init: function (settings) { | 
                                |
| 8803 | var self = this;  | 
                                |
| 8804 | var values, selected, selectedText, lastItemCtrl;  | 
                                |
| 8805 |         function setSelected(menuValues) { | 
                                |
| 8806 |           for (var i = 0; i < menuValues.length; i++) { | 
                                |
| 8807 | selected = menuValues[i].selected || settings.value === menuValues[i].value;  | 
                                |
| 8808 |             if (selected) { | 
                                |
| 8809 | selectedText = selectedText || menuValues[i].text;  | 
                                |
| 8810 |               self.state.set('value', menuValues[i].value); | 
                                |
| 8811 | return true;  | 
                                |
| 8812 | }  | 
                                |
| 8813 |             if (menuValues[i].menu) { | 
                                |
| 8814 |               if (setSelected(menuValues[i].menu)) { | 
                                |
| 8815 | return true;  | 
                                |
| 8816 | }  | 
                                |
| 8817 | }  | 
                                |
| 8818 | }  | 
                                |
| 8819 | }  | 
                                |
| 8820 | self._super(settings);  | 
                                |
| 8821 | settings = self.settings;  | 
                                |
| 8822 | self._values = values = settings.values;  | 
                                |
| 8823 |         if (values) { | 
                                |
| 8824 |           if (typeof settings.value !== 'undefined') { | 
                                |
| 8825 | setSelected(values);  | 
                                |
| 8826 | }  | 
                                |
| 8827 |           if (!selected && values.length > 0) { | 
                                |
| 8828 | selectedText = values[0].text;  | 
                                |
| 8829 |             self.state.set('value', values[0].value); | 
                                |
| 8830 | }  | 
                                |
| 8831 |           self.state.set('menu', values); | 
                                |
| 8832 | }  | 
                                |
| 8833 |         self.state.set('text', settings.text || selectedText); | 
                                |
| 8834 |         self.classes.add('listbox'); | 
                                |
| 8835 |         self.on('select', function (e) { | 
                                |
| 8836 | var ctrl = e.control;  | 
                                |
| 8837 |           if (lastItemCtrl) { | 
                                |
| 8838 | e.lastControl = lastItemCtrl;  | 
                                |
| 8839 | }  | 
                                |
| 8840 |           if (settings.multiple) { | 
                                |
| 8841 | ctrl.active(!ctrl.active());  | 
                                |
| 8842 |           } else { | 
                                |
| 8843 | self.value(e.control.value());  | 
                                |
| 8844 | }  | 
                                |
| 8845 | lastItemCtrl = ctrl;  | 
                                |
| 8846 | });  | 
                                |
| 8847 | },  | 
                                |
| 8848 |       value: function (value) { | 
                                |
| 8849 |         if (arguments.length === 0) { | 
                                |
| 8850 |           return this.state.get('value'); | 
                                |
| @@ 8610-8655 (lines=46) @@ | ||
| 8607 | });  | 
                                |
| 8608 | ||
| 8609 |     var ListBox = MenuButton.extend({ | 
                                |
| 8610 |       init: function (settings) { | 
                                |
| 8611 | var self = this;  | 
                                |
| 8612 | var values, selected, selectedText, lastItemCtrl;  | 
                                |
| 8613 |         function setSelected(menuValues) { | 
                                |
| 8614 |           for (var i = 0; i < menuValues.length; i++) { | 
                                |
| 8615 | selected = menuValues[i].selected || settings.value === menuValues[i].value;  | 
                                |
| 8616 |             if (selected) { | 
                                |
| 8617 | selectedText = selectedText || menuValues[i].text;  | 
                                |
| 8618 |               self.state.set('value', menuValues[i].value); | 
                                |
| 8619 | return true;  | 
                                |
| 8620 | }  | 
                                |
| 8621 |             if (menuValues[i].menu) { | 
                                |
| 8622 |               if (setSelected(menuValues[i].menu)) { | 
                                |
| 8623 | return true;  | 
                                |
| 8624 | }  | 
                                |
| 8625 | }  | 
                                |
| 8626 | }  | 
                                |
| 8627 | }  | 
                                |
| 8628 | self._super(settings);  | 
                                |
| 8629 | settings = self.settings;  | 
                                |
| 8630 | self._values = values = settings.values;  | 
                                |
| 8631 |         if (values) { | 
                                |
| 8632 |           if (typeof settings.value !== 'undefined') { | 
                                |
| 8633 | setSelected(values);  | 
                                |
| 8634 | }  | 
                                |
| 8635 |           if (!selected && values.length > 0) { | 
                                |
| 8636 | selectedText = values[0].text;  | 
                                |
| 8637 |             self.state.set('value', values[0].value); | 
                                |
| 8638 | }  | 
                                |
| 8639 |           self.state.set('menu', values); | 
                                |
| 8640 | }  | 
                                |
| 8641 |         self.state.set('text', settings.text || selectedText); | 
                                |
| 8642 |         self.classes.add('listbox'); | 
                                |
| 8643 |         self.on('select', function (e) { | 
                                |
| 8644 | var ctrl = e.control;  | 
                                |
| 8645 |           if (lastItemCtrl) { | 
                                |
| 8646 | e.lastControl = lastItemCtrl;  | 
                                |
| 8647 | }  | 
                                |
| 8648 |           if (settings.multiple) { | 
                                |
| 8649 | ctrl.active(!ctrl.active());  | 
                                |
| 8650 |           } else { | 
                                |
| 8651 | self.value(e.control.value());  | 
                                |
| 8652 | }  | 
                                |
| 8653 | lastItemCtrl = ctrl;  | 
                                |
| 8654 | });  | 
                                |
| 8655 | },  | 
                                |
| 8656 |       value: function (value) { | 
                                |
| 8657 |         if (arguments.length === 0) { | 
                                |
| 8658 |           return this.state.get('value'); | 
                                |