From f8b984852ae27f14a5f44e651193f00977737ab1 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Tue, 26 May 2015 23:59:57 +0800 Subject: Bug 1146782: backport bug 1159589 to bmo (migrate autocomplete from yui to jquery) --- extensions/BugModal/web/bug_modal.css | 4 ++ extensions/BugModal/web/bug_modal.js | 73 ++++++++++++++--------------------- 2 files changed, 33 insertions(+), 44 deletions(-) (limited to 'extensions/BugModal/web') diff --git a/extensions/BugModal/web/bug_modal.css b/extensions/BugModal/web/bug_modal.css index 3060d4fd6..e69bcaa2a 100644 --- a/extensions/BugModal/web/bug_modal.css +++ b/extensions/BugModal/web/bug_modal.css @@ -309,6 +309,10 @@ input[type="number"] { float: right; } +#add-cc { + width: 100%; +} + /* actions */ #top-actions { diff --git a/extensions/BugModal/web/bug_modal.js b/extensions/BugModal/web/bug_modal.js index b0b5f5317..66e214ad6 100644 --- a/extensions/BugModal/web/bug_modal.js +++ b/extensions/BugModal/web/bug_modal.js @@ -324,32 +324,24 @@ $(function() { }); // keywords is a multi-value autocomplete - // (this should probably be a simple jquery plugin) keywords = data.keywords; $('#keywords') - .bind('keydown', function(event) { - if (event.keyCode == $.ui.keyCode.TAB && $(this).autocomplete('instance').menu.active) - { - event.preventDefault(); - } - }) - .blur(function() { - $(this).val($(this).val().replace(/,\s*$/, '')); - }) - .autocomplete({ - source: function(request, response) { - response($.ui.autocomplete.filter(keywords, request.term.split(/,\s*/).pop())); - }, - focus: function() { - return false; + .devbridgeAutocomplete({ + lookup: keywords, + tabDisabled: true, + delimiter: /,\s*/, + minChars: 0, + autoSelectFirst: true, + formatResult: function(suggestion, currentValue) { + // disable wrapping of matched substring + return suggestion.value + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); }, - select: function(event, ui) { - var terms = this.value.split(/,\s*/); - terms.pop(); - terms.push(ui.item.value); - terms.push(''); - this.value = terms.join(', '); - return false; + onSelect: function() { + this.focus(); } }); @@ -886,27 +878,20 @@ $(function() { $('#product-search').show(); }); $('#pcs') - .on('autocompleteselect', function(event, ui) { - $('#product-search-error').hide(); - $('.pcs-form').hide(); - $('#product-search-cancel').hide(); - $('#product-search').show(); - if ($('#product').val() != ui.item.product) { - $('#component').data('preselect', ui.item.component); - $('#product').val(ui.item.product).change(); - } - else { - $('#component').val(ui.item.component); - } - $('#product').show(); - }) - .autocomplete('option', 'autoFocus', true) - .keydown(function(event) { - if (event.which == 13) { - event.preventDefault(); - var enterKeyEvent = $.Event("keydown"); - enterKeyEvent.keyCode = $.ui.keyCode.ENTER; - $('#pcs').trigger(enterKeyEvent); + .devbridgeAutocomplete('setOptions', { + onSelect: function(suggestion) { + $('#product-search-error').hide(); + $('.pcs-form').hide(); + $('#product-search-cancel').hide(); + $('#product-search').show(); + if ($('#product').val() != suggestion.data.product) { + $('#component').data('preselect', suggestion.data.component); + $('#product').val(suggestion.data.product).change(); + } + else { + $('#component').val(suggestion.data.component); + } + $('#product').show(); } }); $(document) -- cgit v1.2.3-24-g4f1b