This commit is contained in:
Andrew Nicols 2023-11-09 08:56:39 +08:00
commit 735c40ca73
No known key found for this signature in database
GPG key ID: 6D1E3157C8CFBF14
11 changed files with 48 additions and 31 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1102,12 +1102,10 @@ define([
return pendingPromise;
};
return {
// Public variables and functions.
/**
* Turn a boring select box into an auto-complete beast.
*
* @method enhance
* @method enhanceField
* @param {string} selector The selector that identifies the select box.
* @param {boolean} tags Whether to allow support for tags (can define new entries).
* @param {string} ajax Name of an AMD module to handle ajax requests. If specified, the AMD
@ -1121,7 +1119,7 @@ define([
* @param {Object} templateOverrides A set of templates to use instead of the standard templates
* @return {Promise}
*/
enhance: async function(selector, tags, ajax, placeholder, caseSensitive, showSuggestions, noSelectionString,
var enhanceField = async function(selector, tags, ajax, placeholder, caseSensitive, showSuggestions, noSelectionString,
closeSuggestionsOnSelect, templateOverrides) {
// Set some default values.
var options = {
@ -1239,8 +1237,8 @@ define([
return $(html);
});
return $.when(renderLayout, renderInput, renderDatalist, renderSelection)
.then(function(layout, input, suggestions, selection) {
return Promise.all([renderLayout, renderInput, renderDatalist, renderSelection])
.then(function([layout, input, suggestions, selection]) {
originalSelect.hide();
var container = originalSelect.parent();
@ -1277,6 +1275,20 @@ define([
M.util.js_complete(pendingKey);
notification.exception(error);
});
};
return {
// Public variables and functions.
enhanceField: enhanceField,
/**
* We need to use jQuery here as some calling code uses .done() and .fail() rather than native .then() and .catch()
*
* @method enhance
* @return {Promise} A jQuery promise
*/
enhance: function() {
return $.when(enhanceField(...arguments));
}
};
});

View file

@ -5,6 +5,8 @@ information provided here is intended especially for developers.
* Now autocomplete suggestions will preserve classes defined in respective original "option" elements
Alongside with that new ".suggestions-heading" class was added to easily generate suggestion headings
* The `core/form-autocomplete` module now exports an `enhanceField` method to return native promise (of
which the previous `enhance` is now a wrapper of, while preserving jQuery promise return)
=== 4.3 ===

View file

@ -746,7 +746,8 @@ class behat_forms extends behat_base {
* @param string $item
*/
public function i_click_on_item_in_the_autocomplete_list($item) {
$xpathtarget = "//ul[@class='form-autocomplete-suggestions']//*[contains(concat('|', string(.), '|'),'|" . $item . "|')]";
$xpathtarget = "//ul[@class='form-autocomplete-suggestions']//*" .
"[contains(concat('|', normalize-space(.), '|'),'|" . $item . "|')]";
$this->execute('behat_general::i_click_on', [$xpathtarget, 'xpath_element']);
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -73,7 +73,8 @@ const initConditionsForm = () => {
// Enhance condition selector.
const reportAddCondition = reportElement.querySelector(reportSelectors.actions.reportAddCondition);
AutoComplete.enhance(reportAddCondition, false, '', getString('selectacondition', 'core_reportbuilder'));
AutoComplete.enhanceField(reportAddCondition, false, '', getString('selectacondition', 'core_reportbuilder'))
.catch(Notification.exception);
// Handle dynamic conditions form.
const conditionFormContainer = reportElement.querySelector(reportSelectors.regions.settingsConditions);

View file

@ -69,7 +69,8 @@ const initFiltersForm = () => {
// Enhance filter selector.
const reportAddFilter = reportElement.querySelector(reportSelectors.actions.reportAddFilter);
AutoComplete.enhance(reportAddFilter, false, '', getString('selectafilter', 'core_reportbuilder'));
AutoComplete.enhanceField(reportAddFilter, false, '', getString('selectafilter', 'core_reportbuilder'))
.catch(Notification.exception);
};
/**