2022-03-17 14:45:47 +01:00
/ * *
* DO NOT EDIT THIS FILE .
* See the following change record for more information ,
* https : //www.drupal.org/node/2815083
* @ preserve
* * /
( function ( $ , Drupal , window ) {
function TableResponsive ( table ) {
this . table = table ;
this . $table = $ ( table ) ;
this . showText = Drupal . t ( 'Show all columns' ) ;
this . hideText = Drupal . t ( 'Hide lower priority columns' ) ;
this . $headers = this . $table . find ( 'th' ) ;
this . $link = $ ( '<button type="button" class="link tableresponsive-toggle"></button>' ) . attr ( 'title' , Drupal . t ( 'Show table cells that were hidden to make the table fit within a small screen.' ) ) . on ( 'click' , $ . proxy ( this , 'eventhandlerToggleColumns' ) ) ;
this . $table . before ( $ ( '<div class="tableresponsive-toggle-columns"></div>' ) . append ( this . $link ) ) ;
$ ( window ) . on ( 'resize.tableresponsive' , $ . proxy ( this , 'eventhandlerEvaluateColumnVisibility' ) ) . trigger ( 'resize.tableresponsive' ) ;
}
Drupal . behaviors . tableResponsive = {
attach : function attach ( context , settings ) {
once ( 'tableresponsive' , 'table.responsive-enabled' , context ) . forEach ( function ( table ) {
TableResponsive . tables . push ( new TableResponsive ( table ) ) ;
} ) ;
}
} ;
$ . extend ( TableResponsive , {
tables : [ ]
} ) ;
$ . extend ( TableResponsive . prototype , {
eventhandlerEvaluateColumnVisibility : function eventhandlerEvaluateColumnVisibility ( e ) {
var pegged = parseInt ( this . $link . data ( 'pegged' ) , 10 ) ;
var hiddenLength = this . $headers . filter ( '.priority-medium:hidden, .priority-low:hidden' ) . length ;
if ( hiddenLength > 0 ) {
2022-07-27 16:43:59 +02:00
this . $link . show ( ) ;
this . $link [ 0 ] . textContent = this . showText ;
2022-03-17 14:45:47 +01:00
}
if ( ! pegged && hiddenLength === 0 ) {
2022-07-27 16:43:59 +02:00
this . $link . hide ( ) ;
this . $link [ 0 ] . textContent = this . hideText ;
2022-03-17 14:45:47 +01:00
}
} ,
eventhandlerToggleColumns : function eventhandlerToggleColumns ( e ) {
e . preventDefault ( ) ;
var self = this ;
var $hiddenHeaders = this . $headers . filter ( '.priority-medium:hidden, .priority-low:hidden' ) ;
this . $revealedCells = this . $revealedCells || $ ( ) ;
if ( $hiddenHeaders . length > 0 ) {
$hiddenHeaders . each ( function ( index , element ) {
var $header = $ ( this ) ;
var position = $header . prevAll ( 'th' ) . length ;
self . $table . find ( 'tbody tr' ) . each ( function ( ) {
var $cells = $ ( this ) . find ( 'td' ) . eq ( position ) ;
$cells . show ( ) ;
self . $revealedCells = $ ( ) . add ( self . $revealedCells ) . add ( $cells ) ;
} ) ;
$header . show ( ) ;
self . $revealedCells = $ ( ) . add ( self . $revealedCells ) . add ( $header ) ;
} ) ;
2022-07-27 16:43:59 +02:00
this . $link [ 0 ] . textContent = this . hideText ;
this . $link . data ( 'pegged' , 1 ) ;
2022-03-17 14:45:47 +01:00
} else {
this . $revealedCells . hide ( ) ;
this . $revealedCells . each ( function ( index , element ) {
var $cell = $ ( this ) ;
var properties = $cell . attr ( 'style' ) . split ( ';' ) ;
var newProps = [ ] ;
var match = /^display\s*:\s*none$/ ;
for ( var i = 0 ; i < properties . length ; i ++ ) {
var prop = properties [ i ] ;
prop . trim ( ) ;
var isDisplayNone = match . exec ( prop ) ;
if ( isDisplayNone ) {
continue ;
}
newProps . push ( prop ) ;
}
$cell . attr ( 'style' , newProps . join ( ';' ) ) ;
} ) ;
2022-07-27 16:43:59 +02:00
this . $link [ 0 ] . textContent = this . showText ;
this . $link . data ( 'pegged' , 0 ) ;
2022-03-17 14:45:47 +01:00
$ ( window ) . trigger ( 'resize.tableresponsive' ) ;
}
}
} ) ;
Drupal . TableResponsive = TableResponsive ;
} ) ( jQuery , Drupal , window ) ;