diff --git a/dist/starter.html b/dist/starter.html new file mode 100644 index 00000000..e6313b6a --- /dev/null +++ b/dist/starter.html @@ -0,0 +1,514 @@ + + + + tablefilter v0.0.11 - Starter + + +

tablefilter v0.0.11

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
countryisocodeyearPOPXRATPPPcgdpccci
BeninBEN19985950.33589.9517822190.951178.4690.987.55
BeninBEN19996109.53615.6990967200.191174.9092.617.86
BeninBEN20006272.00711.9763184200.611224.7492.278.25
Burkina FasoBFA19949755.03555.2047119125.76838.7679.816.57
Burkina FasoBFA19959988.00499.148407136.65860.8980.419.29
Burkina FasoBFA199610225.00511.5523987144.18881.1180.4012.12
Burkina FasoBFA199710473.53583.6693726141.78899.0176.9414.94
RussiaRUS1998146899.019.7050828932.647086.3967.739.20
RussiaRUS1999146308.9924.61993984.038074.7057.358.81
RussiaRUS2000145555.0128.129169464.859995.9154.748.79
RwandaRWA19946230.00194.51750.39529.48132.164.48
RwandaRWA19956400.00262.197509870.67746.3492.773.08
RwandaRWA19966727.00306.820007377.90823.2589.713.21
RwandaRWA19977895.18301.529785284.13847.7991.443.72
RwandaRWA19988105.00312.314086985.32914.2289.344.22
El SalvadorSLV19955669.008.7545833593.544143.5989.3110.35
El SalvadorSLV19965798.008.7550001143.694235.7988.777.79
El SalvadorSLV19975911.008.7562503813.744408.4187.057.90
Slovak RepublicSVK20005401.0046.035213.0212618.5352.2224.78
SloveniaSVN19941988.90128.808593879.9711662.1253.2119.87
SloveniaSVN19951990.00118.518501389.0312574.9654.4623.11
SloveniaSVN19961991.00135.364303697.2713151.5154.3223.23
SloveniaSVN19971985.96159.6882935103.9614143.0253.2424.14
SloveniaSVN19981982.60166.134201108.9315067.3452.8225.35
ZambiaZMB19948740.72669.3706055307.48834.1975.439.86
ZambiaZMB19958980.00864.1192017402.40829.3776.5510.31
ZambiaZMB19969214.401207.900024515.01838.0578.7410.99
ZambiaZMB19979443.211314.498047596.97851.4777.5912.15
ZambiaZMB19989665.711862.06897744.91800.6985.1213.75
ZambiaZMB19999881.212388.019043941.87765.2491.8215.30
ZambiaZMB200010089.003110.8439941157.63840.9786.3315.38
ZimbabweZWE199410775.358.1515388492.012586.8460.1018.53
ZimbabweZWE199511011.008.665375712.152603.3766.8915.03
ZimbabweZWE199611242.1610.002349852.642860.2372.0611.32
ZimbabweZWE199711923.5212.111289983.172727.0682.8211.01
ZimbabweZWE199812153.8523.679109574.062799.8577.6610.75
ZimbabweZWE199912388.3238.301200876.122770.4876.8910.73
ZimbabweZWE200012627.0044.417919169.482607.0369.238.62
+ + + + + + +

+
+
+
+
+
+
+
+
+
diff --git a/dist/tablefilter/style/colsVisibility.css b/dist/tablefilter/style/colsVisibility.css
index 3417d8ef..626314a1 100644
--- a/dist/tablefilter/style/colsVisibility.css
+++ b/dist/tablefilter/style/colsVisibility.css
@@ -1,6 +1,6 @@
 /** 
  *	 tablefilter v0.0.11 by Max Guglielmi 
- *	 build date: 2015-11-15T01:59:42.793Z 
+ *	 build date: 2015-11-16T10:31:33.931Z 
  *	 MIT License  
  */ 
 span.colVisSpan{text-align:left;}span.colVisSpan a.colVis{display:inline-block;padding:7px 5px 0;font-size:inherit;font-weight:inherit;vertical-align:top}div.colVisCont{position:relative;background:#fff;-webkit-box-shadow:3px 3px 2px #888;-moz-box-shadow:3px 3px 2px #888;box-shadow:3px 3px 2px #888;position:absolute;display:none;border:1px solid #ccc;height:auto;width:250px;background-color:#fff;margin:35px 0 0 -100px;z-index:10000;padding:10px 10px 10px 10px;text-align:left;font-size:12px;}div.colVisCont:after,div.colVisCont:before{bottom:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.colVisCont:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:10px;margin-left:-10px}div.colVisCont:before{border-color:rgba(255,255,255,0);border-bottom-color:#ccc;border-width:12px;margin-left:-12px}div.colVisCont p{margin:6px auto 6px auto}div.colVisCont a.colVis{display:initial;font-weight:inherit}ul.cols_checklist{padding:0;margin:0;list-style:none;}ul.cols_checklist label{display:block}ul.cols_checklist input{vertical-align:middle;margin:2px 5px 2px 1px}li.cols_checklist_item{padding:4px;margin:0;}li.cols_checklist_item:hover{background-color:#335ea8;color:#fff}.cols_checklist_slc_item{background-color:#335ea8;color:#fff}
\ No newline at end of file
diff --git a/dist/tablefilter/style/filtersVisibility.css b/dist/tablefilter/style/filtersVisibility.css
index 79c768fd..6426904b 100644
--- a/dist/tablefilter/style/filtersVisibility.css
+++ b/dist/tablefilter/style/filtersVisibility.css
@@ -1,6 +1,6 @@
 /** 
  *	 tablefilter v0.0.11 by Max Guglielmi 
- *	 build date: 2015-11-15T01:59:42.793Z 
+ *	 build date: 2015-11-16T10:31:33.931Z 
  *	 MIT License  
  */ 
 span.expClpFlt a.btnExpClpFlt{width:35px;height:35px;display:inline-block;}span.expClpFlt a.btnExpClpFlt:hover{background-color:#f4f4f4}span.expClpFlt img{padding:8px 11px 11px 11px}
\ No newline at end of file
diff --git a/dist/tablefilter/style/tablefilter.css b/dist/tablefilter/style/tablefilter.css
index 455be694..7ac24de6 100644
--- a/dist/tablefilter/style/tablefilter.css
+++ b/dist/tablefilter/style/tablefilter.css
@@ -1,6 +1,6 @@
 /** 
  *	 tablefilter v0.0.11 by Max Guglielmi 
- *	 build date: 2015-11-15T01:59:42.793Z 
+ *	 build date: 2015-11-16T10:31:33.931Z 
  *	 MIT License  
  */ 
 .activeHeader{background-color:#66afe9 !important;color:#fff !important}
diff --git a/dist/tablefilter/style/themes/default/default.css b/dist/tablefilter/style/themes/default/default.css
index f46f0b12..4da88a3f 100644
--- a/dist/tablefilter/style/themes/default/default.css
+++ b/dist/tablefilter/style/themes/default/default.css
@@ -1,6 +1,6 @@
 /** 
  *	 tablefilter v0.0.11 by Max Guglielmi 
- *	 build date: 2015-11-15T01:59:42.793Z 
+ *	 build date: 2015-11-16T10:31:33.931Z 
  *	 MIT License  
  */ 
 table.TF{border-left:1px solid #ccc !important;border-top:none !important;border-right:none !important;border-bottom:none !important;}table.TF th{background:#ebecee url("images/bg_th.jpg") left top repeat-x !important;border-bottom:1px solid #d0d0d0 !important;border-right:1px solid #d0d0d0 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important;color:#333 !important}table.TF td{border-bottom:1px dotted #999 !important;padding:5px !important}.fltrow{background-color:#ebecee !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #666 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #999 !important}input.flt{width:99% !important}.inf{height:$min-height;background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important}input.reset{background:transparent url("images/btn_eraser.gif") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;}.nextPage:hover{background:transparent url("images/btn_over_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important;}.previousPage:hover{background:transparent url("images/btn_over_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;}.firstPage:hover{background:transparent url("images/btn_over_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;}.lastPage:hover{background:transparent url("images/btn_over_last_page.gif") center center no-repeat !important}div.grd_Cont{background-color:#ebecee !important;border:1px solid #ccc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#d5d5d5}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important;}div.grd_headTblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#ebecee url("images/bg_th.jpg") left top repeat-x !important;border-bottom:1px solid #d0d0d0 !important;border-right:1px solid #d0d0d0 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #999 !important}.grd_inf{background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important;border-top:1px solid #d0d0d0 !important}.loader{border:1px solid #999}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#fff}.odd{background-color:#d5d5d5}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}
\ No newline at end of file
diff --git a/dist/tablefilter/style/themes/mytheme/mytheme.css b/dist/tablefilter/style/themes/mytheme/mytheme.css
index 6291728c..07f4da2f 100644
--- a/dist/tablefilter/style/themes/mytheme/mytheme.css
+++ b/dist/tablefilter/style/themes/mytheme/mytheme.css
@@ -1,6 +1,6 @@
 /** 
  *	 tablefilter v0.0.11 by Max Guglielmi 
- *	 build date: 2015-11-15T01:59:42.793Z 
+ *	 build date: 2015-11-16T10:31:33.931Z 
  *	 MIT License  
  */ 
 table.TF{border-left:1px dotted #81963b !important;border-top:none !important;border-right:0 !important;border-bottom:none !important;}table.TF th{background:#39424b url("images/bg_headers.jpg") left top repeat-x !important;border-bottom:0 !important;border-right:1px dotted #d0d0d0 !important;border-left:0 !important;border-top:0 !important;color:#fff !important}table.TF td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b;padding:5px !important}.fltrow{background-color:#81963b !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #687830 !important}input.flt{width:99% !important}.inf{background:#d8d8d8;height:$min-height}input.reset{width:53px;background:transparent url("images/btn_filter.png") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important}div.grd_Cont{background:#81963b url("images/bg_headers.jpg") left top repeat-x !important;border:1px solid #ccc !important;padding:0 1px 1px 1px !important;}div.grd_Cont .even{background-color:#bccd83}div.grd_Cont .odd{background-color:#fff}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important;}div.grd_tblCont table td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b}div.grd_tblCont table th,div.grd_headTblCont table th{background:transparent url("images/bg_headers.jpg") 0 0 repeat-x !important;border-bottom:0 !important;border-right:1px dotted #d0d0d0 !important;border-left:0 !important;border-top:0 !important;padding:0 4px 0 4px !important;color:#fff !important;height:35px !important}div.grd_headTblCont table td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;background-color:#81963b !important;padding:1px 3px 1px 3px !important}.grd_inf{background-color:#d8d8d8;border-top:1px solid #d0d0d0 !important}.loader{border:0 !important;background:#81963b !important}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#bccd83}.odd{background-color:#fff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}
\ No newline at end of file
diff --git a/dist/tablefilter/style/themes/skyblue/skyblue.css b/dist/tablefilter/style/themes/skyblue/skyblue.css
index fcd7ebdf..d5b10e13 100644
--- a/dist/tablefilter/style/themes/skyblue/skyblue.css
+++ b/dist/tablefilter/style/themes/skyblue/skyblue.css
@@ -1,6 +1,6 @@
 /** 
  *	 tablefilter v0.0.11 by Max Guglielmi 
- *	 build date: 2015-11-15T01:59:42.793Z 
+ *	 build date: 2015-11-16T10:31:33.931Z 
  *	 MIT License  
  */ 
 table.TF{padding:0;color:#000;border-right:1px solid #a4bed4;border-top:1px solid #a4bed4;border-left:1px solid #a4bed4;border-bottom:0;}table.TF th{margin:0;color:inherit;background:#d1e5fe url("images/bg_skyblue.gif") 0 0 repeat-x;border-color:#fdfdfd #a4bed4 #a4bed4 #fdfdfd;border-width:1px;border-style:solid}table.TF td{margin:0;padding:5px;color:inherit;border-bottom:1px solid #a4bed4;border-left:0;border-top:0;border-right:0}.fltrow{background-color:#d1e5fe !important;}.fltrow th,.fltrow td{padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #a4bed4 !important}input.flt{width:99% !important}.inf{background-color:#e3efff !important;border:1px solid #a4bed4;height:$min-height;color:#004a6f}div.tot,div.status{border-right:0 !important}.helpBtn:hover{background-color:transparent}input.reset{background:transparent url("images/icn_clear_filters.png") center center no-repeat !important}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.nextPage:hover{background:#ffe4ab url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.previousPage{background:transparent url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.previousPage:hover{background:#ffe4ab url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.firstPage:hover{background:#ffe4ab url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.lastPage:hover{background:#ffe4ab url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.activeHeader{background:#ffe4ab !important;border:1px solid #ffb552 !important;color:inherit !important}div.grd_Cont{background-color:#d9eaed !important;border:1px solid #9cc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#e3efff}div.grd_headTblCont{background-color:#d9eaed !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#d9eaed url("images/bg_skyblue.gif") left top repeat-x;border-bottom:1px solid #a4bed4;border-right:1px solid #a4bed4 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #a4bed4 !important;border-right:0 !important;border-left:0 !important;border-top:0 !important}.grd_inf{background-color:#cce2fe;color:#004a6f;border-top:1px solid #9cc !important;}.grd_inf a{text-decoration:none;font-weight:bold}.loader{background-color:#2d8eef;border:1px solid #cce2fe;border-radius:5px}.even{background-color:#fff}.odd{background-color:#e3efff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.ezActiveRow{background-color:#ffdc61 !important;color:inherit}.ezSelectedRow{background-color:#ffe4ab !important;color:inherit}.ezActiveCell{background-color:#fff !important;color:#000 !important;font-weight:bold}.ezETSelectedCell{background-color:#fff !important;font-weight:bold;color:#000 !important}
\ No newline at end of file
diff --git a/dist/tablefilter/tablefilter.js b/dist/tablefilter/tablefilter.js
index dfaf366e..289f0f7f 100644
--- a/dist/tablefilter/tablefilter.js
+++ b/dist/tablefilter/tablefilter.js
@@ -155,17 +155,17 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	var _modulesGridLayout = __webpack_require__(10);
 	
-	var _modulesLoader = __webpack_require__(11);
+	var _modulesLoader = __webpack_require__(12);
 	
-	var _modulesHighlightKeywords = __webpack_require__(12);
+	var _modulesHighlightKeywords = __webpack_require__(13);
 	
-	var _modulesPopupFilter = __webpack_require__(13);
+	var _modulesPopupFilter = __webpack_require__(14);
 	
-	var _modulesDropdown = __webpack_require__(14);
+	var _modulesDropdown = __webpack_require__(15);
 	
-	var _modulesCheckList = __webpack_require__(16);
+	var _modulesCheckList = __webpack_require__(17);
 	
-	var _modulesRowsCounter = __webpack_require__(17);
+	var _modulesRowsCounter = __webpack_require__(18);
 	
 	var _modulesStatusBar = __webpack_require__(19);
 	
@@ -3780,10 +3780,16 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
 	
+	var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
+	
 	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 	
 	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
 	
+	function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+	
+	var _feature = __webpack_require__(11);
+	
 	var _dom = __webpack_require__(2);
 	
 	var _dom2 = _interopRequireDefault(_dom);
@@ -3796,7 +3802,8 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	var _event2 = _interopRequireDefault(_event);
 	
-	var GridLayout = (function () {
+	var GridLayout = (function (_Feature) {
+	    _inherits(GridLayout, _Feature);
 	
 	    /**
 	     * Grid layout, table with fixed headers
@@ -3806,7 +3813,9 @@ return /******/ (function(modules) { // webpackBootstrap
 	    function GridLayout(tf) {
 	        _classCallCheck(this, GridLayout);
 	
-	        var f = tf.config();
+	        _get(Object.getPrototypeOf(GridLayout.prototype), 'constructor', this).call(this, tf, 'gridLayout');
+	
+	        var f = this.config;
 	
 	        //defines grid width
 	        this.gridWidth = f.grid_width || null;
@@ -3845,8 +3854,6 @@ return /******/ (function(modules) { // webpackBootstrap
 	        this.prfxGridTh = 'tblHeadTh_';
 	
 	        this.sourceTblHtml = tf.tbl.outerHTML;
-	
-	        this.tf = tf;
 	    }
 	
 	    /**
@@ -3859,10 +3866,10 @@ return /******/ (function(modules) { // webpackBootstrap
 	            var _this = this;
 	
 	            var tf = this.tf;
-	            var f = tf.config();
+	            var f = this.config;
 	            var tbl = tf.tbl;
 	
-	            if (!tf.gridLayout) {
+	            if (this.initialized) {
 	                return;
 	            }
 	
@@ -3944,7 +3951,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	            //Headers table
 	            this.headTbl = _dom2['default'].create('table', ['id', this.prfxHeadTbl + tf.id]);
-	            var tH = _dom2['default'].create('tHead'); //IE<7 needs it
+	            var tH = _dom2['default'].create('tHead');
 	
 	            //1st row should be headers row, ids are added if not set
 	            //Those ids are used by the sort feature
@@ -4095,6 +4102,8 @@ return /******/ (function(modules) { // webpackBootstrap
 	            if (tbl.clientWidth !== this.headTbl.clientWidth) {
 	                tbl.style.width = this.headTbl.clientWidth + 'px';
 	            }
+	
+	            this.initialized = true;
 	        }
 	
 	        /**
@@ -4106,7 +4115,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	            var tf = this.tf;
 	            var tbl = tf.tbl;
 	
-	            if (!tf.gridLayout) {
+	            if (!this.initialized) {
 	                return;
 	            }
 	            var t = tbl.parentNode.removeChild(tbl);
@@ -4120,17 +4129,89 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	            tbl.outerHTML = this.sourceTblHtml;
 	            //needed to keep reference of table element
-	            tbl = _dom2['default'].id(tf.id);
+	            this.tf.tbl = _dom2['default'].id(tf.id); // ???
+	
+	            this.initialized = false;
 	        }
 	    }]);
 	
 	    return GridLayout;
-	})();
+	})(_feature.Feature);
 
 	exports.GridLayout = GridLayout;
 
 /***/ },
 /* 11 */
+/***/ function(module, exports) {
+
+	'use strict';
+	
+	Object.defineProperty(exports, '__esModule', {
+	    value: true
+	});
+	
+	var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+	
+	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
+	
+	var NOTIMPLEMENTED = 'Not implemented.';
+	
+	var Feature = (function () {
+	    function Feature(tf, feature) {
+	        _classCallCheck(this, Feature);
+	
+	        this.tf = tf;
+	        this.feature = feature;
+	        this.enabled = tf[feature];
+	        this.config = tf.config();
+	        this.initialized = false;
+	    }
+	
+	    _createClass(Feature, [{
+	        key: 'init',
+	        value: function init() {
+	            throw new Error(NOTIMPLEMENTED);
+	        }
+	    }, {
+	        key: 'reset',
+	        value: function reset() {
+	            if (!this.tf.hasGrid()) {
+	                return;
+	            }
+	            this.enable();
+	            this.init();
+	        }
+	    }, {
+	        key: 'destroy',
+	        value: function destroy() {
+	            throw new Error(NOTIMPLEMENTED);
+	        }
+	    }, {
+	        key: 'enable',
+	        value: function enable() {
+	            this.enabled = true;
+	            // this.tf[this.feature] = this.enabled;
+	        }
+	    }, {
+	        key: 'disable',
+	        value: function disable() {
+	            this.enabled = false;
+	            // this.tf[this.feature] = this.enabled;
+	        }
+	    }, {
+	        key: 'isEnabled',
+	        value: function isEnabled() {
+	            return this.enabled;
+	        }
+	    }]);
+	
+	    return Feature;
+	})();
+
+	exports.Feature = Feature;
+
+/***/ },
+/* 12 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -4236,9 +4317,13 @@ return /******/ (function(modules) { // webpackBootstrap
 	            if (!this.loaderDiv) {
 	                return;
 	            }
-	            var tf = this.tf,
-	                targetEl = !this.loaderTgtId ? tf.gridLayout ? tf.feature('gridLayout').tblCont : tf.tbl.parentNode : _dom2['default'].id(this.loaderTgtId);
-	            targetEl.removeChild(this.loaderDiv);
+	            // var tf = this.tf,
+	            //     targetEl = !this.loaderTgtId ?
+	            //         (tf.gridLayout ?
+	            //             tf.feature('gridLayout').tblCont : tf.tbl.parentNode) :
+	            //         Dom.id(this.loaderTgtId);
+	            // targetEl.removeChild(this.loaderDiv);
+	            this.loaderDiv.parentNode.removeChild(this.loaderDiv);
 	            this.loaderDiv = null;
 	        }
 	    }]);
@@ -4249,7 +4334,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	exports.Loader = Loader;
 
 /***/ },
-/* 12 */
+/* 13 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -4395,7 +4480,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	exports.HighlightKeyword = HighlightKeyword;
 
 /***/ },
-/* 13 */
+/* 14 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* WEBPACK VAR INJECTION */(function(global) {'use strict';
@@ -4662,7 +4747,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
 
 /***/ },
-/* 14 */
+/* 15 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -4689,7 +4774,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	var _string2 = _interopRequireDefault(_string);
 	
-	var _sort = __webpack_require__(15);
+	var _sort = __webpack_require__(16);
 	
 	var _sort2 = _interopRequireDefault(_sort);
 	
@@ -5010,7 +5095,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	exports.Dropdown = Dropdown;
 
 /***/ },
-/* 15 */
+/* 16 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -5035,7 +5120,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	module.exports = exports['default'];
 
 /***/ },
-/* 16 */
+/* 17 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -5062,7 +5147,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	var _string2 = _interopRequireDefault(_string);
 	
-	var _sort = __webpack_require__(15);
+	var _sort = __webpack_require__(16);
 	
 	var _sort2 = _interopRequireDefault(_sort);
 	
@@ -5478,7 +5563,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	exports.CheckList = CheckList;
 
 /***/ },
-/* 17 */
+/* 18 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
@@ -5497,7 +5582,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 	
-	var _feature = __webpack_require__(18);
+	var _feature = __webpack_require__(11);
 	
 	var _dom = __webpack_require__(2);
 	
@@ -5648,76 +5733,6 @@ return /******/ (function(modules) { // webpackBootstrap
 
 	exports.RowsCounter = RowsCounter;
 
-/***/ },
-/* 18 */
-/***/ function(module, exports) {
-
-	'use strict';
-	
-	Object.defineProperty(exports, '__esModule', {
-	    value: true
-	});
-	
-	var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
-	
-	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
-	
-	var NOTIMPLEMENTED = 'Not implemented.';
-	
-	var Feature = (function () {
-	    function Feature(tf, feature) {
-	        _classCallCheck(this, Feature);
-	
-	        this.tf = tf;
-	        this.feature = feature;
-	        this.enabled = tf[feature];
-	        this.config = tf.config();
-	        this.initialized = false;
-	    }
-	
-	    _createClass(Feature, [{
-	        key: 'init',
-	        value: function init() {
-	            throw new Error(NOTIMPLEMENTED);
-	        }
-	    }, {
-	        key: 'reset',
-	        value: function reset() {
-	            if (!this.tf.hasGrid()) {
-	                return;
-	            }
-	            this.enable();
-	            this.init();
-	        }
-	    }, {
-	        key: 'destroy',
-	        value: function destroy() {
-	            throw new Error(NOTIMPLEMENTED);
-	        }
-	    }, {
-	        key: 'enable',
-	        value: function enable() {
-	            this.enabled = true;
-	            this.tf[this.feature] = this.enabled;
-	        }
-	    }, {
-	        key: 'disable',
-	        value: function disable() {
-	            this.enabled = false;
-	            this.tf[this.feature] = this.enabled;
-	        }
-	    }, {
-	        key: 'isEnabled',
-	        value: function isEnabled() {
-	            return this.enabled;
-	        }
-	    }]);
-	
-	    return Feature;
-	})();
-
-	exports.Feature = Feature;
-
 /***/ },
 /* 19 */
 /***/ function(module, exports, __webpack_require__) {
@@ -5890,7 +5905,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 	
-	var _feature = __webpack_require__(18);
+	var _feature = __webpack_require__(11);
 	
 	var _dom = __webpack_require__(2);
 	
@@ -6691,7 +6706,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 	
-	var _feature = __webpack_require__(18);
+	var _feature = __webpack_require__(11);
 	
 	var _dom = __webpack_require__(2);
 	
@@ -6750,7 +6765,6 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	            var tf = this.tf;
 	
-	            // if(!tf.hasGrid() && !tf.isFirstLoad && tf.btnResetEl){
 	            if (this.initialized) {
 	                return;
 	            }
@@ -7010,7 +7024,7 @@ return /******/ (function(modules) { // webpackBootstrap
 	
 	function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
 	
-	var _feature = __webpack_require__(18);
+	var _feature = __webpack_require__(11);
 	
 	var _dom = __webpack_require__(2);
 	
diff --git a/dist/tablefilter/tf-1.js b/dist/tablefilter/tf-1.js
index bd2df1fd..813ffabf 100644
--- a/dist/tablefilter/tf-1.js
+++ b/dist/tablefilter/tf-1.js
@@ -32,34 +32,34 @@ webpackJsonp([1],{
 		"./helpers.js": 8,
 		"./modules/alternateRows": 23,
 		"./modules/alternateRows.js": 23,
-		"./modules/checkList": 16,
-		"./modules/checkList.js": 16,
+		"./modules/checkList": 17,
+		"./modules/checkList.js": 17,
 		"./modules/clearButton": 21,
 		"./modules/clearButton.js": 21,
-		"./modules/dropdown": 14,
-		"./modules/dropdown.js": 14,
-		"./modules/feature": 18,
-		"./modules/feature.js": 18,
+		"./modules/dropdown": 15,
+		"./modules/dropdown.js": 15,
+		"./modules/feature": 11,
+		"./modules/feature.js": 11,
 		"./modules/gridLayout": 10,
 		"./modules/gridLayout.js": 10,
 		"./modules/help": 22,
 		"./modules/help.js": 22,
-		"./modules/highlightKeywords": 12,
-		"./modules/highlightKeywords.js": 12,
-		"./modules/loader": 11,
-		"./modules/loader.js": 11,
+		"./modules/highlightKeywords": 13,
+		"./modules/highlightKeywords.js": 13,
+		"./modules/loader": 12,
+		"./modules/loader.js": 12,
 		"./modules/paging": 20,
 		"./modules/paging.js": 20,
-		"./modules/popupFilter": 13,
-		"./modules/popupFilter.js": 13,
-		"./modules/rowsCounter": 17,
-		"./modules/rowsCounter.js": 17,
+		"./modules/popupFilter": 14,
+		"./modules/popupFilter.js": 14,
+		"./modules/rowsCounter": 18,
+		"./modules/rowsCounter.js": 18,
 		"./modules/statusBar": 19,
 		"./modules/statusBar.js": 19,
 		"./modules/store": 9,
 		"./modules/store.js": 9,
-		"./sort": 15,
-		"./sort.js": 15,
+		"./sort": 16,
+		"./sort.js": 16,
 		"./string": 3,
 		"./string.js": 3,
 		"./types": 5,
diff --git a/src/modules/clearButton.js b/src/modules/clearButton.js
index bc86afbf..6af1d844 100644
--- a/src/modules/clearButton.js
+++ b/src/modules/clearButton.js
@@ -44,7 +44,6 @@ export class ClearButton extends Feature{
     init(){
         var tf = this.tf;
 
-        // if(!tf.hasGrid() && !tf.isFirstLoad && tf.btnResetEl){
         if(this.initialized){
             return;
         }
diff --git a/src/modules/feature.js b/src/modules/feature.js
index 0af92697..016e9090 100644
--- a/src/modules/feature.js
+++ b/src/modules/feature.js
@@ -28,12 +28,12 @@ export class Feature {
 
     enable() {
         this.enabled = true;
-        this.tf[this.feature] = this.enabled;
+        // this.tf[this.feature] = this.enabled;
     }
 
     disable() {
         this.enabled = false;
-        this.tf[this.feature] = this.enabled;
+        // this.tf[this.feature] = this.enabled;
     }
 
     isEnabled() {
diff --git a/src/modules/gridLayout.js b/src/modules/gridLayout.js
index 6f51349a..da079b4c 100644
--- a/src/modules/gridLayout.js
+++ b/src/modules/gridLayout.js
@@ -1,15 +1,18 @@
+import {Feature} from './feature';
 import Dom from '../dom';
 import Types from '../types';
 import Event from '../event';
 
-export class GridLayout{
+export class GridLayout extends Feature{
 
     /**
      * Grid layout, table with fixed headers
      * @param {Object} tf TableFilter instance
      */
-    constructor(tf) {
-        var f = tf.config();
+    constructor(tf){
+        super(tf, 'gridLayout');
+
+        var f = this.config;
 
         //defines grid width
         this.gridWidth = f.grid_width || null;
@@ -50,8 +53,6 @@ export class GridLayout{
         this.prfxGridTh = 'tblHeadTh_';
 
         this.sourceTblHtml = tf.tbl.outerHTML;
-
-        this.tf = tf;
     }
 
     /**
@@ -59,10 +60,10 @@ export class GridLayout{
      */
     init(){
         var tf = this.tf;
-        var f = tf.config();
+        var f = this.config;
         var tbl = tf.tbl;
 
-        if(!tf.gridLayout){
+        if(this.initialized){
             return;
         }
 
@@ -148,7 +149,7 @@ export class GridLayout{
 
         //Headers table
         this.headTbl = Dom.create('table', ['id', this.prfxHeadTbl + tf.id]);
-        var tH = Dom.create('tHead'); //IE<7 needs it
+        var tH = Dom.create('tHead');
 
         //1st row should be headers row, ids are added if not set
         //Those ids are used by the sort feature
@@ -300,6 +301,8 @@ export class GridLayout{
         if(tbl.clientWidth !== this.headTbl.clientWidth){
             tbl.style.width = this.headTbl.clientWidth+'px';
         }
+
+        this.initialized = true;
     }
 
     /**
@@ -309,7 +312,7 @@ export class GridLayout{
         var tf = this.tf;
         var tbl = tf.tbl;
 
-        if(!tf.gridLayout){
+        if(!this.initialized){
             return;
         }
         var t = tbl.parentNode.removeChild(tbl);
@@ -323,6 +326,8 @@ export class GridLayout{
 
         tbl.outerHTML = this.sourceTblHtml;
         //needed to keep reference of table element
-        tbl = Dom.id(tf.id);
+        this.tf.tbl = Dom.id(tf.id); // ???
+
+        this.initialized = false;
     }
-}
\ No newline at end of file
+}
diff --git a/src/modules/loader.js b/src/modules/loader.js
index 86b27900..90e2fe40 100644
--- a/src/modules/loader.js
+++ b/src/modules/loader.js
@@ -81,12 +81,13 @@ export class Loader{
         if(!this.loaderDiv){
             return;
         }
-        var tf = this.tf,
-            targetEl = !this.loaderTgtId ?
-            (tf.gridLayout ?
-                tf.feature('gridLayout').tblCont : tf.tbl.parentNode):
-            Dom.id(this.loaderTgtId);
-        targetEl.removeChild(this.loaderDiv);
+        // var tf = this.tf,
+        //     targetEl = !this.loaderTgtId ?
+        //         (tf.gridLayout ?
+        //             tf.feature('gridLayout').tblCont : tf.tbl.parentNode) :
+        //         Dom.id(this.loaderTgtId);
+        // targetEl.removeChild(this.loaderDiv);
+        this.loaderDiv.parentNode.removeChild(this.loaderDiv);
         this.loaderDiv = null;
     }
 }
diff --git a/test/test-alternate-rows.js b/test/test-alternate-rows.js
index 7277a7a3..58ee380a 100644
--- a/test/test-alternate-rows.js
+++ b/test/test-alternate-rows.js
@@ -141,3 +141,9 @@ test('Grid layout: remove alternating rows', function() {
     deepEqual(tbl.querySelectorAll('tr.odd').length, 0, 'Odd bgs removed');
     deepEqual(tbl.querySelectorAll('tr.even').length, 0, 'Even bg removed');
 });
+
+module('Tear-down');
+test('can destroy TableFilter DOM elements', function() {
+    tf.destroy();
+    deepEqual(tf.hasGrid(), false, 'Filters removed');
+});
diff --git a/test/test-clear-button.js b/test/test-clear-button.js
index e107967e..12a8404c 100644
--- a/test/test-clear-button.js
+++ b/test/test-clear-button.js
@@ -12,11 +12,58 @@ test('Clear button component', function() {
     notEqual(clearButton.btnResetEl, null, 'btnResetEl property');
 });
 
+module('Feature interface');
+test('Properties', function() {
+    deepEqual(
+        clearButton.tf instanceof TableFilter, true, 'TableFilter instance');
+    deepEqual(clearButton.feature, 'btnReset', 'Feature name');
+    deepEqual(clearButton.enabled, true, 'Feature enabled');
+    deepEqual(clearButton.initialized, true, 'Feature enabled');
+    deepEqual(typeof clearButton.config, 'object', 'TF configuration object');
+    deepEqual(typeof clearButton.init, 'function', 'Feature init method');
+    deepEqual(typeof clearButton.destroy, 'function', 'Feature destroy method');
+    deepEqual(typeof clearButton.reset, 'function', 'Feature reset method');
+    deepEqual(typeof clearButton.enable, 'function', 'Feature enable method');
+    deepEqual(typeof clearButton.disable, 'function', 'Feature enable method');
+    deepEqual(
+        typeof clearButton.isEnabled, 'function', 'Feature enable method');
+});
+test('Can destroy', function() {
+    clearButton.destroy();
+    deepEqual(clearButton.enabled, false, 'disabled');
+});
+test('Can reset', function() {
+    clearButton.reset();
+    deepEqual(clearButton.enabled, true, 'enabled');
+});
+test('Can disable', function() {
+    clearButton.disable();
+    deepEqual(clearButton.enabled, false, 'disabled');
+});
+test('Can enable', function() {
+    clearButton.enable();
+    deepEqual(clearButton.enabled, true, 'enabled');
+});
+test('Can init', function() {
+    clearButton.destroy();
+    clearButton.enable();
+    clearButton.init();
+    deepEqual(clearButton.enabled, true, 'enabled');
+});
+test('Can check is enabled', function() {
+    clearButton.isEnabled();
+    deepEqual(clearButton.enabled, true, 'enabled');
+});
+
 module('UI elements');
 test('ClearButton UI elements', function() {
     var container = clearButton.btnResetEl;
     deepEqual(container.nodeName, 'INPUT', 'Clear button container');
-    deepEqual(container.parentNode.id, clearButton.prfxResetSpan+tf.id, 'Container id');
+    deepEqual(
+        container.parentNode.id,
+        clearButton.prfxResetSpan+tf.id,
+        'Container id'
+    );
 });
 
 module('Destroy and re-init');
@@ -28,12 +75,18 @@ test('Remove UI', function() {
 
 test('Re-set UI', function() {
     tf.enableIcons = false;
-    tf.feature('clearButton').btnResetHtml = null;
-    tf.feature('clearButton').btnResetText = 'Clear';
-    tf.feature('clearButton').init();
+    clearButton = tf.feature('clearButton');
+    clearButton.btnResetHtml = null;
+    clearButton.btnResetText = 'Clear';
+    clearButton.init();
 
-    var btnResetEl = tf.feature('clearButton').btnResetEl;
+    var btnResetEl = clearButton.btnResetEl;
     deepEqual(btnResetEl.nodeName, 'A', 'Clear button tag changed');
     deepEqual(btnResetEl.innerText, 'Clear', 'Clear button text');
 });
 
+module('Tear-down');
+test('can destroy TableFilter DOM elements', function() {
+    tf.destroy();
+    deepEqual(tf.hasGrid(), false, 'Filters removed');
+});
diff --git a/test/test-paging.js b/test/test-paging.js
index 8e91f68c..1a2d4ae8 100644
--- a/test/test-paging.js
+++ b/test/test-paging.js
@@ -207,6 +207,10 @@ test('Set results per page', function() {
     paging.changeResultsPerPage();
     deepEqual(paging.pagingLength, 6, 'Expected page length');
     deepEqual(paging.nbPages, 2, 'Expected number of pages');
-
-    tf.destroy();
+});
+
+module('Tear-down');
+test('can destroy TableFilter DOM elements', function() {
+    tf.destroy();
+    deepEqual(tf.hasGrid(), false, 'Filters removed');
 });
diff --git a/test/test-rows-counter.js b/test/test-rows-counter.js
index 6c49b017..267c68ec 100644
--- a/test/test-rows-counter.js
+++ b/test/test-rows-counter.js
@@ -83,3 +83,9 @@ test('RowsCounter component with paging', function() {
     equal(tf.feature('rowsCounter').rowsCounterSpan.innerHTML,
         '1-7 / 7', 'Counter value with paging');
 });
+
+module('Tear-down');
+test('can destroy TableFilter DOM elements', function() {
+    tf.destroy();
+    deepEqual(tf.hasGrid(), false, 'Filters removed');
+});
diff --git a/test/test-sort-grid-layout.js b/test/test-sort-grid-layout.js
index 90affe2a..5d1f90bc 100644
--- a/test/test-sort-grid-layout.js
+++ b/test/test-sort-grid-layout.js
@@ -59,6 +59,7 @@ function startPaging(tf, sort){
         deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
         deepEqual(sort.sorted, false, 'Table not sorted');
         deepEqual(sort.initialized, true, 'Sort initialized');
+        deepEqual(tf.paging, true, 'Table is paged');
     });
 
     module('UI elements');
@@ -71,9 +72,7 @@ function startPaging(tf, sort){
 
     test('Sort behaviour', function() {
         sort.sortByColumnIndex(0);
-
         deepEqual(sort.sorted, true, 'Table column sorted');
-        deepEqual(tf.paging, true, 'Table is paged');
     });
 
     module('Destroy and re-init');
diff --git a/test/test-sort.js b/test/test-sort.js
index e4cbebb3..2e57e24f 100644
--- a/test/test-sort.js
+++ b/test/test-sort.js
@@ -98,6 +98,7 @@ function startPaging(tf, sort){
         deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
         deepEqual(sort.sorted, false, 'Table not sorted');
         deepEqual(sort.initialized, true, 'Sort initialized');
+        deepEqual(tf.paging, true, 'Table is paged');
     });
 
     module('UI elements');
@@ -112,7 +113,6 @@ function startPaging(tf, sort){
         sort.sortByColumnIndex(0);
 
         deepEqual(sort.sorted, true, 'Table column sorted');
-        deepEqual(tf.paging, true, 'Table is paged');
     });
 
     module('Destroy and re-init');