123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /**
- * DO NOT EDIT THIS FILE.
- * See the following change record for more information,
- * https://www.drupal.org/node/2815083
- * @preserve
- **/
- (function ($, Drupal, window) {
- Drupal.behaviors.tableResponsive = {
- attach: function attach(context, settings) {
- var $tables = $(context).find('table.responsive-enabled').once('tableresponsive');
- if ($tables.length) {
- var il = $tables.length;
- for (var i = 0; i < il; i++) {
- TableResponsive.tables.push(new TableResponsive($tables[i]));
- }
- }
- }
- };
- 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');
- }
- $.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) {
- this.$link.show().text(this.showText);
- }
- if (!pegged && hiddenLength === 0) {
- this.$link.hide().text(this.hideText);
- }
- },
- 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);
- });
- this.$link.text(this.hideText).data('pegged', 1);
- } 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(';'));
- });
- this.$link.text(this.showText).data('pegged', 0);
- $(window).trigger('resize.tableresponsive');
- }
- }
- });
- Drupal.TableResponsive = TableResponsive;
- })(jQuery, Drupal, window);
|