mirror of
https://github.com/beestat/app.git
synced 2025-05-24 02:14:03 -04:00
147 lines
3.3 KiB
JavaScript
147 lines
3.3 KiB
JavaScript
/**
|
|
* Menu item
|
|
*/
|
|
beestat.component.menu_item = function() {
|
|
this.hidden_ = false;
|
|
beestat.component.apply(this, arguments);
|
|
};
|
|
beestat.extend(beestat.component.menu_item, beestat.component);
|
|
|
|
/**
|
|
* Decorate
|
|
*
|
|
* @param {rocket.Elements} parent
|
|
*/
|
|
beestat.component.menu_item.prototype.decorate_ = function(parent) {
|
|
var self = this;
|
|
|
|
if (this.hidden_ === false) {
|
|
parent
|
|
.style({
|
|
'padding': (beestat.style.size.gutter / 4) + 'px ' + (beestat.style.size.gutter) + 'px',
|
|
'transition': 'background 200ms ease, color 200ms ease',
|
|
'cursor': 'pointer'
|
|
});
|
|
this.parent_ = parent;
|
|
|
|
(new beestat.component.icon(this.icon_))
|
|
.set_size(24)
|
|
.set_text(this.text_)
|
|
.set_bubble_text(this.bubble_text_)
|
|
.set_bubble_color(this.bubble_color_)
|
|
.render(parent);
|
|
|
|
// Events
|
|
parent.addEventListener('mouseenter', function() {
|
|
parent.style({
|
|
'background': beestat.style.color.blue.light,
|
|
'color': '#fff'
|
|
});
|
|
});
|
|
parent.addEventListener('mouseleave', function() {
|
|
parent.style({
|
|
'background': 'none',
|
|
'color': ''
|
|
});
|
|
});
|
|
parent.addEventListener('click', function() {
|
|
self.menu_.dispose();
|
|
if (self.callback_ !== undefined) {
|
|
self.callback_();
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Set the text of the menu item.
|
|
*
|
|
* @param {string} text
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.set_text = function(text) {
|
|
this.text_ = text;
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* Set the icon of the menu item.
|
|
*
|
|
* @param {string} icon
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.set_icon = function(icon) {
|
|
this.icon_ = icon;
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* Set the callback of clicking the menu item.
|
|
*
|
|
* @param {Function} callback
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.set_callback = function(callback) {
|
|
this.callback_ = callback;
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* Set the text of the bubble.
|
|
*
|
|
* @param {string} bubble_text
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.set_bubble_text = function(bubble_text) {
|
|
this.bubble_text_ = bubble_text;
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* Set the color of the bubble.
|
|
*
|
|
* @param {string} bubble_color
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.set_bubble_color = function(bubble_color) {
|
|
this.bubble_color_ = bubble_color;
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* Hide the menu item.
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.hide = function() {
|
|
this.hidden_ = true;
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* Show the menu item.
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.show = function() {
|
|
this.hidden_ = false;
|
|
return this;
|
|
};
|
|
|
|
/**
|
|
* Set the menu component so the item can interact with it as necessary.
|
|
*
|
|
* @param {beestat.component.menu} menu
|
|
*
|
|
* @return {beestat.component.menu_item} This.
|
|
*/
|
|
beestat.component.menu_item.prototype.set_menu = function(menu) {
|
|
this.menu_ = menu;
|
|
return this;
|
|
};
|