summaryrefslogtreecommitdiffstats
path: root/client/components
diff options
context:
space:
mode:
Diffstat (limited to 'client/components')
-rw-r--r--client/components/activities/activities.jade6
-rw-r--r--client/components/lists/list.js4
-rw-r--r--client/components/sidebar/sidebarArchives.jade11
-rw-r--r--client/components/sidebar/sidebarArchives.js12
-rw-r--r--client/components/swimlanes/swimlaneHeader.jade23
-rw-r--r--client/components/swimlanes/swimlaneHeader.js25
-rw-r--r--client/components/swimlanes/swimlanes.jade5
-rw-r--r--client/components/swimlanes/swimlanes.styl6
8 files changed, 84 insertions, 8 deletions
diff --git a/client/components/activities/activities.jade b/client/components/activities/activities.jade
index 4d5410d4..2054777a 100644
--- a/client/components/activities/activities.jade
+++ b/client/components/activities/activities.jade
@@ -44,6 +44,9 @@ template(name="boardActivities")
if($eq activityType 'archivedList')
| {{_ 'activity-archived' list.title}}.
+ if($eq activityType 'archivedSwimlane')
+ | {{_ 'activity-archived' swimlane.title}}.
+
if($eq activityType 'createBoard')
| {{_ 'activity-created' boardLabel}}.
@@ -53,6 +56,9 @@ template(name="boardActivities")
if($eq activityType 'createList')
| {{_ 'activity-added' list.title boardLabel}}.
+ if($eq activityType 'createSwimlane')
+ | {{_ 'activity-added' swimlane.title boardLabel}}.
+
if($eq activityType 'removeList')
| {{_ 'activity-removed' title boardLabel}}.
diff --git a/client/components/lists/list.js b/client/components/lists/list.js
index ce18ce14..e922a3fd 100644
--- a/client/components/lists/list.js
+++ b/client/components/lists/list.js
@@ -18,9 +18,7 @@ BlazeComponent.extendComponent({
// callback, we basically solve all issues related to reactive updates. A
// comment below provides further details.
onRendered() {
- let boardComponent = this.parentComponent().parentComponent();
- if (!boardComponent)
- boardComponent = this.parentComponent();
+ const boardComponent = this.parentComponent().parentComponent();
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
const $cards = this.$('.js-minicards');
$cards.sortable({
diff --git a/client/components/sidebar/sidebarArchives.jade b/client/components/sidebar/sidebarArchives.jade
index aa14fc30..ee6cac01 100644
--- a/client/components/sidebar/sidebarArchives.jade
+++ b/client/components/sidebar/sidebarArchives.jade
@@ -25,3 +25,14 @@ template(name="archivesSidebar")
= title
else
li.no-items-message {{_ 'no-archived-lists'}}
+
+ +tabContent(slug="swimlanes")
+ ul.archived-lists
+ each archivedSwimlanes
+ li.archived-lists-item
+ if currentUser.isBoardMember
+ button.js-restore-swimlane
+ i.fa.fa-undo
+ = title
+ else
+ li.no-items-message {{_ 'no-archived-swimlanes'}}
diff --git a/client/components/sidebar/sidebarArchives.js b/client/components/sidebar/sidebarArchives.js
index 2e8754b0..6102bf11 100644
--- a/client/components/sidebar/sidebarArchives.js
+++ b/client/components/sidebar/sidebarArchives.js
@@ -3,6 +3,7 @@ BlazeComponent.extendComponent({
return [
{ name: TAPi18n.__('cards'), slug: 'cards' },
{ name: TAPi18n.__('lists'), slug: 'lists' },
+ { name: TAPi18n.__('swimlanes'), slug: 'swimlanes' },
];
},
@@ -20,6 +21,13 @@ BlazeComponent.extendComponent({
});
},
+ archivedSwimlanes() {
+ return Swimlanes.find({
+ archived: true,
+ boardId: Session.get('currentBoard'),
+ });
+ },
+
cardIsInArchivedList() {
return this.currentData().list().archived;
},
@@ -45,6 +53,10 @@ BlazeComponent.extendComponent({
const list = this.currentData();
list.restore();
},
+ 'click .js-restore-swimlane'() {
+ const swimlane = this.currentData();
+ swimlane.restore();
+ },
}];
},
}).register('archivesSidebar');
diff --git a/client/components/swimlanes/swimlaneHeader.jade b/client/components/swimlanes/swimlaneHeader.jade
new file mode 100644
index 00000000..49193a81
--- /dev/null
+++ b/client/components/swimlanes/swimlaneHeader.jade
@@ -0,0 +1,23 @@
+template(name="swimlaneHeader")
+ .swimlane-header-wrap
+ +inlinedForm
+ +editSwimlaneTitleForm
+ else
+ .swimlane-header(
+ class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
+ = title
+ .swimlane-header-menu
+ unless currentUser.isCommentOnly
+ a.fa.fa-navicon.js-open-swimlane-menu
+
+template(name="editSwimlaneTitleForm")
+ .list-composer
+ input.list-name-input.full-line(type="text" value=title autofocus)
+ .edit-controls.clearfix
+ button.primary.confirm(type="submit") {{_ 'save'}}
+ a.fa.fa-times-thin.js-close-inlined-form
+
+template(name="swimlaneActionPopup")
+ unless currentUser.isCommentOnly
+ ul.pop-over-list
+ li: a.js-close-swimlane {{_ 'archive-swimlane'}}
diff --git a/client/components/swimlanes/swimlaneHeader.js b/client/components/swimlanes/swimlaneHeader.js
new file mode 100644
index 00000000..50635f86
--- /dev/null
+++ b/client/components/swimlanes/swimlaneHeader.js
@@ -0,0 +1,25 @@
+BlazeComponent.extendComponent({
+ editTitle(evt) {
+ evt.preventDefault();
+ const newTitle = this.childComponents('inlinedForm')[0].getValue().trim();
+ const swimlane = this.currentData();
+ if (newTitle) {
+ swimlane.rename(newTitle.trim());
+ }
+ },
+
+ events() {
+ return [{
+ 'click .js-open-swimlane-menu': Popup.open('swimlaneAction'),
+ submit: this.editTitle,
+ }];
+ },
+}).register('swimlaneHeader');
+
+Template.swimlaneActionPopup.events({
+ 'click .js-close-swimlane' (evt) {
+ evt.preventDefault();
+ this.archive();
+ Popup.close();
+ },
+});
diff --git a/client/components/swimlanes/swimlanes.jade b/client/components/swimlanes/swimlanes.jade
index 765f6d49..6fc24d4c 100644
--- a/client/components/swimlanes/swimlanes.jade
+++ b/client/components/swimlanes/swimlanes.jade
@@ -1,8 +1,6 @@
template(name="swimlane")
.swimlane.js-lists
- .swimlane-header-wrap
- .swimlane-header
- = title
+ +swimlaneHeader
if isMiniScreen
if currentList
+list(currentList)
@@ -17,7 +15,6 @@ template(name="swimlane")
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
- +addListForm
+addListAndSwimlaneForm
template(name="listsGroup")
diff --git a/client/components/swimlanes/swimlanes.styl b/client/components/swimlanes/swimlanes.styl
index 48bc495c..fcc5d962 100644
--- a/client/components/swimlanes/swimlanes.styl
+++ b/client/components/swimlanes/swimlanes.styl
@@ -2,7 +2,7 @@
.swimlane-header-wrap
display: flex;
- flex-direction: column;
+ flex-direction: row;
flex: 0 0 50px;
.swimlane-header
@@ -18,3 +18,7 @@
text-overflow: ellipsis;
word-wrap: break-word;
text-align: center;
+
+ .swimlane-header-menu
+ position: absolute
+ padding: 20px 20px