| @@ 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'); |
|