summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/ref_select_dropdown.js
diff options
context:
space:
mode:
authorWinnie Hellmann <winnie@gitlab.com>2017-05-16 10:32:53 +0000
committerPhil Hughes <me@iamphill.com>2017-05-16 10:32:53 +0000
commit2e89eb6a494fa44d254939ea22c20cc557105ee2 (patch)
tree4b3e815c700be99e2ec452c6bc5c98fdd517805a /app/assets/javascripts/ref_select_dropdown.js
parent051aaf8e53e196fb31a6b3f30cf48306251149da (diff)
downloadgitlab-ce-2e89eb6a494fa44d254939ea22c20cc557105ee2.tar.gz
Replace broken autocomplete field for new tags with dropdown
Diffstat (limited to 'app/assets/javascripts/ref_select_dropdown.js')
-rw-r--r--app/assets/javascripts/ref_select_dropdown.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/app/assets/javascripts/ref_select_dropdown.js b/app/assets/javascripts/ref_select_dropdown.js
new file mode 100644
index 00000000000..215cd6fbdfd
--- /dev/null
+++ b/app/assets/javascripts/ref_select_dropdown.js
@@ -0,0 +1,46 @@
+class RefSelectDropdown {
+ constructor($dropdownButton, availableRefs) {
+ $dropdownButton.glDropdown({
+ data: availableRefs,
+ filterable: true,
+ filterByText: true,
+ remote: false,
+ fieldName: $dropdownButton.data('field-name'),
+ filterInput: 'input[type="search"]',
+ selectable: true,
+ isSelectable(branch, $el) {
+ return !$el.hasClass('is-active');
+ },
+ text(branch) {
+ return branch;
+ },
+ id(branch) {
+ return branch;
+ },
+ toggleLabel(branch) {
+ return branch;
+ },
+ });
+
+ const $dropdownContainer = $dropdownButton.closest('.dropdown');
+ const $fieldInput = $(`input[name="${$dropdownButton.data('field-name')}"]`, $dropdownContainer);
+ const $filterInput = $('input[type="search"]', $dropdownContainer);
+
+ $filterInput.on('keyup', (e) => {
+ const keyCode = e.keyCode || e.which;
+ if (keyCode !== 13) return;
+
+ const ref = $filterInput.val().trim();
+ if (ref === '') {
+ return;
+ }
+
+ $fieldInput.val(ref);
+ $('.dropdown-toggle-text', $dropdownButton).text(ref);
+
+ $dropdownContainer.removeClass('open');
+ });
+ }
+}
+
+export default RefSelectDropdown;