ui/lib/shared/addon/mixins/hover-dropdowns.js

28 lines
518 B
JavaScript

import Mixin from '@ember/object/mixin';
import { cancel, later } from '@ember/runloop';
export default Mixin.create({
actions: {
prevent() {
return false;
},
open(dropdown) {
if (this.closeTimer) {
cancel(this.closeTimer);
this.closeTimer = null;
} else {
dropdown.actions.open();
}
},
closeLater(dropdown) {
this.closeTimer = later(() => {
this.closeTimer = null;
dropdown.actions.close();
}, 200);
}
},
});