Sha256: 9250a496dc94868fd1a80360deb7d3153a1237cf9df455b10421a895d2dfe8e1

Contents?: true

Size: 1.85 KB

Versions: 14

Compression:

Stored size: 1.85 KB

Contents

(function ($) {
  $(document).ready(function() {

    $.fn.pushpin = function (options) {

      var defaults = {
        top: 0,
        bottom: Infinity,
        offset: 0
      }
      options = $.extend(defaults, options);

      $index = 0;
      return this.each(function() {
        var $uniqueId = Materialize.guid(),
            $this = $(this),
            $original_offset = $(this).offset().top;

        function removePinClasses(object) {
          object.removeClass('pin-top');
          object.removeClass('pinned');
          object.removeClass('pin-bottom');
        }

        function updateElements(objects, scrolled) {
          objects.each(function () {
            // Add position fixed (because its between top and bottom)
            if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) {
              removePinClasses($(this));
              $(this).css('top', options.offset);
              $(this).addClass('pinned');
            }

            // Add pin-top (when scrolled position is above top)
            if (scrolled < options.top && !$(this).hasClass('pin-top')) {
              removePinClasses($(this));
              $(this).css('top', 0);
              $(this).addClass('pin-top');
            }

            // Add pin-bottom (when scrolled position is below bottom)
            if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) {
              removePinClasses($(this));
              $(this).addClass('pin-bottom');
              $(this).css('top', options.bottom - $original_offset);
            }
          });
        }

        updateElements($this, $(window).scrollTop());
        $(window).on('scroll.' + $uniqueId, function () {
          var $scrolled = $(window).scrollTop() + options.offset;
          updateElements($this, $scrolled);
        });

      });

    };


  });
}( jQuery ));

Version data entries

14 entries across 14 versions & 3 rubygems

Version Path
materialize-rails-0.97.5.2 vendor/assets/javascripts/materialize/pushpin.js
materialize-rails-0.97.5.custom1 vendor/assets/javascripts/materialize/pushpin.js
materialize-rails-0.97.5.1 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.97.5 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.97.4 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.97.3 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.97.2 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.97.1 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.97.0 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.96.2 app/assets/javascripts/materialize/pushpin.js
dae-material-0.0.1 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.96.1 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.96.0 app/assets/javascripts/materialize/pushpin.js
materialize-sass-0.95.3.4 app/assets/javascripts/materialize/pushpin.js