From 82ef4f1ef7f20720cf685b0adf738b516fa9fdab Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Sat, 16 Jul 2016 08:46:12 +0100 Subject: [PATCH] Fix issue with label select not correctly showing selected values --- app/assets/javascripts/gl_dropdown.js.coffee | 8 +++---- .../javascripts/labels_select.js.coffee | 23 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 951530e03a5..3bc9ac450e3 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -486,7 +486,7 @@ class GitLabDropdown # Toggle the dropdown label if @options.toggleLabel - @updateLabel(selectedObject, el, @) + @updateLabel(selectedObject, el, @, false) else selectedObject else if el.hasClass(INDETERMINATE_CLASS) @@ -515,7 +515,7 @@ class GitLabDropdown # Toggle the dropdown label if @options.toggleLabel - @updateLabel(selectedObject, el, @) + @updateLabel(selectedObject, el, @, true) if value? if !field.length and fieldName @addInput(fieldName, value) @@ -616,8 +616,8 @@ class GitLabDropdown # Scroll the dropdown content up $dropdownContent.scrollTop(listItemTop - dropdownContentTop) - updateLabel: (selected = null, el = null, instance = null) => - $(@el).find(".dropdown-toggle-text").text @options.toggleLabel(selected, el, instance) + updateLabel: (selected = null, el = null, instance = null, added = false) => + $(@el).find(".dropdown-toggle-text").text @options.toggleLabel(selected, el, instance, added) $.fn.glDropdown = (opts) -> return @.each -> diff --git a/app/assets/javascripts/labels_select.js.coffee b/app/assets/javascripts/labels_select.js.coffee index 1a802b81452..ce030a8c07b 100644 --- a/app/assets/javascripts/labels_select.js.coffee +++ b/app/assets/javascripts/labels_select.js.coffee @@ -24,6 +24,7 @@ class @LabelsSelect $newLabelError = $('.js-label-error') $colorPreview = $('.js-dropdown-label-color-preview') $newLabelCreateButton = $('.js-new-label-btn') + selectedLabels = [] $newLabelError.hide() $loading = $block.find('.block-loading').fadeOut() @@ -272,19 +273,17 @@ class @LabelsSelect fields: ['title'] selectable: true filterable: true - toggleLabel: (selected, el) -> - selected_labels = $('.js-label-select').siblings('.dropdown-menu-labels').find('.is-active') + toggleLabel: (selected, el, e, added) -> + if added + selectedLabels.push selected.title + else + index = selectedLabels.indexOf selected.title + selectedLabels.splice index, 1 - if selected and selected.title? - if selected_labels.length > 1 - "#{selected.title} +#{selected_labels.length - 1} more" - else - selected.title - else if not selected and selected_labels.length isnt 0 - if selected_labels.length > 1 - "#{$(selected_labels[0]).text()} +#{selected_labels.length - 1} more" - else if selected_labels.length is 1 - $(selected_labels).text() + if selectedLabels.length > 1 + "#{selectedLabels[0]} +#{selectedLabels.length - 1} more" + else if selectedLabels.length is 1 + selectedLabels[0] else defaultLabel fieldName: $dropdown.data('field-name')