|
|
- /**
- _onyx.Picker_, a subkind of <a href="#onyx.Menu">onyx.Menu</a>, is used to
- display a list of items that can be selected. It is meant to be used in
- conjunction with an <a href="#onyx.PickerDecorator">onyx.PickerDecorator</a>.
- The decorator loosely couples the Picker with an
- <a href="#onyx.PickerButton">onyx.PickerButton</a>--a button that, when
- tapped, shows the picker. Once an item is selected, the list of items closes,
- but the item stays selected and the PickerButton displays the choice that
- was made.
-
- To initialize the Picker to a particular value, set the _active_ property to
- true for the item that should be selected.
-
- {kind: "onyx.PickerDecorator", components: [
- {}, //this uses the defaultKind property of PickerDecorator to inherit from PickerButton
- {kind: "onyx.Picker", components: [
- {content: "Gmail", active: true},
- {content: "Yahoo"},
- {content: "Outlook"},
- {content: "Hotmail"}
- ]}
- ]}
-
- Each item in the list is an <a href="#onyx.MenuItem">onyx.MenuItem</a>, so
- an _onSelect_ event with the item can be listened to by a client application
- to determine which picker item was selected.
- */
- enyo.kind({
- name: "onyx.Picker",
- kind: "onyx.Menu",
- classes: "onyx-picker enyo-unselectable",
- published: {
- selected: null,
- maxHeight: "200px"
- },
- events: {
- onChange: ""
- },
- components: [
- {name: "client", kind: "enyo.Scroller", strategyKind: "TouchScrollStrategy"}
- ],
- floating: true,
- showOnTop: true,
- scrollerName: "client",
- create: function() {
- this.inherited(arguments);
- this.maxHeightChanged();
- },
- getScroller: function() {
- return this.$[this.scrollerName];
- },
- maxHeightChanged: function() {
- this.getScroller().setMaxHeight(this.maxHeight);
- },
- showingChanged: function() {
- this.getScroller().setShowing(this.showing);
- this.inherited(arguments);
- if (this.showing && this.selected) {
- this.scrollToSelected();
- }
- },
- scrollToSelected: function() {
- this.getScroller().scrollToControl(this.selected, !this.menuUp);
- },
- itemActivated: function(inSender, inEvent) {
- this.processActivatedItem(inEvent.originator)
- return this.inherited(arguments);
- },
- processActivatedItem: function(inItem) {
- if (inItem.active) {
- this.setSelected(inItem);
- }
- },
- selectedChanged: function(inOld) {
- if (inOld) {
- inOld.removeClass("selected");
- }
- if (this.selected) {
- this.selected.addClass("selected");
- this.doChange({selected: this.selected, content: this.selected.content});
- };
- },
- resizeHandler: function() {
- this.inherited(arguments);
- this.adjustPosition(false);
- }
- });
|