| /** |
| * Menu showing all key fields. |
| */ |
| define(['menu', 'vc/item', 'vc/prefix'], function (menuClass, itemClass, prefixClass) { |
| |
| return { |
| create : function (params) { |
| var obj = Object.create(menuClass) |
| .upgradeTo(this) |
| ._init(params, { |
| itemClass : itemClass, |
| prefixClass : prefixClass |
| }); |
| obj.limit(6); |
| |
| // This is only domspecific |
| obj.element().addEventListener('blur', function (e) { |
| this.menu.hide(); |
| }); |
| |
| return obj; |
| }, |
| |
| |
| /** |
| * Register callback for click event. |
| */ |
| released : function (cb) { |
| this._cb = cb; |
| }, |
| |
| |
| /** |
| * A click event was released |
| */ |
| release : function (key, type) { |
| if (this._cb !== undefined) |
| this._cb(key, type); |
| }, |
| |
| /** |
| * Return a key type based on a key. |
| * This is a linear search, but should work okay for small |
| * VCs and small key lists. |
| */ |
| typeOf : function (key) { |
| for (i in this._items) { |
| if (this._items[i].key() === key) { |
| return this._items[i].type(); |
| } |
| }; |
| } |
| }; |
| }); |