• Jeffrey Posnick's avatar
    PWA-ification, via SWPrecacheWebpackPlugin + manifest.json (#1728) · c7c3a521
    Jeffrey Posnick authored
    * sw-precache-webpack-plugin, SW registration, manifest.json
    
    * Documentation + a few SW tweaks.
    
    * Added an unregister method, too, just in case.
    
    * More info for the READMEs.
    
    * Add minify to SWPrecacheWebpackPlugin config
    
    * Fix SWPrecacheWebpackPlugin typo
    
    * Fix file references in READMEmd
    
    * Add instructions for testing service-worker locally
    
    * Review feedback
    
    * Some additional PWA metadata
    
    * Use sw-precache-webpack-plugin v0.9.1 for node >=4.0.0 support
    
    * Review feedback.
    
    * Add manifest.json context in a comment.
    
    * Fix typo
    
    * Downgrade to sw-precache-webpack-plugin 0.9.1
    
    * Hide changes in README until 1.0
    
    * Hide changes in User Guide until 1.0
    
    * Hide more docs
    c7c3a521
application.js 3.08 KiB
$(document).ready(function(){
  // scroll spy logic
  // ================
  var activeTarget,
      $window = $(window),
      position = {},
      nav = $('body > .topbar li a'),
      targets = nav.map(function () {
        return $(this).attr('href');
      }),
      offsets = $.map(targets, function (id) {
        return $(id).offset().top;
      });
  function setButton(id) {
    nav.parent("li").removeClass('active');
    $(nav[$.inArray(id, targets)]).parent("li").addClass('active');
  function processScroll(e) {
    var scrollTop = $window.scrollTop() + 10, i;
    for (i = offsets.length; i--;) {
      if (activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1])) {
        activeTarget = targets[i];
        setButton(activeTarget);
  nav.click(function () {
    processScroll();
  });
  processScroll();
  $window.scroll(processScroll);
  // Dropdown example for topbar nav
  // ===============================
  $("body").bind("click", function (e) {
    $('a.menu').parent("li").removeClass("open");
  });
  $("a.menu").click(function (e) {
    var $li = $(this).parent("li").toggleClass('open');
    return false;
  });
  // table sort example
  // ==================
  $("#sortTableExample").tablesorter( {sortList: [[1,0]]} );
  // add on logic
  // ============
  $('.add-on :checkbox').click(function() {
    if ($(this).attr('checked')) {
      $(this).parents('.add-on').addClass('active');
    } else {
      $(this).parents('.add-on').removeClass('active');
  });
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
// Disable certain links in docs // ============================= $('ul.tabs a, ul.pills a, .pagination a, .well .btn, .actions .btn, .alert-message .btn, a.close').click(function(e) { e.preventDefault(); }); // Copy code blocks in docs $(".copy-code").focus(function() { var el = this; // push select to event loop for chrome :{o setTimeout(function () { $(el).select(); }, 1); }); // POSITION TWIPSIES // ================= $('.twipsies.well a').each(function () { var type = this.title , $anchor = $(this) , $twipsy = $('.twipsy.' + type) , twipsy = { width: $twipsy.width() + 10 , height: $twipsy.height() + 10 } , anchor = { position: $anchor.position() , width: $anchor.width() , height: $anchor.height() } , offset = { above: { top: anchor.position.top - twipsy.height , left: anchor.position.left + (anchor.width/2) - (twipsy.width/2) } , below: { top: anchor.position.top + anchor.height , left: anchor.position.left + (anchor.width/2) - (twipsy.width/2) } , left: { top: anchor.position.top + (anchor.height/2) - (twipsy.height/2) , left: anchor.position.left - twipsy.width - 5 } , right: { top: anchor.position.top + (anchor.height/2) - (twipsy.height/2) , left: anchor.position.left + anchor.width + 5 } } $twipsy.css(offset[type]) }); });