Chris@0
|
1 /**
|
Chris@0
|
2 * DO NOT EDIT THIS FILE.
|
Chris@0
|
3 * See the following change record for more information,
|
Chris@0
|
4 * https://www.drupal.org/node/2815083
|
Chris@0
|
5 * @preserve
|
Chris@0
|
6 **/
|
Chris@0
|
7
|
Chris@0
|
8 (function ($, Drupal, window) {
|
Chris@0
|
9 function TableResponsive(table) {
|
Chris@0
|
10 this.table = table;
|
Chris@0
|
11 this.$table = $(table);
|
Chris@0
|
12 this.showText = Drupal.t('Show all columns');
|
Chris@0
|
13 this.hideText = Drupal.t('Hide lower priority columns');
|
Chris@0
|
14
|
Chris@0
|
15 this.$headers = this.$table.find('th');
|
Chris@0
|
16
|
Chris@0
|
17 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'));
|
Chris@0
|
18
|
Chris@0
|
19 this.$table.before($('<div class="tableresponsive-toggle-columns"></div>').append(this.$link));
|
Chris@0
|
20
|
Chris@0
|
21 $(window).on('resize.tableresponsive', $.proxy(this, 'eventhandlerEvaluateColumnVisibility')).trigger('resize.tableresponsive');
|
Chris@0
|
22 }
|
Chris@0
|
23
|
Chris@17
|
24 Drupal.behaviors.tableResponsive = {
|
Chris@17
|
25 attach: function attach(context, settings) {
|
Chris@17
|
26 var $tables = $(context).find('table.responsive-enabled').once('tableresponsive');
|
Chris@17
|
27 if ($tables.length) {
|
Chris@17
|
28 var il = $tables.length;
|
Chris@17
|
29 for (var i = 0; i < il; i++) {
|
Chris@17
|
30 TableResponsive.tables.push(new TableResponsive($tables[i]));
|
Chris@17
|
31 }
|
Chris@17
|
32 }
|
Chris@17
|
33 }
|
Chris@17
|
34 };
|
Chris@17
|
35
|
Chris@0
|
36 $.extend(TableResponsive, {
|
Chris@0
|
37 tables: []
|
Chris@0
|
38 });
|
Chris@0
|
39
|
Chris@0
|
40 $.extend(TableResponsive.prototype, {
|
Chris@0
|
41 eventhandlerEvaluateColumnVisibility: function eventhandlerEvaluateColumnVisibility(e) {
|
Chris@0
|
42 var pegged = parseInt(this.$link.data('pegged'), 10);
|
Chris@0
|
43 var hiddenLength = this.$headers.filter('.priority-medium:hidden, .priority-low:hidden').length;
|
Chris@0
|
44
|
Chris@0
|
45 if (hiddenLength > 0) {
|
Chris@0
|
46 this.$link.show().text(this.showText);
|
Chris@0
|
47 }
|
Chris@0
|
48
|
Chris@0
|
49 if (!pegged && hiddenLength === 0) {
|
Chris@0
|
50 this.$link.hide().text(this.hideText);
|
Chris@0
|
51 }
|
Chris@0
|
52 },
|
Chris@0
|
53 eventhandlerToggleColumns: function eventhandlerToggleColumns(e) {
|
Chris@0
|
54 e.preventDefault();
|
Chris@0
|
55 var self = this;
|
Chris@0
|
56 var $hiddenHeaders = this.$headers.filter('.priority-medium:hidden, .priority-low:hidden');
|
Chris@0
|
57 this.$revealedCells = this.$revealedCells || $();
|
Chris@0
|
58
|
Chris@0
|
59 if ($hiddenHeaders.length > 0) {
|
Chris@0
|
60 $hiddenHeaders.each(function (index, element) {
|
Chris@0
|
61 var $header = $(this);
|
Chris@0
|
62 var position = $header.prevAll('th').length;
|
Chris@0
|
63 self.$table.find('tbody tr').each(function () {
|
Chris@0
|
64 var $cells = $(this).find('td').eq(position);
|
Chris@0
|
65 $cells.show();
|
Chris@0
|
66
|
Chris@0
|
67 self.$revealedCells = $().add(self.$revealedCells).add($cells);
|
Chris@0
|
68 });
|
Chris@0
|
69 $header.show();
|
Chris@0
|
70
|
Chris@0
|
71 self.$revealedCells = $().add(self.$revealedCells).add($header);
|
Chris@0
|
72 });
|
Chris@0
|
73 this.$link.text(this.hideText).data('pegged', 1);
|
Chris@0
|
74 } else {
|
Chris@0
|
75 this.$revealedCells.hide();
|
Chris@0
|
76
|
Chris@0
|
77 this.$revealedCells.each(function (index, element) {
|
Chris@0
|
78 var $cell = $(this);
|
Chris@0
|
79 var properties = $cell.attr('style').split(';');
|
Chris@0
|
80 var newProps = [];
|
Chris@0
|
81
|
Chris@14
|
82 var match = /^display\s*:\s*none$/;
|
Chris@0
|
83 for (var i = 0; i < properties.length; i++) {
|
Chris@0
|
84 var prop = properties[i];
|
Chris@0
|
85 prop.trim();
|
Chris@0
|
86
|
Chris@0
|
87 var isDisplayNone = match.exec(prop);
|
Chris@0
|
88 if (isDisplayNone) {
|
Chris@0
|
89 continue;
|
Chris@0
|
90 }
|
Chris@0
|
91 newProps.push(prop);
|
Chris@0
|
92 }
|
Chris@0
|
93
|
Chris@0
|
94 $cell.attr('style', newProps.join(';'));
|
Chris@0
|
95 });
|
Chris@0
|
96 this.$link.text(this.showText).data('pegged', 0);
|
Chris@0
|
97
|
Chris@0
|
98 $(window).trigger('resize.tableresponsive');
|
Chris@0
|
99 }
|
Chris@0
|
100 }
|
Chris@0
|
101 });
|
Chris@0
|
102
|
Chris@0
|
103 Drupal.TableResponsive = TableResponsive;
|
Chris@0
|
104 })(jQuery, Drupal, window); |