diff -u b/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc --- b/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -809,7 +809,7 @@ return system_modules_confirm_form($visible_files, $form_state['storage']); } - // Filters. + // JS-only table filters. $form['filters'] = array( '#type' => 'container', '#attributes' => array( @@ -817,12 +817,14 @@ ), ); $form['filters']['text'] = array( - '#type' => 'textfield', - '#title' => t('Filter by'), - '#placeholder' => t('Search module name…'), + '#type' => 'search', + '#title' => t('Search module list'), + '#title_display' => 'invisible', + '#size' => 20, + '#placeholder' => t('Search module...'), '#attributes' => array( 'class' => array('table-filter-text'), - 'rel' => '#system-modules', + 'data-table' => '#system-modules', 'autocomplete' => 'off', ), ); diff -u b/core/modules/system/system.base.css b/core/modules/system/system.base.css --- b/core/modules/system/system.base.css +++ b/core/modules/system/system.base.css @@ -209,7 +209,6 @@ .js-show { display: none; } - .js .js-show { display: block; } diff -u b/core/modules/system/system.modules.js b/core/modules/system/system.modules.js --- b/core/modules/system/system.modules.js +++ b/core/modules/system/system.modules.js @@ -65,12 +65,19 @@ }; /** - * Filter the module list based on the text value of the "filter_by" field. + * Filters the module list table by a text input search string. + * + * Additionally accounts for multiple tables being wrapped in "package" details + * elements. + * + * Text search input: input.table-filter-text + * Target table: input.table-filter-text[data-table] + * Source text: .table-filter-text-source */ Drupal.behaviors.tableFilterByText = { attach: function (context, settings) { var $input = $('input.table-filter-text').once('table-filter-text'); - var $table = $($input.attr('rel')); + var $table = $($input.attr('data-table')); var $rowsAndDetails, $labels, $details; function hidePackageDetails(index, element) { @@ -106,7 +113,7 @@ $labels = $table.find('.table-filter-text-source'); $details = $table.find('details'); - // @todo use autofocus attribute when browser support is good enough. + // @todo Use autofocus attribute when possible. $input.focus().on('keyup', filterModuleList); } }