You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

55 lines
1.2 KiB

var BlockMenu = new Class({
Extends: BlockBase,
options: {
'class': 'menu'
},
create: function(){
var self = this;
self.el = new Element('div', {
'class': 'more_menu '+self.options['class']
}).adopt(
self.wrapper = new Element('div.wrapper').adopt(
self.more_option_ul = new Element('ul')
),
self.button = new Element('a' + (self.options.button_class ? '.' + self.options.button_class : ''), {
'text': self.options.button_text || '',
'events': {
'click': function(){
self.el.toggleClass('show');
self.fireEvent(self.el.hasClass('show') ? 'open' : 'close');
if(self.el.hasClass('show')){
self.el.addEvent('outerClick', self.removeOuterClick.bind(self));
this.addEvent('outerClick', function(e){
if(e.target.get('tag') != 'input')
self.removeOuterClick();
});
}
else
self.removeOuterClick();
}
}
})
);
},
removeOuterClick: function(){
var self = this;
self.el.removeClass('show');
self.el.removeEvents('outerClick');
self.button.removeEvents('outerClick');
},
addLink: function(tab, position){
var self = this;
return new Element('li').adopt(tab).inject(self.more_option_ul, position || 'bottom');
}
});