/
i-menu.js
50 lines (35 loc) · 1.04 KB
/
i-menu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/** @requires BEM */
/** @requires BEM */
(function() {
BEM.DOM.decl('i-menu', {
onElemSetMod : {
'item' : {
'state': {
'current' : function(elem, modName, modVal, oldModVal) {
if (oldModVal == 'disabled') return false;
var prev = this.elem('item', 'state', 'current');
this
.delMod(prev, 'state')
.trigger('current', {
prev : prev,
current : elem
});
}
}
}
},
onItemSelectorClick : function(e) {
var item = this._getItemByEvent(e);
this.setMod(item, 'state', 'current');
},
_getItemByEvent : function(e) {
return e.data.domElem.closest(this.buildSelector('item'));
}
}, {
live : function() {
this.liveBindTo('item-selector', 'leftclick', function(e) {
this.onItemSelectorClick(e);
});
}
});
})();