Browse Source

Implement list restoration

Maxime Quandalle 9 years ago
parent
commit
04bfbd5bd1

+ 1 - 0
.meteor/packages

@@ -55,3 +55,4 @@ peerlibrary:blaze-components
 perak:markdown
 reactive-var
 seriousm:emoji-continued
+templates:tabs

+ 1 - 0
.meteor/versions

@@ -107,6 +107,7 @@ spacebars@1.0.6
 spacebars-compiler@1.0.6
 srp@1.0.3
 tap:i18n@1.5.1
+templates:tabs@2.2.0
 templating@1.1.1
 tmeasday:presence@1.0.6
 tracker@1.0.7

+ 4 - 0
client/components/main/layouts.styl

@@ -288,6 +288,10 @@ a
     list-style-type: initial
     padding-left: 20px
 
+.basicTabs-container .tabs-content-container
+  padding: 0
+  padding-top: 15px
+
 @keyframes fadeIn
   from
     opacity: 0

+ 14 - 0
client/components/sidebar/sidebar.styl

@@ -116,3 +116,17 @@
   .board-sidebar.is-open &.is-hidden
     z-index: 0
     left: 5px
+
+.archived-lists .archived-lists-item
+  border-top: 1px solid darken(white, 20%)
+  clear: both
+  padding: 5px 0
+
+  &:first-child
+    border-top: none
+
+  button
+    float: right
+    margin: 0
+    margin-bottom: 5px
+    padding: 0 2px 0 10px

+ 24 - 11
client/components/sidebar/sidebarArchives.jade

@@ -1,12 +1,25 @@
 template(name="archivesSidebar")
-  each archivedCards
-    .minicard-wrapper.js-minicard
-      +minicard(this)
-    p.quiet
-      a.js-restore Restore
-      | -
-      a.js-delete Delete
-    if cardIsInArchivedList
-      p.quiet.small (warning: this card is in an archived list) <br>
-  else
-    p.no-items-message No archived cards.
+  +basicTabs(tabs=tabs)
+
+   +tabContent(slug="cards")
+    each archivedCards
+      .minicard-wrapper.js-minicard
+        +minicard(this)
+      p.quiet
+        a.js-restore-card Restore
+        | -
+        a.js-delete-card Delete
+      if cardIsInArchivedList
+        p.quiet.small (warning: this card is in an archived list) <br>
+    else
+      p.no-items-message No archived cards.
+
+   +tabContent(slug="lists")
+    ul.archived-lists
+      each archivedLists
+        li.archived-lists-item
+          button.js-restore-list
+            i.fa.fa-undo
+          = title
+      else
+        li.no-items-message No archived lists.

+ 19 - 4
client/components/sidebar/sidebarArchives.js

@@ -3,8 +3,19 @@ BlazeComponent.extendComponent({
     return 'archivesSidebar';
   },
 
+  tabs: function() {
+    return [
+      { name: 'Cards', slug: 'cards' },
+      { name: 'Lists', slug: 'lists' }
+    ]
+  },
+
   archivedCards: function() {
-    return Cards.find({archived: true});
+    return Cards.find({ archived: true });
+  },
+
+  archivedLists: function() {
+    return Lists.find({ archived: true });
   },
 
   cardIsInArchivedList: function() {
@@ -17,15 +28,19 @@ BlazeComponent.extendComponent({
 
   events: function() {
     return [{
-      'click .js-restore': function() {
+      'click .js-restore-card': function() {
         var cardId = this.currentData()._id;
         Cards.update(cardId, {$set: {archived: false}});
       },
-      'click .js-delete': Popup.afterConfirm('cardDelete', function() {
+      'click .js-delete-card': Popup.afterConfirm('cardDelete', function() {
         var cardId = this._id;
         Cards.remove(cardId);
         Popup.close();
-      })
+      }),
+      'click .js-restore-list': function() {
+        var listId = this.currentData()._id;
+        Lists.update(listId, {$set: {archived: false}});
+      }
     }];
   }
 }).register('archivesSidebar');

+ 5 - 0
client/config/reactiveTabs.js

@@ -0,0 +1,5 @@
+// XXX Since Blaze doesn't have a clean high component API, component API are
+// also tweaky to use. I guess React would be a solution.
+ReactiveTabs.createInterface({
+  template: 'basicTabs'
+});