From 841d10cacc36ad592df830e86870caa0c2ef5b17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alicia=20Serrano=20S=C3=A1nchez?= Date: Mon, 13 Nov 2017 09:59:43 +0100 Subject: [PATCH] Adding rtl for fixed header table --- css/defaultTheme.css | 10 ++++++++- jquery.fixedheadertable.js | 44 +++++++++++++++++++++++++++----------- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/css/defaultTheme.css b/css/defaultTheme.css index f473c6c..b43a987 100644 --- a/css/defaultTheme.css +++ b/css/defaultTheme.css @@ -83,7 +83,15 @@ left: 0; position: absolute; } - + + .fht-table-wrapper .fht-fixed-column[data-rtl], + .fht-table-wrapper .fht-fixed-body[data-rtl] { + /* position */ + top: 0; + right: 0; + position: absolute; + } + .fht-table-wrapper .fht-fixed-column { /* position */ z-index: 1; diff --git a/jquery.fixedheadertable.js b/jquery.fixedheadertable.js index f1d533d..6afb534 100644 --- a/jquery.fixedheadertable.js +++ b/jquery.fixedheadertable.js @@ -77,6 +77,7 @@ settings.includePadding = helpers._isPaddingIncludedWithWidth(); settings.scrollbarOffset = helpers._getScrollbarWidth(); settings.themeClassName = settings.themeClass; + settings.directionRtl = $("body").css("direction") === "rtl"; if (settings.width.search && settings.width.search('%') > -1) { widthMinusScrollbar = $self.parent().width() - settings.scrollbarOffset; @@ -102,8 +103,13 @@ if (settings.fixedColumns > 0 && $wrapper.find('.fht-fixed-column').length == 0) { $self.wrap('
'); + + var rtl = ""; + if (settings.directionRtl) { + rtl = "data-rtl"; + } - $('
').prependTo($wrapper); + $('
').prependTo($wrapper); $fixedBody = $wrapper.find('.fht-fixed-body'); } @@ -337,18 +343,32 @@ .css({ 'margin-top': -$self.scrollTop() }); - } - - $thead.find('table') - .css({ - 'margin-left': -this.scrollLeft - }); + } - if (settings.footer || settings.cloneHeadToFoot) { - $tfoot.find('table') - .css({ - 'margin-left': -this.scrollLeft - }); + if (settings.directionRtl) { + $thead.find('table') + .css({ + 'margin-right': -(this.scrollWidth - this.clientWidth - this.scrollLeft) + }); + + if (settings.footer || settings.cloneHeadToFoot) { + $tfoot.find('table') + .css({ + 'margin-right': -(this.scrollWidth - this.clientWidth - this.scrollLeft) + }); + } + } else { + $thead.find('table') + .css({ + 'margin-left': -this.scrollLeft + }); + + if (settings.footer || settings.cloneHeadToFoot) { + $tfoot.find('table') + .css({ + 'margin-left': -this.scrollLeft + }); + } } }); },