Loading core/misc/autocomplete.js +24 −24 Original line number Diff line number Diff line Loading @@ -212,10 +212,9 @@ Drupal.behaviors.autocomplete = { attach(context) { // Act on textfields with the "form-autocomplete" class. const $autocomplete = $( once('autocomplete', 'input.form-autocomplete', context), ); if ($autocomplete.length) { once('autocomplete', 'input.form-autocomplete', context).forEach( (element) => { const $autocomplete = $(element); // Allow options to be overridden per instance. const blacklist = $autocomplete.attr( 'data-autocomplete-first-character-blacklist', Loading @@ -236,7 +235,8 @@ $autocomplete.on('compositionend.autocomplete', () => { autocomplete.options.isComposing = false; }); } }, ); }, detach(context, settings, trigger) { if (trigger === 'unload') { Loading core/modules/system/tests/modules/form_test/src/FormTestAutocompleteForm.php +8 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,14 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#autocomplete_route_name' => 'form_test.autocomplete_1', ], ]; $form['autocomplete_4'] = [ '#type' => 'textfield', '#title' => 'Autocomplete 4', '#autocomplete_route_name' => 'form_test.autocomplete_1', '#attributes' => [ 'data-autocomplete-first-character-blacklist' => '/', ], ]; return $form; } Loading core/tests/Drupal/Nightwatch/Tests/claroAutocompleteTest.js +6 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,12 @@ module.exports = { .drupalLogin({ name: 'user', password: '123' }) .drupalRelativeURL('/form-test/autocomplete') .waitForElementVisible('body', 1000); browser .setValue('[name="autocomplete_4"]', '/') .pause(1000) .waitForElementNotPresent('.is-autocompleting'); // eslint-disable-next-line no-unused-expressions browser.expect.element( '.js-form-item-autocomplete-3 [data-drupal-selector="autocomplete-message"]', Loading core/themes/claro/js/autocomplete.js +11 −7 Original line number Diff line number Diff line Loading @@ -16,14 +16,18 @@ .addClass('hidden'); }; $input.on('autocompletesearch', (event) => { $input.autocomplete({ search(event) { const result = Drupal.autocomplete.options.search(event); if (result) { $(event.target).addClass('is-autocompleting'); $(event.target) .siblings('[data-drupal-selector="autocomplete-message"]') .removeClass('hidden'); }); } $input.autocomplete({ return result; }, response(event) { classRemove($(event.target)); }, Loading Loading
core/misc/autocomplete.js +24 −24 Original line number Diff line number Diff line Loading @@ -212,10 +212,9 @@ Drupal.behaviors.autocomplete = { attach(context) { // Act on textfields with the "form-autocomplete" class. const $autocomplete = $( once('autocomplete', 'input.form-autocomplete', context), ); if ($autocomplete.length) { once('autocomplete', 'input.form-autocomplete', context).forEach( (element) => { const $autocomplete = $(element); // Allow options to be overridden per instance. const blacklist = $autocomplete.attr( 'data-autocomplete-first-character-blacklist', Loading @@ -236,7 +235,8 @@ $autocomplete.on('compositionend.autocomplete', () => { autocomplete.options.isComposing = false; }); } }, ); }, detach(context, settings, trigger) { if (trigger === 'unload') { Loading
core/modules/system/tests/modules/form_test/src/FormTestAutocompleteForm.php +8 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,14 @@ public function buildForm(array $form, FormStateInterface $form_state) { '#autocomplete_route_name' => 'form_test.autocomplete_1', ], ]; $form['autocomplete_4'] = [ '#type' => 'textfield', '#title' => 'Autocomplete 4', '#autocomplete_route_name' => 'form_test.autocomplete_1', '#attributes' => [ 'data-autocomplete-first-character-blacklist' => '/', ], ]; return $form; } Loading
core/tests/Drupal/Nightwatch/Tests/claroAutocompleteTest.js +6 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,12 @@ module.exports = { .drupalLogin({ name: 'user', password: '123' }) .drupalRelativeURL('/form-test/autocomplete') .waitForElementVisible('body', 1000); browser .setValue('[name="autocomplete_4"]', '/') .pause(1000) .waitForElementNotPresent('.is-autocompleting'); // eslint-disable-next-line no-unused-expressions browser.expect.element( '.js-form-item-autocomplete-3 [data-drupal-selector="autocomplete-message"]', Loading
core/themes/claro/js/autocomplete.js +11 −7 Original line number Diff line number Diff line Loading @@ -16,14 +16,18 @@ .addClass('hidden'); }; $input.on('autocompletesearch', (event) => { $input.autocomplete({ search(event) { const result = Drupal.autocomplete.options.search(event); if (result) { $(event.target).addClass('is-autocompleting'); $(event.target) .siblings('[data-drupal-selector="autocomplete-message"]') .removeClass('hidden'); }); } $input.autocomplete({ return result; }, response(event) { classRemove($(event.target)); }, Loading