diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js
index 12d212248..66f66c3eb 100644
--- a/client/components/cards/cardDetails.js
+++ b/client/components/cards/cardDetails.js
@@ -658,7 +658,6 @@ Template.cardDetailsActionsPopup.events({
'click .js-export-card': Popup.open('exportCard'),
'click .js-members': Popup.open('cardMembers'),
'click .js-assignees': Popup.open('cardAssignees'),
- 'click .js-labels': Popup.open('cardLabels'),
'click .js-attachments': Popup.open('cardAttachments'),
'click .js-start-voting': Popup.open('cardStartVoting'),
'click .js-start-planning-poker': Popup.open('cardStartPlanningPoker'),
diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade
index 45e48e996..c03b7fb4a 100644
--- a/client/components/cards/minicard.jade
+++ b/client/components/cards/minicard.jade
@@ -12,7 +12,7 @@ template(name="minicard")
.minicard-labels
each labels
unless hiddenMinicardLabelText
- span.card-label(class="card-label-{{color}}" title=name)
+ span.js-card-label.card-label(class="card-label-{{color}}" title=name)
+viewer
= name
if hiddenMinicardLabelText
diff --git a/client/components/cards/minicard.js b/client/components/cards/minicard.js
index 4f8432621..796ce6a6a 100644
--- a/client/components/cards/minicard.js
+++ b/client/components/cards/minicard.js
@@ -49,6 +49,16 @@ BlazeComponent.extendComponent({
return false;
},
+ /** opens the card label popup only if clicked onto a label
+ *
this is necessary to have the data context of the minicard.
+ * if .js-card-label is used at click event, then only the data context of the label itself is available at this.currentData()
+ */
+ cardLabelsPopup(event) {
+ if (this.find('.js-card-label:hover')) {
+ Popup.open("cardLabels")(event, this.currentData());
+ }
+ },
+
events() {
return [
{
@@ -57,8 +67,6 @@ BlazeComponent.extendComponent({
else if (this.data().isLinkedBoard())
Utils.goBoardId(this.data().linkedId);
},
- },
- {
'click .js-toggle-minicard-label-text'() {
if (window.localStorage.getItem('hiddenMinicardLabelText')) {
window.localStorage.removeItem('hiddenMinicardLabelText'); //true
@@ -66,9 +74,8 @@ BlazeComponent.extendComponent({
window.localStorage.setItem('hiddenMinicardLabelText', 'true'); //true
}
},
- },
- {
'click span.badge-icon.fa.fa-sort, click span.badge-text.check-list-sort' : Popup.open("editCardSortOrder"),
+ 'click .minicard-labels' : this.cardLabelsPopup,
}
];
},
diff --git a/client/lib/popup.js b/client/lib/popup.js
index fa9e125bb..1e4dfa68a 100644
--- a/client/lib/popup.js
+++ b/client/lib/popup.js
@@ -30,7 +30,11 @@ window.Popup = new (class {
function clickFromPopup(evt) {
return $(evt.target).closest('.js-pop-over').length !== 0;
}
- return function(evt) {
+ /** opens the popup
+ * @param evt the current event
+ * @param dataContextIfCurrentDataIsUndefined use this dataContext if this.currentData() is undefined
+ */
+ return function(evt, dataContextIfCurrentDataIsUndefined) {
// If a popup is already opened, clicking again on the opener element
// should close it -- and interrupt the current `open` function.
if (self.isOpen()) {
@@ -67,7 +71,7 @@ window.Popup = new (class {
title: self._getTitle(popupName),
depth: self._stack.length,
offset: self._getOffset(openerElement),
- dataContext: (this && this.currentData && this.currentData()) || this,
+ dataContext: (this && this.currentData && this.currentData()) || dataContextIfCurrentDataIsUndefined || this,
});
// If there are no popup currently opened we use the Blaze API to render