ui/lib/shared/addon/tooltip/service.js

39 lines
735 B
JavaScript

import { later, cancel } from '@ember/runloop';
import Service, { inject as service } from '@ember/service';
import { get } from '@ember/object';
const DELAY = 250;
export default Service.extend({
app: service(),
mouseLeaveTimer: null,
requireClick: false,
tooltipOpts: null,
openedViaContextClick: false,
childOpened: false,
startTimer() {
this.set('mouseLeaveTimer', later(() => {
this.hide();
}, DELAY));
},
cancelTimer() {
cancel(this.get('mouseLeaveTimer'));
},
hide() {
if (!get(this, 'childOpened')) {
this.set('tooltipOpts', null);
}
},
leave() {
if ( !this.get('requireClick') ) {
this.startTimer();
}
},
});