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