diff options
author | Sam Rose <sam@gitlab.com> | 2017-01-12 12:12:46 -0500 |
---|---|---|
committer | Sam Rose <sam@gitlab.com> | 2017-01-12 16:25:43 -0500 |
commit | f585335370de2f7582c94ddf29175ca9cfbec392 (patch) | |
tree | b2fdd31d8d4bdd2c347e67001b959323cc7872d2 | |
parent | 37c35b116cd1f0ce38d3d41f981a22d523d88a9b (diff) | |
download | gitlab-ce-25312-search-input-cmd-click-issue.tar.gz |
Prevent removing fields from dropdowns on input elements25312-search-input-cmd-click-issue
-rw-r--r-- | app/assets/javascripts/gl_dropdown.js | 14 | ||||
-rw-r--r-- | app/assets/javascripts/search_autocomplete.js.es6 | 8 | ||||
-rw-r--r-- | changelogs/unreleased/25312-search-input-cmd-click-issue.yml | 4 |
3 files changed, 18 insertions, 8 deletions
diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js index bb516b3d2df..4f734f6ff62 100644 --- a/app/assets/javascripts/gl_dropdown.js +++ b/app/assets/javascripts/gl_dropdown.js @@ -653,18 +653,14 @@ isMarking = false; el.removeClass(ACTIVE_CLASS); if (field && field.length) { - if (isInput) { - field.val(''); - } else { - field.remove(); - } + this.clearField(field, isInput); } } else if (el.hasClass(INDETERMINATE_CLASS)) { isMarking = true; el.addClass(ACTIVE_CLASS); el.removeClass(INDETERMINATE_CLASS); if (field && field.length && value == null) { - field.remove(); + this.clearField(field, isInput); } if ((!field || !field.length) && fieldName) { this.addInput(fieldName, value, selectedObject); @@ -678,7 +674,7 @@ } } if (field && field.length && value == null) { - field.remove(); + this.clearField(field, isInput); } // Toggle active class for the tick mark el.addClass(ACTIVE_CLASS); @@ -828,6 +824,10 @@ return $(this.el).find(".dropdown-toggle-text").text(this.options.toggleLabel(selected, el, instance)); }; + GitLabDropdown.prototype.clearField = function(field, isInput) { + return isInput ? field.val('') : field.remove(); + }; + return GitLabDropdown; })(); diff --git a/app/assets/javascripts/search_autocomplete.js.es6 b/app/assets/javascripts/search_autocomplete.js.es6 index cec8856d4e7..46a36e4268e 100644 --- a/app/assets/javascripts/search_autocomplete.js.es6 +++ b/app/assets/javascripts/search_autocomplete.js.es6 @@ -70,12 +70,18 @@ search: { fields: ['text'] }, + id: this.getSearchText, + fieldName: this.searchInput.name || 'search', data: this.getData.bind(this), selectable: true, clicked: this.onClick.bind(this) }); } + getSearchText(selectedObject, el) { + return selectedObject.id ? selectedObject.text : ''; + } + getData(term, callback) { var _this, contents, jqXHR; _this = this; @@ -365,7 +371,7 @@ onClick(item, $el, e) { if (location.pathname.indexOf(item.url) !== -1) { - e.preventDefault(); + if (!e.metaKey) e.preventDefault(); if (!this.badgePresent) { if (item.category === 'Projects') { this.projectInputEl.val(item.id); diff --git a/changelogs/unreleased/25312-search-input-cmd-click-issue.yml b/changelogs/unreleased/25312-search-input-cmd-click-issue.yml new file mode 100644 index 00000000000..56e03a48692 --- /dev/null +++ b/changelogs/unreleased/25312-search-input-cmd-click-issue.yml @@ -0,0 +1,4 @@ +--- +title: Prevent removal of input fields if it is the parent dropdown element +merge_request: 8397 +author: |