55 lines
1.4 KiB
JavaScript

import { default as computed, observes } from "ember-addons/ember-computed-decorators";
import DiscourseURL from 'discourse/lib/url';
export default Ember.Component.extend({
tagName: 'ul',
classNameBindings: [':nav', ':nav-pills'],
id: 'navigation-bar',
@computed("filterMode", "navItems")
selectedNavItem(filterMode, navItems){
var item = navItems.find(i => i.get('filterMode').indexOf(filterMode) === 0);
return item || navItems[0];
},
@observes("expanded")
closedNav() {
if (!this.get('expanded')) {
this.ensureDropClosed();
}
},
ensureDropClosed() {
if (!this.get('expanded')) {
this.set('expanded',false);
}
$(window).off('click.navigation-bar');
DiscourseURL.appEvents.off('dom:clean', this, this.ensureDropClosed);
},
actions: {
toggleDrop() {
this.set('expanded', !this.get('expanded'));
if (this.get('expanded')) {
DiscourseURL.appEvents.on('dom:clean', this, this.ensureDropClosed);
Em.run.next(() => {
if (!this.get('expanded')) { return; }
this.$('.drop a').on('click', () => {
this.$('.drop').hide();
this.set('expanded', false);
return true;
});
$(window).on('click.navigation-bar', () => {
this.set('expanded', false);
return true;
});
});
}
}
}
});