MDL-66312 js: Autocomplete promises were inside out

The pending promise should nott be resolved until the changes are
complete.
Previously the resolution of the pendingPromise was triggering the other
changes.
This commit is contained in:
Andrew Nicols
2019-08-16 11:56:25 +08:00
parent d6af305bb9
commit c46b2eaf18
2 changed files with 9 additions and 4 deletions
File diff suppressed because one or more lines are too long
+8 -3
View File
@@ -712,24 +712,29 @@ define(['jquery', 'core/log', 'core/str', 'core/templates', 'core/notification']
window.setTimeout(function() {
// Get the current element with focus.
var focusElement = $(document.activeElement);
var timeoutPromise = $.Deferred();
// Only close the menu if the input hasn't regained focus, and if the element still exists.
// Due to the half a second delay, it is possible that the input element no longer exist
// by the time this code is being executed.
if (focusElement.attr('id') != inputElement.attr('id') && $('#' + state.inputId).length) {
if (options.tags) {
pendingPromise.then(function() {
timeoutPromise.then(function() {
return createItem(options, state, originalSelect);
})
.catch();
}
pendingPromise.then(function() {
timeoutPromise.then(function() {
return closeSuggestions(state);
})
.catch();
}
pendingPromise.resolve();
timeoutPromise.then(function() {
return pendingPromise.resolve();
})
.catch();
timeoutPromise.resolve();
}, 500);
});
if (options.showSuggestions) {