-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathfixed_table_header.js
38 lines (33 loc) · 1.29 KB
/
fixed_table_header.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
(function(Modules) {
"use strict";
Modules.FixedTableHeader = function() {
var that = this;
that.start = function(element) {
// Clone the current table header into a fixed container
// Use .container class for correct width and responsiveness
// Setup a dummy table for correct rendering of cloned <thead>
// Basics derived from http://stackoverflow.com/questions/4709390/
var header = element.find('thead'),
headerOffset = header.offset().top,
fixedHeader = header.clone(),
fixedHeaderContainer = $('\
<div class="fixed-table-header-container">\
<div class="container">\
<table class="table table-bordered">\
</table>\
</div>\
</div>');
fixedHeaderContainer.hide().find('table').append(fixedHeader);
element.prepend(fixedHeaderContainer);
$(window).bind("scroll", checkOffsetAndToggleFixedHeader);
function checkOffsetAndToggleFixedHeader() {
var offset = $(window).scrollTop();
if (offset >= headerOffset && fixedHeaderContainer.is(":hidden")) {
fixedHeaderContainer.show();
} else if (offset < headerOffset) {
fixedHeaderContainer.hide();
}
}
}
};
})(window.GOVUKAdmin.Modules);