88 lines
1.8 KiB
JavaScript
88 lines
1.8 KiB
JavaScript
import Ember from 'ember';
|
|
import SearchableDropdown from 'flaredown/mixins/searchable-dropdown';
|
|
|
|
const {
|
|
get,
|
|
$,
|
|
computed,
|
|
inject: {
|
|
service,
|
|
},
|
|
computed: {
|
|
alias,
|
|
},
|
|
Component
|
|
} = Ember;
|
|
|
|
export default Component.extend(SearchableDropdown, {
|
|
tagName: 'header',
|
|
classNames: ['flex-container', 'nav'],
|
|
classNameBindings: ['isAuthenticatedUser::unauthenticatedNav'],
|
|
|
|
showSearch: false,
|
|
optionObjects: null,
|
|
searchObjects: null,
|
|
|
|
notifications: service(),
|
|
routeHistory: service(),
|
|
_routing: service('-routing'),
|
|
postId: alias('notifications.first.postId'),
|
|
|
|
click() {
|
|
if(!get(this, 'isAuthenticatedUser')) {
|
|
get(this, '_routing').transitionTo('signup');
|
|
}
|
|
},
|
|
|
|
didInsertElement(){
|
|
const state = {
|
|
direction: 0,
|
|
pos: $(window).scrollTop(),
|
|
};
|
|
|
|
$(window).on('scroll', () => {
|
|
let currentDirection = $(window).scrollTop();
|
|
if(currentDirection > state.pos) {
|
|
$('.nav').addClass('hideNavBar');
|
|
} else {
|
|
$('.nav').removeClass('hideNavBar');
|
|
}
|
|
state.pos = currentDirection;
|
|
});
|
|
},
|
|
|
|
didDestroyElement() {
|
|
$(window).off('scroll');
|
|
},
|
|
|
|
|
|
navigateBackHistory: computed('routeHistory.history', function() {
|
|
return get(this, 'routeHistory.history.length') >= 2;
|
|
}),
|
|
|
|
actions: {
|
|
toggleSearchBar() {
|
|
this.toggleProperty('showSearch');
|
|
},
|
|
|
|
searchObjects(query) {
|
|
this.sendAction('onSearch', query);
|
|
},
|
|
|
|
goToSelectedTopic(selected) {
|
|
if(selected) {
|
|
this.sendAction('onGo', selected);
|
|
}
|
|
},
|
|
|
|
navigateBack() {
|
|
const routing = get(this, '_routing');
|
|
const previous = get(this, 'routeHistory').popEntry();
|
|
|
|
if (previous) {
|
|
routing.transitionTo(...previous);
|
|
}
|
|
},
|
|
}
|
|
});
|