ui/app/mixins/hover-actions.js

63 lines
1.5 KiB
JavaScript

import Ember from 'ember';
function onHide() {
this.set('isMenuShown', false);
if ( !this.get('isMouseIn') )
{
this.$().removeClass('hover');
}
}
function onShow() {
this.set('isMenuShown', true);
}
function onEnter() {
this.set('isMouseIn',true);
this.$().addClass('hover');
}
function onLeave() {
this.set('isMouseIn',false);
if ( !this.get('isMenuShown') )
{
this.$().removeClass('hover');
}
}
export default Ember.Mixin.create({
boundLeave: null,
boundEnter: null,
boundHide: null,
boundShow: null,
isMouseIn: false,
isMenuShown: false,
didInsertElement: function() {
this._super();
var boundHide = onHide.bind(this);
var boundShow = onShow.bind(this);
var boundEnter = onEnter.bind(this);
var boundLeave = onLeave.bind(this);
this.set('boundHide', boundHide);
this.set('boundShow', boundShow);
this.set('boundEnter', boundEnter);
this.set('boundLeave', boundLeave);
this.$('.resource-actions').on('hide.bs.dropdown', boundHide);
this.$('.resource-actions').on('show.bs.dropdown', boundShow);
this.$().on('mouseenter', boundEnter);
this.$().on('mouseleave', boundLeave);
},
willDestroyElement: function() {
this._super();
this.$('.resource-actions').off('hide.bs.dropdown', this.get('boundHide'));
this.$('.resource-actions').off('show.bs.dropdown', this.get('boundShow'));
this.$().off('mouseleave', this.get('boundLeave'));
this.$().off('mouseenter', this.get('boundEnter'));
}
});