diff options
Diffstat (limited to 'app/assets')
-rw-r--r-- | app/assets/javascripts/boards/components/board_sidebar.js | 10 | ||||
-rw-r--r-- | app/assets/javascripts/gl_dropdown.js | 6 | ||||
-rw-r--r-- | app/assets/javascripts/labels_select.js | 16 |
3 files changed, 27 insertions, 5 deletions
diff --git a/app/assets/javascripts/boards/components/board_sidebar.js b/app/assets/javascripts/boards/components/board_sidebar.js index 371be109229..a9102743bf9 100644 --- a/app/assets/javascripts/boards/components/board_sidebar.js +++ b/app/assets/javascripts/boards/components/board_sidebar.js @@ -51,6 +51,16 @@ gl.issueBoards.BoardSidebar = Vue.extend({ canRemove() { return !this.list.preset; }, + hasLabels() { + return this.issue.labels && this.issue.labels.length; + }, + labelDropdownTitle() { + return this.hasLabels ? + `${this.issue.labels[0].title} ${this.issue.labels.length - 1}+ more` : 'Label'; + }, + selectedLabels() { + return this.hasLabels ? this.issue.labels.map(l => l.title).join(',') : ''; + } }, watch: { detail: { diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js index cbc05b229cb..c3959ef3e9e 100644 --- a/app/assets/javascripts/gl_dropdown.js +++ b/app/assets/javascripts/gl_dropdown.js @@ -616,7 +616,11 @@ GitLabDropdown = (function() { } if (this.options.opened) { - this.options.opened.call(this, e); + if (this.options.preserveContext) { + this.options.opened(e); + } else { + this.options.opened.call(this, e); + } } return this.dropdown.trigger('shown.gl.dropdown'); diff --git a/app/assets/javascripts/labels_select.js b/app/assets/javascripts/labels_select.js index 37a45d1d1a2..cb851ff6745 100644 --- a/app/assets/javascripts/labels_select.js +++ b/app/assets/javascripts/labels_select.js @@ -39,7 +39,7 @@ export default class LabelsSelect { showNo = $dropdown.data('showNo'); showAny = $dropdown.data('showAny'); showMenuAbove = $dropdown.data('showMenuAbove'); - defaultLabel = $dropdown.data('defaultLabel'); + defaultLabel = $dropdown.data('defaultLabel') || 'Label'; abilityName = $dropdown.data('abilityName'); $selectbox = $dropdown.closest('.selectbox'); $block = $selectbox.closest('.block'); @@ -244,21 +244,21 @@ export default class LabelsSelect { var $dropdownInputField = $dropdownParent.find('.dropdown-input-field'); var isSelected = el !== null ? el.hasClass('is-active') : false; - var { title } = selected; + var title = selected ? selected.title : null; var selectedLabels = this.selected; if ($dropdownInputField.length && $dropdownInputField.val().length) { $dropdownParent.find('.dropdown-input-clear').trigger('click'); } - if (selected.id === 0) { + if (selected && selected.id === 0) { this.selected = []; return 'No Label'; } else if (isSelected) { this.selected.push(title); } - else { + else if (!isSelected && title) { var index = this.selected.indexOf(title); this.selected.splice(index, 1); } @@ -409,6 +409,14 @@ export default class LabelsSelect { } } }, + opened: function(e) { + if ($dropdown.hasClass('js-issue-board-sidebar')) { + const previousSelection = $dropdown.attr('data-selected'); + this.selected = previousSelection ? previousSelection.split(',') : []; + $dropdown.data('glDropdown').updateLabel(); + } + }, + preserveContext: true, }); // Set dropdown data |