Giter VIP home page Giter VIP logo

lrstickyheader's Introduction

lrStickyHeader

archived Archived Repository
This code is no longer maintained. Feel free to fork it, but use it at your own risks.

make table headers sticky, example for React CRM

stStickeyHeader

live demo

  • (almost)no css to add
  • no dependency
  • does not add any other element to the markup
  • ~ 100 loc

install

bower install lr-sticky-header

npm install lr-sticky-header

dependencies

None

usage

var tableElement = document.getElementById('table');

var stickyTable = lrStickyHeader(tableElement);

style

You'll need your table element and its children to have the property box-sizing set to border-box (it is the default of many css framework such bootstrap

when the header is sticked the class name lr-sticky-header is added to the thead element if you want to add some more style

api

  • setWidth() : if you want to call manually the resize of the column (within a resize event handler for example)
  • clean() ~: to detach the scroll event handler from the window

example of a directive with smart-table

  angular.directive('stStickyHeader', ['$window', function ($window) {
    return {
      require: '^?stTable',
      link: function (scope, element, attr, ctrl) {      
        //used settimeout such that it will support for mulitple smart tables it will wait until it finds element[0].
        //this is optional attributes which can be used for specific height and class{headerHeight: attr.stStickyHeaderTop,tBodyCls: attr.stStickyHeaderTbodyClass } 
        setTimeout(function () {
        var stickyHeader = lrStickyHeader(element[0], {headerHeight: attr.stStickyHeaderTop,tBodyCls: attr.stStickyHeaderTbodyClass });
            scope.$on('$destroy', function () {
            stickyHeader.clean();
            });
        },10);

        scope.$watch(function () {
          return ctrl.tableState();
        }, function () {
          $window.scrollTo(0, lrStickyHeader.treshold);
        }, true)
         
         // The below code is a fix for resize window in all browsers
         angular.element($window).on("resize", function(){
            //stickyHeader.clean();
            angular.element(element[0]).find('thead').removeAttr('style');
            angular.element(element[0]).find('thead').removeClass('lr-sticky-header');
            $window.scrollTo(0, lrStickyHeader.treshold);
              var stickyHeader = lrStickyHeader(element[0], {headerHeight: attr.stStickyHeaderTop,tBodyCls: attr.stStickyHeaderTbodyClass });
         });
      }
    }
  }]);

lrstickyheader's People

Contributors

alexisjanvier avatar lorenzofox3 avatar sturobo avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

umesh-naik

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.