@fleetbase/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
58 lines (51 loc) • 1.51 kB
JavaScript
import Component from '@glimmer/component';
import { cancel, later } from '@ember/runloop';
import { action } from '@ember/object';
export default class BasicDropdownHoverComponent extends Component {
open(dropdown) {
if (this.closeTimer) {
cancel(this.closeTimer);
this.closeTimer = null;
} else {
let openFn = () => {
this.openTimer = null;
dropdown.actions.open();
};
let openDelay = this.getDelay('open');
if (openDelay) {
this.openTimer = later(openFn, openDelay);
} else {
openFn();
}
}
}
close(dropdown) {
if (this.openTimer) {
cancel(this.openTimer);
this.openTimer = null;
} else {
let closeFn = () => {
this.closeTimer = null;
dropdown.actions.close();
};
let closeDelay = this.getDelay('close');
if (closeDelay) {
this.closeTimer = later(closeFn, closeDelay);
} else {
closeFn();
}
}
}
prevent() {
return false;
}
getDelay(action, defaultDelay = 300) {
if (this.args[`${action}Delay`]) {
return this.args[`${action}Delay`];
}
if (this.args.delay) {
return this.args.delay;
}
return defaultDelay;
}
}