summaryrefslogtreecommitdiffstats
path: root/client/components/sidebar/sidebar.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/components/sidebar/sidebar.js')
-rw-r--r--client/components/sidebar/sidebar.js55
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');