diff options
Diffstat (limited to 'client/components/sidebar/sidebar.js')
-rw-r--r-- | client/components/sidebar/sidebar.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js new file mode 100644 index 00000000..3f0142d4 --- /dev/null +++ b/client/components/sidebar/sidebar.js @@ -0,0 +1,55 @@ +BlazeComponent.extendComponent({ + template: function() { + return 'boardSidebar'; + }, + + mixins: function() { + return [Mixins.InfiniteScrolling]; + }, + + onCreated: function() { + this._isOpen = new ReactiveVar(true); + }, + + isOpen: function() { + return this._isOpen.get(); + }, + + open: function() { + if (! this._isOpen.get()) { + this._isOpen.set(true); + } + }, + + hide: function() { + if (this._isOpen.get()) { + this._isOpen.set(false); + } + }, + + toogle: function() { + this._isOpen.set(! this._isOpen.get()); + }, + + calculateNextPeak: function() { + var altitude = this.find('.js-board-sidebar-content').scrollHeight; + this.callFirstWith(this, 'setNextPeak', altitude); + }, + + reachNextPeak: function() { + var activitiesComponent = this.componentChildren('activities')[0]; + activitiesComponent.loadNextPage(); + }, + + isTongueHidden: function() { + return this.isOpen() && Filter.isActive(); + }, + + events: function() { + // XXX Hacky, we need some kind of `super` + var mixinEvents = this.getMixin(Mixins.InfiniteScrolling).events(); + return mixinEvents.concat([{ + 'click .js-toogle-sidebar': this.toogle + }]); + } +}).register('boardSidebar'); |