2015-08-17 17:00:26 -07:00
/ * *
2018-11-23 12:29:20 +00:00
* DO NOT EDIT THIS FILE .
* See the following change record for more information ,
* https : //www.drupal.org/node/2815083
* @ preserve
* * /
2015-08-17 17:00:26 -07:00
2015-08-27 12:03:05 -07:00
( function ( $ , Drupal , debounce ) {
2015-08-17 17:00:26 -07:00
Drupal . behaviors . tableFilterByText = {
2018-11-23 12:29:20 +00:00
attach : function attach ( context , settings ) {
2015-08-17 17:00:26 -07:00
var $input = $ ( 'input.table-filter-text' ) . once ( 'table-filter-text' ) ;
var $table = $ ( $input . attr ( 'data-table' ) ) ;
2018-11-23 12:29:20 +00:00
var $rowsAndDetails = void 0 ;
var $rows = void 0 ;
var $details = void 0 ;
2015-08-17 17:00:26 -07:00
var searching = false ;
function hidePackageDetails ( index , element ) {
var $packDetails = $ ( element ) ;
2015-08-27 12:03:05 -07:00
var $visibleRows = $packDetails . find ( 'tbody tr:visible' ) ;
2015-08-17 17:00:26 -07:00
$packDetails . toggle ( $visibleRows . length > 0 ) ;
}
function filterModuleList ( e ) {
2015-08-27 12:03:05 -07:00
var query = $ ( e . target ) . val ( ) ;
2018-11-23 12:29:20 +00:00
2015-08-27 12:03:05 -07:00
var re = new RegExp ( '\\b' + query , 'i' ) ;
2015-08-17 17:00:26 -07:00
function showModuleRow ( index , row ) {
var $row = $ ( row ) ;
2015-08-27 12:03:05 -07:00
var $sources = $row . find ( '.table-filter-text-source, .module-name, .module-description' ) ;
var textMatch = $sources . text ( ) . search ( re ) !== - 1 ;
2015-08-17 17:00:26 -07:00
$row . closest ( 'tr' ) . toggle ( textMatch ) ;
}
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
$rowsAndDetails . show ( ) ;
if ( query . length >= 2 ) {
searching = true ;
$rows . each ( showModuleRow ) ;
$details . not ( '[open]' ) . attr ( 'data-drupal-system-state' , 'forced-open' ) ;
$details . attr ( 'open' , true ) . each ( hidePackageDetails ) ;
2015-08-27 12:03:05 -07:00
2018-11-23 12:29:20 +00:00
Drupal . announce ( Drupal . t ( '!modules modules are available in the modified list.' , {
'!modules' : $rowsAndDetails . find ( 'tbody tr:visible' ) . length
} ) ) ;
} else if ( searching ) {
2015-08-17 17:00:26 -07:00
searching = false ;
$rowsAndDetails . show ( ) ;
2018-11-23 12:29:20 +00:00
$details . filter ( '[data-drupal-system-state="forced-open"]' ) . removeAttr ( 'data-drupal-system-state' ) . attr ( 'open' , false ) ;
2015-08-17 17:00:26 -07:00
}
}
2015-08-27 12:03:05 -07:00
function preventEnterKey ( event ) {
if ( event . which === 13 ) {
event . preventDefault ( ) ;
event . stopPropagation ( ) ;
}
}
2015-08-17 17:00:26 -07:00
if ( $table . length ) {
$rowsAndDetails = $table . find ( 'tr, details' ) ;
$rows = $table . find ( 'tbody tr' ) ;
$details = $rowsAndDetails . filter ( '.package-listing' ) ;
2015-08-27 12:03:05 -07:00
$input . on ( {
keyup : debounce ( filterModuleList , 200 ) ,
keydown : preventEnterKey
} ) ;
2015-08-17 17:00:26 -07:00
}
}
} ;
2018-11-23 12:29:20 +00:00
} ) ( jQuery , Drupal , Drupal . debounce ) ;